oedipus_lex 2.5.3 → 2.6.0

Sign up to get free protection for your applications and to get access to all the features.
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