oedipus_lex 2.5.3 → 2.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 294308d6ea6c939c11f453d7f64236d9aa16030bab382949409fad9e9ea48068
4
- data.tar.gz: 176340a2625364bd9fa473c6ac165d4839e7774d09585e2debf5f8a75104f56f
3
+ metadata.gz: 9a4715d1253bc4e949f28fe08756befae60945975dea73942e4821293e910a21
4
+ data.tar.gz: c54b53dd59c1ebd5f81b0d4e3cfcd81b06520813934f91827a03d1185d4a7971
5
5
  SHA512:
6
- metadata.gz: e973dec5da6a7848ed1934fdb0fe47e24bf5dbdbbbce252565441d085cb7146af2cf6e72d5327c9cea7267d15f8dcef5bf7473149f523e68af5e4e2d5829ed74
7
- data.tar.gz: bd024dcd741969fc4119989bfbbc8f570142cc32b59ec8e66097af24f6531760a61571db228b0f751259d556d95b6fe9ddb5cb872049addb3a41c5bd089af71f
6
+ metadata.gz: 1d611cdec7771203561d7f6c4edaf5afa7a4839eff5efa0b82c22a88a7f68b87a8f6b7bd13891a2dbcdccfed1017ea8d32dc4424a5427be7cf6a9b4444626d1d
7
+ data.tar.gz: 259a6b53e966df95e6138f7a6fd3c80948d151ffca0d50a9c03badb737b30b949800e9bf761cacbbaaf55c20c72469733dbd1e0aff7dca8b819005efcb1aac6f
checksums.yaml.gz.sig CHANGED
Binary file
data/History.rdoc CHANGED
@@ -1,3 +1,14 @@
1
+ === 2.6.0 / 2021-10-27
2
+
3
+ * 2 minor enhancements:
4
+
5
+ * Add frozen_string_literal comment to generated lexers.
6
+ * Allow empty regex. (marcandre)
7
+
8
+ * 1 bug fix:
9
+
10
+ * Switched from peek(1) == "\n" to check(/\n/) to save a ton of strings.
11
+
1
12
  === 2.5.3 / 2021-05-29
2
13
 
3
14
  * 1 bug fix:
data/lib/oedipus_lex.rb CHANGED
@@ -30,7 +30,7 @@ require "oedipus_lex.rex"
30
30
  # books.
31
31
 
32
32
  class OedipusLex
33
- VERSION = "2.5.3" # :nodoc:
33
+ VERSION = "2.6.0" # :nodoc:
34
34
 
35
35
  ##
36
36
  # The class name to generate.
@@ -394,6 +394,7 @@ class OedipusLex
394
394
  # :stopdoc:
395
395
 
396
396
  TEMPLATE = <<-'REX'.gsub(/^ {6}/, '')
397
+ # frozen_string_literal: true
397
398
  <%= encoding %>
398
399
  #--
399
400
  # This file is automatically generated. Do not modify it.
@@ -564,7 +565,7 @@ class OedipusLex
564
565
 
565
566
  until ss.eos? or token do
566
567
  % if option[:lineno] then
567
- if ss.peek(1) == "\n"
568
+ if ss.check(/\n/) then
568
569
  self.lineno += 1
569
570
  % if option[:column] then
570
571
  # line starts 1 position after the newline
data/lib/oedipus_lex.rex CHANGED
@@ -8,7 +8,7 @@ option
8
8
 
9
9
  macro
10
10
  ST /(?:(:\S+|\w+\??))/
