1+ # Changelog
2+
3+ All notable changes to this project will be documented in this file.
4+
5+ The format is based on [ Keep a Changelog] ( https://keepachangelog.com/en/1.0.0/ ) ,
6+ and this project adheres to [ Semantic Versioning] ( https://semver.org/spec/v2.0.0.html ) .
7+
18## [ Unreleased]
29
310### Fixed
411
512- fixed ` #referenced_expression ` for ` \g<0> ` (was ` nil ` , is now the ` Root ` exp)
613- fixed ` #reference ` , ` #referenced_expression ` for recursion level backrefs
7- - e.g. ` (a)(b)\k<-1+1> `
8- - ` #referenced_expression ` was ` nil ` , now it is the correct ` Group ` exp
14+ * e.g. ` (a)(b)\k<-1+1> `
15+ * ` #referenced_expression ` was ` nil ` , now it is the correct ` Group ` exp
916- detect and raise for two more syntax errors when parsing String input
10- - quantification of option switches (e.g. ` (?i)+ ` )
11- - invalid references (e.g. ` /\k<1>/ ` )
12- - these are a ` SyntaxError ` in Ruby, so could only be passed as a String
17+ * quantification of option switches (e.g. ` (?i)+ ` )
18+ * invalid references (e.g. ` /\k<1>/ ` )
19+ * these are a ` SyntaxError ` in Ruby, so could only be passed as a String
1320
1421## [ 2.5.0] - 2022-05-27 - [ Janosch Müller] ( mailto:janosch84@gmail.com )
1522
1623### Added
1724
1825- ` Regexp::Expression::Base.construct ` and ` .token_class ` methods
19- - see the [ wiki] ( https://github.com/ammar/regexp_parser/wiki ) for details
26+ * see the [ wiki] ( https://github.com/ammar/regexp_parser/wiki ) for details
2027
2128## [ 2.4.0] - 2022-05-09 - [ Janosch Müller] ( mailto:janosch84@gmail.com )
2229
2330### Fixed
2431
2532- fixed interpretation of ` + ` and ` ? ` after interval quantifiers (` {n,n} ` )
26- - they used to be treated as reluctant or possessive mode indicators
27- - however, Ruby does not support these modes for interval quantifiers
28- - they are now treated as chained quantifiers instead, as Ruby does it
29- - c.f. [ #3 ] ( https://github.com/ammar/regexp_parser/issues/3 )
33+ * they used to be treated as reluctant or possessive mode indicators
34+ * however, Ruby does not support these modes for interval quantifiers
35+ * they are now treated as chained quantifiers instead, as Ruby does it
36+ * c.f. [ #3 ] ( https://github.com/ammar/regexp_parser/issues/3 )
3037- fixed ` Expression::Base#nesting_level ` for some tree rewrite cases
31- - e.g. the alternatives in ` /a|[b]/ ` had an inconsistent nesting_level
38+ * e.g. the alternatives in ` /a|[b]/ ` had an inconsistent nesting_level
3239- fixed ` Scanner ` accepting invalid posix classes, e.g. ` [[:foo:]] `
33- - they raise a ` SyntaxError ` when used in a Regexp, so could only be passed as String
34- - they now raise a ` Regexp::Scanner::ValidationError ` in the ` Scanner `
40+ * they raise a ` SyntaxError ` when used in a Regexp, so could only be passed as String
41+ * they now raise a ` Regexp::Scanner::ValidationError ` in the ` Scanner `
3542
3643### Added
3744
3845- added ` Expression::Base#== ` for (deep) comparison of expressions
3946- added ` Expression::Base#parts `
40- - returns the text elements and subexpressions of an expression
41- - e.g. ` parse(/(a)/)[0].parts # => ["(", #<Literal @text="a"...>, ")"] `
47+ * returns the text elements and subexpressions of an expression
48+ * e.g. ` parse(/(a)/)[0].parts # => ["(", #<Literal @text="a"...>, ")"] `
4249- added ` Expression::Base#te ` (a.k.a. token end index)
43- - ` Expression::Subexpression ` always had ` #te ` , only terminal nodes lacked it so far
50+ * ` Expression::Subexpression ` always had ` #te ` , only terminal nodes lacked it so far
4451- made some ` Expression::Base ` methods available on ` Quantifier ` instances, too
45- - ` #type ` , ` #type? ` , ` #is? ` , ` #one_of? ` , ` #options ` , ` #terminal? `
46- - ` #base_length ` , ` #full_length ` , ` #starts_at ` , ` #te ` , ` #ts ` , ` #offset `
47- - ` #conditional_level ` , ` #level ` , ` #nesting_level ` , ` #set_level `
48- - this allows a more unified handling with ` Expression::Base ` instances
52+ * ` #type ` , ` #type? ` , ` #is? ` , ` #one_of? ` , ` #options ` , ` #terminal? `
53+ * ` #base_length ` , ` #full_length ` , ` #starts_at ` , ` #te ` , ` #ts ` , ` #offset `
54+ * ` #conditional_level ` , ` #level ` , ` #nesting_level ` , ` #set_level `
55+ * this allows a more unified handling with ` Expression::Base ` instances
4956- allowed ` Quantifier#initialize ` to take a token and options Hash like other nodes
5057- added a deprecation warning for initializing Quantifiers with 4+ arguments:
5158
6875### Fixed
6976
7077- removed five inexistent unicode properties from ` Syntax#features `
71- - these were never supported by Ruby or the ` Regexp::Scanner `
72- - thanks to [ Markus Schirp] ( https://github.com/mbj ) for the report
78+ * these were never supported by Ruby or the ` Regexp::Scanner `
79+ * thanks to [ Markus Schirp] ( https://github.com/mbj ) for the report
7380
7481## [ 2.3.0] - 2022-04-08 - [ Janosch Müller] ( mailto:janosch84@gmail.com )
7582
7683### Added
7784
7885- improved parsing performance through ` Syntax ` refactoring
79- - instead of fresh ` Syntax ` instances, pre-loaded constants are now re-used
80- - this approximately doubles the parsing speed for simple regexps
86+ * instead of fresh ` Syntax ` instances, pre-loaded constants are now re-used
87+ * this approximately doubles the parsing speed for simple regexps
8188- added methods to ` Syntax ` classes to show relative feature sets
82- - e.g. ` Regexp::Syntax::V3_2_0.added_features `
89+ * e.g. ` Regexp::Syntax::V3_2_0.added_features `
8390- support for new unicode properties of Ruby 3.2 / Unicode 14.0
8491
8592## [ 2.2.1] - 2022-02-11 - [ Janosch Müller] ( mailto:janosch84@gmail.com )
8693
8794### Fixed
8895
8996- fixed Syntax version of absence groups (` (?~...) ` )
90- - the lexer accepted them for any Ruby version
91- - now they are only recognized for Ruby >= 2.4.1 in which they were introduced
97+ * the lexer accepted them for any Ruby version
98+ * now they are only recognized for Ruby >= 2.4.1 in which they were introduced
9299- reduced gem size by excluding specs from package
93100- removed deprecated ` test_files ` gemspec setting
94101- no longer depend on ` yaml ` /` psych ` (except for Ruby <= 2.4)
95102- no longer depend on ` set `
96- - ` set ` was removed from the stdlib and made a standalone gem as of Ruby 3
97- - this made it a hidden/undeclared dependency of ` regexp_parser `
103+ * ` set ` was removed from the stdlib and made a standalone gem as of Ruby 3
104+ * this made it a hidden/undeclared dependency of ` regexp_parser `
98105
99106## [ 2.2.0] - 2021-12-04 - [ Janosch Müller] ( mailto:janosch84@gmail.com )
100107
332339
333340- Fixed missing quantifier in ` Conditional::Expression ` methods ` #to_s ` , ` #to_re `
334341- ` Conditional::Condition ` no longer lives outside the recursive ` #expressions ` tree
335- - it used to be the only expression stored in a custom ivar, complicating traversal
336- - its setter and getter (` #condition= ` , ` #condition ` ) still work as before
342+ * it used to be the only expression stored in a custom ivar, complicating traversal
343+ * its setter and getter (` #condition= ` , ` #condition ` ) still work as before
337344
338345## [ 1.1.0] - 2018-09-17 - [ Janosch Müller] ( mailto:janosch84@gmail.com )
339346
340347### Added
341348
342349- Added ` Quantifier ` methods ` #greedy? ` , ` #possessive? ` , ` #reluctant? ` /` #lazy? `
343350- Added ` Group::Options#option_changes `
344- - shows the options enabled or disabled by the given options group
345- - as with all other expressions, ` #options ` shows the overall active options
351+ * shows the options enabled or disabled by the given options group
352+ * as with all other expressions, ` #options ` shows the overall active options
346353- Added ` Conditional#reference ` and ` Condition#reference ` , indicating the determinative group
347354- Added ` Subexpression#dig ` , acts like [ ` Array#dig ` ] ( http://ruby-doc.org/core-2.5.0/Array.html#method-i-dig )
348355
@@ -526,7 +533,6 @@ This release includes several breaking changes, mostly to character sets, #map a
526533 * Fixed scanning of zero length comments (PR #12 )
527534 * Fixed missing escape: codepoint_list syntax token (PR #14 )
528535 * Fixed to_s for modified interval quantifiers (PR #17 )
529- - Added a note about MRI implementation quirks to Scanner section
530536
531537## [ 0.3.2] - 2016-01-01 - [ Ammar Ali] ( mailto:ammarabuali@gmail.com )
532538
@@ -552,7 +558,6 @@ This release includes several breaking changes, mostly to character sets, #map a
552558- Renamed Lexer's method to lex, added an alias to the old name (scan)
553559- Use #map instead of #each to run the block in Lexer.lex.
554560- Replaced VERSION.yml file with a constant.
555- - Updated README
556561- Update tokens and scanner with new additions in Unicode 7.0.
557562
558563## [ 0.1.6] - 2014-10-06 - [ Ammar Ali] ( mailto:ammarabuali@gmail.com )
@@ -562,20 +567,11 @@ This release includes several breaking changes, mostly to character sets, #map a
562567- Added syntax files for missing ruby 2.x versions. These do not add
563568 extra syntax support, they just make the gem work with the newer
564569 ruby versions.
565- - Added .travis.yml to project root.
566- - README:
567- - Removed note purporting runtime support for ruby 1.8.6.
568- - Added a section identifying the main unsupported syntax features.
569- - Added sections for Testing and Building
570- - Added badges for gem version, Travis CI, and code climate.
571- - Updated README, fixing broken examples, and converting it from a rdoc file to Github's flavor of Markdown.
572570- Fixed a parser bug where an alternation sequence that contained nested expressions was incorrectly being appended to the parent expression when the nesting was exited. e.g. in /a|(b)c/, c was appended to the root.
573-
574571- Fixed a bug where character types were not being correctly scanned within character sets. e.g. in [ \d] , two tokens were scanned; one for the backslash '\' and one for the 'd'
575572
576573## [ 0.1.5] - 2014-01-14 - [ Ammar Ali] ( mailto:ammarabuali@gmail.com )
577574
578- - Correct ChangeLog.
579575- Added syntax stubs for ruby versions 2.0 and 2.1
580576- Added clone methods for deep copying expressions.
581577- Added optional format argument for to_s on expressions to return the text of the expression with (: full , the default) or without (: base ) its quantifier.
@@ -584,7 +580,6 @@ This release includes several breaking changes, mostly to character sets, #map a
584580- Improved EOF handling in general and especially from sequences like hex and control escapes.
585581- Fixed a bug where named groups with an empty name would return a blank token [ ] .
586582- Fixed a bug where member of a parent set where being added to its last subset.
587- - Various code cleanups in scanner.rl
588583- Fixed a few mutable string bugs by calling dup on the originals.
589584- Made ruby 1.8.6 the base for all 1.8 syntax, and the 1.8 name a pointer to the latest (1.8.7 at this time)
590585- Removed look-behind assertions (positive and negative) from 1.8 syntax
0 commit comments