-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathChangeLog
402 lines (285 loc) · 13.8 KB
/
ChangeLog
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
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
ChangeLog
=========
current: parce-0.34.0
- transform.Items was renamed to ItemList
- transform.ItemList api is simplified; items() and tokens() use no arguments;
slicing does not create a new ItemList object but just a Python list.
2023-05-28: parce-0.33.0
- small fixes and updates to support Python 3.10 and newer
- added Persian note names to LilyPond parser
- documentation updates
2022-03-14: parce-0.32.0
- added XSLT language definition
- Xml now has tag_action() classmethod to return the action to use for a tag
name, this makes it easier to inherit Xml and add other actions to certain
tag names, like DocBook and XSLT do.
- when adding entries to registry, existing entries can be "inherited"
- added section and author fields to registry entry.
- documentation improvements
2022-02-12: parce-0.31.0
- small API changes in registry module. Removed some global functions, old
generic find() is now a method of Registry, and a fallback registry can be
specified.
- added DocumentInterface to more easily implement a (GUI text editor) document
helper/proxy with the parce Document API.
- added docio module, which adds save and load methods to Document using
language specific IO handling, mainly regarding encoding
- Document.modified is now a property; set_modified() has gone; the property
is in AbstractDocument now.
2022-01-23: parce-0.30.0
- added arabic and bagpipe pitch names to LilyPond words list
- added the default octave to all pitch names in the LilyPond words list
- added util.file_cache()
- added cache_none parameter to util.caching_dict()
- added the Document.url and encoding properties
2021-12-31: parce-0.29.0
- added AbstractDocument.find_block_by_number, block_count and
Block.block_number
- added tree.Range, together with Token.range() and Context.range()
- removed Context.tokens_range, context_trails, context_slices and slices
- removed Context.tokens_bw and util.tokens_bw, added reverse flag to tokens()
- Cursor and Block comparison methods are more robust now
- documentation improvements
2021-12-21: parce-0.28.0
- Cursor.selection() was added
- a new decorator is added to mark Transform methods so that they accept
untransformed contexts that would otherwise be silently ignored
- Worker: when an exception occurs during a tree build or transformation, the
state is set to idle, preventing hangs waiting for a condition.
- basic LilyPond indentation was added (not yet complete)
- an Ini transform was added
- documentation improvements
2021-12-09: parce-0.27.0
- added parce.Document.get_transform(), closes issue #4
- new work module, replacing BackgroundTreeBuilder and treedocument module
- util.Observable now uses a weak reference to methods.
- Cursor move and select methods now return self, so they can be chained
- added transform.Items.peek()
- Transform.find_transform() now uses a configurable naming scheme
- LaTeX parsing improvements
- added CSV language definition and transform
2021-11-25: parce-0.26.0
- improvements in Python Console parsing
- fixes and improvements in LilyPond language parsing
- MutableString factored out of Document
- Document: undo/redo uses original changes, better preserves cursor positions
2021-11-11: parce-0.25.0
- added LilyPond 2.23 syntax
- remove some cruft to make API cleaner and somewhat smaller
- make sure ``text in context`` or ``lexicon in context`` works in Python >=3.9
(issue #1)
- documentation improvements
2021-04-11: parce-0.24.0
- added test module for lang.numbers
- added Nederlands, Francais and Deutsch to lang.numbers
2021-03-08: parce-0.23.0
- added lang.numbers to parse english numbers
- lexer: only advance position in circular target when pushing
- scheme: fixed shorthand complex notations like 0+i, -i etc.
- lilypond: recognize $@ and #@ as Scheme starters
- small improvements and documentation improvements
2021-02-16: parce-0.22.0
- general code cleanup and improvements
- transform: add Items.arg, so a transform can access the lexicon argument
- lilypond language definition:
* fixed whitespace in list separator token
* added \fermata markup command
* unit now has its own action Name.Builtin.Unit
- scheme language definition:
* better number parsing, now supports all features of Scheme/Guile numbers
bin/dec/hex/oct, fraction, +/- inf, nan, complex, polar, exact/inexact
* a helper function parsing scheme number tokens into a python value
* test suite for scheme numbers
2021-02-11: parce-0.21.0
- small change in GroupToken handling: now the last token has a negative index.
This makes it easier to recognize the last group token in a stream.
- adapt some more places where erroneously Python 3.8 syntax was used (asterisk
in return or yield statements without parentheses).
- lilypond language definition:
* in lyric word, highlight tie and space separately
* added many missing commands/words
2021-02-09: parce-0.20.0
- don't (yet) use positional-only arguments, keep python 3.6 support
- simplified LilyPond tokenizing, removed identifier context
2021-02-07: parce-0.19.0
- simplified LilyPond language definition, many improvements
- rule.findmember now creates one dict under the hood which is faster
- fixed deadlock when a rule in a lexicon derived the same lexicon
- Lexicon.arg is now readonly (a Lexicon should be a immutable).
2021-01-31: parce-0.18.0
- fix a treebuilder bug where different derived lexicons compared the same
- here documents in bash are supported, other bash improvements
- improvements to lilypond lexing
- improvements to util.Dispatcher: tread safe and more powerful
- more editor style properties were added to the themes
- added pastel and solarized light and dark themes
- improved terminal theme colors
- small indenting fixes
- added tests/themes.html to view the themes in a browser
- added examples page to the docs, using the examples from the tests/ dir.
- many documentation updates
2021-01-21: parce-0.17.0
- fixed treebuilder.build_tree() function with root lexicon None
- fixed multiple selectors in css prelude not working
- fixed small formatting glitches with multi-theme formatter
- Formatter can now handle _unparsed class, added debug theme
- more colors in default theme
- language examples in documentation are now rendered with parce
- added chapter about syntax highlighting to documentation
- many parce classes now have prettier repr
- added Bash and C languages
2021-01-17: parce-0.16.0
- redesigned theme and formatter module
- HtmlFormatter is now usable and documented
- fixed first ±10 tokens marked as updated even if they didn't change
- added Tcl and DocBook languages
- many documentation updates and improvements
2021-01-12: parce-0.15.0
- documentation switched to Furo theme, looks better on small devices
- the rule item MATCH(n) has changed to MATCH[n], which is more uniform
- the rule item char() has been renamed to chars()
- regex.to_string() now supports named Unicode literals
- fixed transformation of escaped text in Json
- util.Switch can now be used as class instance, as descriptor
- added methods to indent.Indenter to auto_indent, increase or decrease indent
- added Document.append() to append text at the end
2021-01-02: parce-0.14.0
- documentation updates and improvements
- removed Context.source and Token.target (and their Query counterparts)
- removed get_group_* functions from tree.py, added them as methods to
GroupToken
- Cursor.start is now Cursor.pos (in line with Token and Block etc.)
- added document block api
- added Document.token, Cursor.token and Cursor.tokens, etc.
- Context.find_* and Context.tokens_range() are more robust now
- added indent module
- Event.tokens is now Event.lexemes to avoid confusion
2020-06-02: parce-0.13.0
- documentation updates and improvements
- added rule.anyof() and rule.gselect()
- added the @lexicon consume argument, which puts a switching token in the
target context
- added transform.Items.grouped() and .objects()
- TreeBuilder.replace_pos() now gets the index as second arg, not the slice
2020-05-18: parce-0.12.0
- the built-in CSS parser now uses CssTransform to parse a CSS file instead
of using the query module
- added Transformer.connect_treebuilder() to keep a transformed result auto-
matically up-to-date.
- a BackgroundTransformer was added
- the parent attribute of a tree Node now uses a weak reference
- the group attribute of a _GroupToken is not a tuple of _GroupTokens anymore,
it's just an integer value indicating the index of the token in the group.
This is done to annihilate circular references.
2020-05-13: parce-0.11.0
- fix NameError: name 'Escape' is not defined in parce/css.py
- in the bundled languages __all__ is defined and from import * is not used
anymore
- documentation improvements
2020-05-13: parce-0.10.0
- dynamic rule item infrastructure completely rewritten, rule items
are simpler, more powerful and fine-grained
- some modules have been renamed:
action → StandardAction is now in standardaction, ActionItem in ruleitem
stdactions → action
- the rule item helpers are not in the parce namepace, but in parce.rule
- the standard actions are not in the parce namespace, but in parce.action
- parce.document.Document now inherits from Observable and emits events
- fixed: AttributeError: 'str' object has no attribute 'IfArg'
2020-05-04: parce-0.9.0
- initial version of a transform module, that can transform a parce tree
to any structure you want using a Transform class, potentionally using
caching on contexts
- added util.Observable, and use it in TreeBuilder to emit events
- added unicharclass module
- added using(), like in Pygments, it lexes a match with another lexicon
- added JavaScript parser
- added Python console session parser (with prompts)
- added basic GNU Texinfo parser
- added groff/troff parser, even includes LilyPond (as per the groff manual!)
- fixed parsing resume when first part of a match was skipped or not used
(e.g. r'( )(")', bygroup(skip, String) or r' (")', bygroup(String))
2020-04-25: parce-0.8.5
- restructured standard actions, easier to combine actions
- improved default styles, added a template for new CSS styles
- added oldfashioned terminal CSS style (see parce/themes)
- parce is now fully recursion proof, there is no limit on the depth of a tree
- added toml parser
- added tex/latex parser
- added HTML parser, building on the XML parser and supporting CSS
- support \score inside \markup in LilyPond
- added the registry module, and the main find() function
- TreeBuilder.peek(start, tree) now also gets start position
- default_action can now be a dynamic item (TextItem)
- added the main maparg() helper
2020-04-07: parce-0.8.0
- added documentation with examples for bundled languages
- added ini file parser
- added mapmember and mapgroupmember rule items
- tree builder: simpler API, all types now simply use rebuild()
- tree builder: while building new tree, keep old tree intact
- tree builder: now it is possible to get fine-grained updates
- added treebuilder.peek() functionality to get a quick first part of a build
2020-03-14: parce-0.7.0
- bytext() and bymatch() are now generic "replacables", they can be used
to specify an alternative action, target or both in one go. tomatch() was not
needed anymore and is gone.
- much more replacables, all replacable items now inherit from DynamicItem,
(except for Pattern)
- make it possible to create derived lexicons, e.g. to parse here documents
- improved LilyPond and Scheme parser
- added JSON parser
- lexer resurrected, now generates an event stream, which is used by the tree
builder
- documentation improvements, more examples in doc strings
2020-02-16: parce-0.6.0
- Large improvements in theme module, MetaTheme working well
- MetaTheme can render embedded themes with their own window style
- Added formatter module to format/highlight/colorize text using a Theme
- More queries in query module, and a query evaluates to False when no results
- Smart Context.context_slices method that yields slices of nodes per-context
for every range. When processing the nodes from each slice we know they
originated in the same lexicon and language.
- Documentation improvements, better cross-linking
2020-02-07: parce-0.5.0
- Added CSS module to parse and use stylesheets, using CSS lang def
- Added theme module using CSS to assign text formats to standard actions
2020-01-27: parce-0.4.0
- Added testing using pytest
- Added CSS parser
- Improved LilyPond and Scheme parser
- Documentation added and improved
- Running `pytest-3` now also validates all languages
2020-01-22: parce-0.3.0
- Renamed to parce. Better, not a company name and sounds like 'parse'
2020-01-21: livelex-0.3.0
- add query module
- fixed util.merge_adjacent_tokens()
- optimize: when there is only one rule in a lexicon and the pattern does not
use regexp classes or qualifiers, and there are no dynamic actions or
targets that depend on a match object; convert it to a string and use
str.find instead of re.search.
2020-01-15: livelex-0.2.0
- API added to tokenize in background thread
- qtdocument moved to livelex-qt
2020-01-08: livelex-0.1.0
- Moved from pre-alpha to alpha :-)
- Much more documention in code
- Tree construction and partial rebuild very robust now
- Standard actions defined
- add lang/xml.py as a sketch how to implement a language with lexicons
- Full api in livelex.*
- experimental QtDocument, implementing TreeDocument around a QTextDocument
- Improvements in tree navigation and iteration speed
- Nice find/replace methods for AbstractDocument
2020-01-02: livelex-0.0.7
- Lots of new stuff, document, tree structure etc, old lexer gone
- test/validation functions
- Fix missing parentheses around two-character expression, e.g. when creating a
regexp from ['a', 'abc']
2019-12-18: livelex-0.0.6
- Fix AttributeError: module 'livelex.regex' has no attribute 'RegexBuilder'
- improve README
- remove test cruft from language
2019-12-18: livelex-0.0.5
- Initial release