11
- RE /(\/(?:\\.|[^\/])+\/[ion]?)/
11
+ RE /(\/(?:\\.|[^\/])*\/[ion]?)/
12
12
  ACT /(\{.*|:?\w+)/
13
13
 
14
14
  rule
@@ -1,7 +1,8 @@
1
+ # frozen_string_literal: true
1
2
  # encoding: UTF-8
2
3
  #--
3
4
  # This file is automatically generated. Do not modify it.
4
- # Generated by: oedipus_lex version 2.5.2.
5
+ # Generated by: oedipus_lex version 2.6.0.
5
6
  # Source: lib/oedipus_lex.rex
6
7
  #++
7
8
 
@@ -14,7 +15,7 @@ class OedipusLex
14
15
 
15
16
  # :stopdoc:
16
17
  ST = /(?:(:\S+|\w+\??))/
17
- RE = /(\/(?:\\.|[^\/])+\/[ion]?)/
18
+ RE = /(\/(?:\\.|[^\/])*\/[ion]?)/
18
19
  ACT = /(\{.*|:?\w+)/
19
20
  # :startdoc:
20
21
  # :stopdoc:
@@ -137,7 +138,7 @@ class OedipusLex
137
138
  token = nil
138
139
 
139
140
  until ss.eos? or token do
140
- if ss.peek(1) == "\n"
141
+ if ss.check(/\n/) then
141
142
  self.lineno += 1
142
143
  # line starts 1 position after the newline
143
144
  self.start_of_current_line_pos = ss.pos + 1
@@ -635,7 +635,8 @@ class TestOedipusLex < Minitest::Test
635
635
 
636
636
  ruby = generate_lexer src
637
637
 
638
- exp = ["# encoding: UTF-8",
638
+ exp = ["# frozen_string_literal: true",
639
+ "# encoding: UTF-8",
639
640
  "#--",
640
641
  "# This file is automatically generated. Do not modify it.",
641
642
  "# Generated by: oedipus_lex version #{OedipusLex::VERSION}.",
@@ -644,7 +645,7 @@ class TestOedipusLex < Minitest::Test
644
645
  "module X",
645
646
  "module Y"]
646
647
 
647
- assert_equal exp, ruby.lines.map(&:chomp).first(8)
648
+ assert_equal exp, ruby.lines.map(&:chomp).first(9)
648
649
  end
649
650
 
650
651
  def test_header_encoding_is_on_top
@@ -665,7 +666,8 @@ class TestOedipusLex < Minitest::Test
665
666
 
666
667
  ruby = generate_lexer src
667
668
 
668
- exp = ["# encoding: UTF-8",
669
+ exp = ["# frozen_string_literal: true",
670
+ "# encoding: UTF-8",
669
671
  "#--",
670
672
  "# This file is automatically generated. Do not modify it.",
671
673
  "# Generated by: oedipus_lex version #{OedipusLex::VERSION}.",
@@ -674,7 +676,7 @@ class TestOedipusLex < Minitest::Test
674
676
  "",
675
677
  "module X"]
676
678
 
677
- assert_equal exp, ruby.lines.map(&:chomp).first(8)
679
+ assert_equal exp, ruby.lines.map(&:chomp).first(9)
678
680
  end
679
681
 
680
682
  def test_read_non_existent_file
@@ -765,6 +767,19 @@ class TestOedipusLex < Minitest::Test
765
767
  assert_match 'ss.scan(/#{X}/)', source
766
768
  end
767
769
 
770
+ def test_parses_empty_regexp
771
+ source = generate_lexer %q{
772
+ class Foo
773
+ rule
774
+ /\w+/ { @state = :ARG; emit :tFUNCTION_CALL }
775
+ :ARG /\(/ { @state = nil; emit :tARG_LIST_BEGIN }
776
+ :ARG // { @state = nil }
777
+ end
778
+ }
779
+
780
+ assert_match 'ss.skip(//)', source
781
+ end
782
+
768
783
  def test_changing_state_during_lexing
769
784
  src = <<-'REX'
770
785
  class Calculator
data.tar.gz.sig CHANGED
Binary file
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: oedipus_lex
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.5.3
4
+ version: 2.6.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ryan Davis
@@ -29,7 +29,7 @@ cert_chain:
29
29
  d/AHw/kcnU6iuMUoJEcGiJd4gVCTn1l3cDcIvxakGslCA88Jubw0Sqatan0TnC9g
30
30
  KToW560QIey7SPfHWduzFJnV
31
31
  -----END CERTIFICATE-----
32
- date: 2021-05-30 00:00:00.000000000 Z
32
+ date: 2021-10-27 00:00:00.000000000 Z
33
33
  dependencies:
34
34
  - !ruby/object:Gem::Dependency
35
35
  name: rdoc
metadata.gz.sig CHANGED
@@ -1,2 +1 @@
1
- 
2
- #��Ir!A��xW�����ȇL[n`�|���j�D�g�-�}� ��'[H�У@_\H��
1
+ ��-�V���F���k���r�Xp�G0�_3�t�6pu�+H_r�t�O�|F=yg��'0�rZ� {�3��U�#͍KJ����T�7�(/��z����?Tp�&4�E�����s��Sb��z����M5������F�k�,= F