1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
|
Revision history for Perl extension Text::Balanced.
1.00 Mon Aug 11 12:42:56 1997
- original version
1.01 Mon Sep 8 18:09:18 EST 1997
- changed "quotemeta" to "quotemeta $_" to work
around bug in Perl 5.002 and 5.003
1.10 Tue Sep 30 17:23:23 EST 1997
- reworked extract_quotelike to correct handling of some obscure cases
1.21 Sat Oct 4 17:21:54 EST 1997
- synchronised with Parse::RecDescent distribution (version number
will now reflect that package)
1.23 Fri Oct 17 10:26:38 EST 1997
- changed behaviour in scalar and void contexts. Scalar contexts
now return only the extracted string. Void contexts now remove
the extracted string from the first argument (or $_).
1.24
- changed behaviour in scalar contexts. Scalar contexts
now return the extracted string _and_ remove it from the
first argument (or $_).
- changed return values on failure (all contexts return undef
for invalid return fields)
- fixed some lurking bugs with trailing modifier handling
- added :ALL tag to simplify wholesale importing of functions
- fixed serious bug with embedded division operators ("/")
This now also allows the ?...? form of pattern matching!
1.35 Wed Jun 24 09:53:31 1998
- fixed handling of :: quantifiers in extract_variable()
- numerous trivial lexical changes to make xemacs happy
1.36 Tue Jul 14 12:26:04 1998
- Reinstated POD file missing from previous distribution
- Added undocumented fourth parameter to extract_codeblock
so as to correctly handle (?) and (s?) modifiers in
RecDescent grammars.
1.40 Tue Aug 4 13:54:52 1998
- Added (optional) handling of embedded quoted text to
extract_delimited (see revised entry in Balanced.pod)
- Added extract_tagged which extracts text between arbitrary,
optionally nested start and end tags (see new entry in
Balanced.pod).
- Added delimited_pat which builds a pattern which matches a
string delimited by any of the delimiters specified (see new
entry in Balanced.pod).
- Added test.pl
1.41 Mon Aug 10 14:51:50 1998
- Reinstated change to extract_codeblock from 1.36 which were
mysteriously lost in 1.40
1.50 Thu Aug 27 09:20:19 1998
- Improved the structure of the regex generated by
delimited_pat (and used in extract_delimited). It's
considerably more complex, but also more robust and
much faster in the worst case.
- Altered extract_variable to accept whitespace in variables,
e.g. '$ a -> {'b'} -> [2]'
1.51 Sat Feb 13 10:31:55 1999
- Fixed bugs in prefix matching in extract_variable:
* incorrectly used default if '' specified
* now handles $#array correctly
- Fixed bugs in extract_codeblock:
* Now handles !~ properly
* Now handles embedded comments better.
* Now handles "raw" pattern matches better.
- Added support for single strings or qr's as
'reject' and 'ignore' args to extract_tagged()
- Added gen_extract_tagged() to "precompile"
a specific tag extractor for repeated use
(approximately 3 times faster!)
1.52 Thu Mar 4 12:43:38 1999
- Added CSV parsing example to documentation of extract_multiple.
- Fixed a bug with extract_codeblock in "RecDescent" mode
(it would accept "subrule(s?)" and "subrule(?)", but
not "subrule(s)"). Thanks, Jan.
1.66 Fri Jul 2 13:29:22 1999
- Added ability to use quotelike operators in extract_bracketed
- Fixed bug under 5.003 ('foreach my $func' not understood)
- Added escape specification as fourth arg to &extract_delimited
- Fixed handling of &delimited_pat and &extract_delimited
when delimiter is same as escape
- Fixed handling of ->, =>, and >> in &extract_code
when delimiters are "<>"
1.76 Fri Nov 19 06:51:54 1999
- IMPORTANT: Now requires 5.005 or better.
- IMPORTANT: Made extract methods sensitive to the pos()
value of the text they are parsing. In other words,
all extract subroutines now act like patterns of the form
/\G.../gc. See documentation for details.
- IMPORTANT: Changed semantics of extract_multiple, in line
with the above change, and to simplify the semantics to
something vaguely predictable. See documentation for details.
- Added ability to use qr/../'s and raw strings as extractors
in extract_multiple. See documentation.
- Added fourth argument to extract_codeblock to allow
outermost brackets to be separately specified. See
documentation for details.
- Reimplemented internals of all extraction subroutines
for significant speed-ups (between 100% and 2000%
improvement).
- Fixed nasty bug in extract_variable and extract_codeblock
(they were returning prefix as well in scalar context)
- Allowed read-only strings to be used as arguments in
scalar contexts.
- Renamed delimited_pat to gen-delimited pat (in line with
gen_extract_tagged). Old name still works, but is now deprecated.
- Tweaked all extraction subs so they correctly handle
zero-length prefix matches after another zero-length match.
1.77 Mon Nov 22 06:08:23 1999
- Fixed major bug in extract_codeblock (would not
terminate if there was trailing whitespace)
- Improved /.../ pattern parsing within codeblocks
1.81 Wed Sep 13 11:58:49 2000
- Fixed test count in extract_codeblock.t
- Fixed improbable bug with trailing ->'s in extract_variable
- Fixed (HT|X)ML tag extraction in extract_tagged (thanks, Tim)
- Added explanatory note about prefix matching (thanks again, Tim)
- Added handling of globs and sub refs to extract_variable
- Pod tweak (thanks Abigail)
- Allowed right tags to be run-time evaluated, so
extract_tagged($text, '/([a-z]+)', '/end$1') works
as expected.
- Added optional blessing of matches via extract_multiple
- Fixed bug in autogeneration of closing tags in extract_tagged
(Thanks, Coke)
- Fixed bug in interaction between extract_multiple and
gen_extract_tagged (Thanks Anthony)
1.82 Sun Jan 14 16:56:04 2001
- Fixed nit in extract_variable.t
(tested more cases than it promised to)
- Fixed bug extracting prefix in extract_quotelike (Thanks Michael)
- Added handling of Perl 4 package qualifier: $Package'var, etc.
- Added handling of here docs (see documentation for limitations)
- Added reporting of failure position via $@->{pos} (see documentation)
1.83 Mon Jan 15 12:43:12 2001
- Fixed numerous bugs in here doc extraction (many thanks Tim)
1.84 Thu Apr 26 11:58:13 2001
- Fixed bug in certain extractions not matching strings
with embedded newlines (thanks Robin)
1.85 Sun Jun 3 07:47:18 2001
- Fixed bug in extract_variable recognizing method calls that
start with an underscore (thanks Jeff)
1.86 Mon Sep 3 06:57:08 2001
- Revised licence for inclusion in core distribution
- Consolidated POD in .pm file
- renamed tests to let DOS cope with them
1.87 Thu Nov 15 21:25:35 2001
- Made extract_multiple aware of skipped prefixes returned
by subroutine extractors (such as extract_quotelike, etc.)
- Made extract_variable aware of punctuation variables
- Corified tests
1.89 Sun Nov 18 22:49:50 2001
- Fixed extvar.t tests
|