packcr 0.0.6 → 0.0.7

Sign up to get free protection for your applications and to get access to all the features.
Files changed (81) hide show
  1. checksums.yaml +4 -4
  2. data/lib/packcr/cli.rb +18 -16
  3. data/lib/packcr/code_block.rb +0 -1
  4. data/lib/packcr/context.rb +19 -17
  5. data/lib/packcr/generated/context.rb +440 -0
  6. data/lib/packcr/generated/node/action_node.rb +60 -0
  7. data/lib/packcr/generated/node/alternate_node.rb +98 -0
  8. data/lib/packcr/generated/node/capture_node.rb +39 -0
  9. data/lib/packcr/generated/node/charclass_node.rb +372 -0
  10. data/lib/packcr/generated/node/eof_node.rb +20 -0
  11. data/lib/packcr/generated/node/error_node.rb +67 -0
  12. data/lib/packcr/generated/node/expand_node.rb +30 -0
  13. data/lib/packcr/generated/node/predicate_node.rb +140 -0
  14. data/lib/packcr/generated/node/quantity_node.rb +167 -0
  15. data/lib/packcr/generated/node/reference_node.rb +70 -0
  16. data/lib/packcr/generated/node/rule_node.rb +63 -0
  17. data/lib/packcr/generated/node/sequence_node.rb +42 -0
  18. data/lib/packcr/generated/node/string_node.rb +60 -0
  19. data/lib/packcr/generator.rb +2 -1
  20. data/lib/packcr/node/action_node.rb +4 -2
  21. data/lib/packcr/node/alternate_node.rb +3 -1
  22. data/lib/packcr/node/capture_node.rb +3 -1
  23. data/lib/packcr/node/charclass_node.rb +24 -28
  24. data/lib/packcr/node/eof_node.rb +4 -2
  25. data/lib/packcr/node/error_node.rb +3 -1
  26. data/lib/packcr/node/expand_node.rb +8 -5
  27. data/lib/packcr/node/predicate_node.rb +4 -2
  28. data/lib/packcr/node/quantity_node.rb +12 -10
  29. data/lib/packcr/node/reference_node.rb +11 -5
  30. data/lib/packcr/node/root_node.rb +1 -0
  31. data/lib/packcr/node/rule_node.rb +7 -4
  32. data/lib/packcr/node/sequence_node.rb +3 -1
  33. data/lib/packcr/node/string_node.rb +9 -6
  34. data/lib/packcr/node.rb +3 -5
  35. data/lib/packcr/parser.rb +4375 -4056
  36. data/lib/packcr/stream.rb +17 -12
  37. data/lib/packcr/templates/context/source.c.erb +187 -410
  38. data/lib/packcr/templates/context/source.rb.erb +91 -156
  39. data/lib/packcr/templates/node/action.c.erb +3 -3
  40. data/lib/packcr/templates/node/action.rb.erb +2 -2
  41. data/lib/packcr/templates/node/alternate.c.erb +8 -8
  42. data/lib/packcr/templates/node/alternate.rb.erb +4 -5
  43. data/lib/packcr/templates/node/capture.c.erb +6 -6
  44. data/lib/packcr/templates/node/capture.rb.erb +4 -4
  45. data/lib/packcr/templates/node/charclass.c.erb +12 -12
  46. data/lib/packcr/templates/node/charclass.rb.erb +6 -6
  47. data/lib/packcr/templates/node/charclass_any.c.erb +3 -3
  48. data/lib/packcr/templates/node/charclass_any.rb.erb +2 -2
  49. data/lib/packcr/templates/node/charclass_fail.c.erb +1 -1
  50. data/lib/packcr/templates/node/charclass_one.c.erb +8 -8
  51. data/lib/packcr/templates/node/charclass_one.rb.erb +6 -6
  52. data/lib/packcr/templates/node/charclass_utf8.c.erb +7 -7
  53. data/lib/packcr/templates/node/charclass_utf8.rb.erb +3 -3
  54. data/lib/packcr/templates/node/charclass_utf8_reverse.rb.erb +5 -5
  55. data/lib/packcr/templates/node/eof.c.erb +1 -1
  56. data/lib/packcr/templates/node/error.c.erb +7 -7
  57. data/lib/packcr/templates/node/error.rb.erb +2 -2
  58. data/lib/packcr/templates/node/expand.c.erb +5 -5
  59. data/lib/packcr/templates/node/expand.rb.erb +3 -3
  60. data/lib/packcr/templates/node/predicate.c.erb +10 -10
  61. data/lib/packcr/templates/node/predicate.rb.erb +6 -6
  62. data/lib/packcr/templates/node/predicate_neg.c.erb +8 -8
  63. data/lib/packcr/templates/node/predicate_neg.rb.erb +6 -6
  64. data/lib/packcr/templates/node/{quantify_many.c.erb → quantity_many.c.erb} +11 -11
  65. data/lib/packcr/templates/node/{quantify_many.rb.erb → quantity_many.rb.erb} +9 -9
  66. data/lib/packcr/templates/node/{quantify_one.c.erb → quantity_one.c.erb} +7 -7
  67. data/lib/packcr/templates/node/{quantify_one.rb.erb → quantity_one.rb.erb} +4 -4
  68. data/lib/packcr/templates/node/reference.c.erb +14 -2
  69. data/lib/packcr/templates/node/reference.rb.erb +16 -4
  70. data/lib/packcr/templates/node/reference_reverse.rb.erb +16 -4
  71. data/lib/packcr/templates/node/rule.c.erb +9 -2
  72. data/lib/packcr/templates/node/rule.rb.erb +26 -19
  73. data/lib/packcr/templates/node/string_many.c.erb +5 -5
  74. data/lib/packcr/templates/node/string_many.rb.erb +3 -3
  75. data/lib/packcr/templates/node/string_one.c.erb +4 -4
  76. data/lib/packcr/templates/node/string_one.rb.erb +3 -3
  77. data/lib/packcr/util.rb +21 -16
  78. data/lib/packcr/version.rb +1 -1
  79. data/lib/packcr.rb +8 -11
  80. metadata +37 -9
  81. data/lib/packcr/tokenizer.rb +0 -2948
data/lib/packcr/stream.rb CHANGED
@@ -11,13 +11,13 @@ class Packcr
11
11
 
12
12
  def write(s, rewrite_line_directive: false)
13
13
  if rewrite_line_directive && @line_directive_tag && @line.respond_to?(:+)
14
- s.gsub!(@line_directive_tag) { (@line + $`.count("\n") + 1).to_s }
14
+ s.gsub!(@line_directive_tag) { (@line + ::Regexp.last_match.pre_match.count("\n") + 1).to_s }
15
15
  @line_directive_tag = nil
16
16
  end
17
17
  @stream << s
18
- if @line.respond_to?(:+)
19
- @line += s.count("\n")
20
- end
18
+ return unless @line.respond_to?(:+)
19
+
20
+ @line += s.count("\n")
21
21
  end
22
22
 
23
23
  def write_text(s)
@@ -26,6 +26,7 @@ class Packcr
26
26
 
27
27
  def write_line_directive(fname, lineno)
28
28
  return unless @line
29
+
29
30
  if lineno.respond_to?(:+)
30
31
  write("#line #{lineno + 1} \"")
31
32
  else
@@ -47,15 +48,15 @@ class Packcr
47
48
  lineno = code.line
48
49
 
49
50
  ptr.sub!(/\A\n+/) do
50
- lineno += $&.length
51
+ lineno += ::Regexp.last_match(0).length
51
52
  ""
52
53
  end
53
54
  ptr.sub!(/[ \v\f\t\r\n]*\z/, "")
54
55
 
55
56
  min_indent_spaces = nil
56
57
  ptr.gsub!(/^([ \v\f\t]*)([^ \v\f\t\r\n])/) do
57
- spaces = $1
58
- char = $2
58
+ spaces = ::Regexp.last_match(1)
59
+ char = ::Regexp.last_match(2)
59
60
 
60
61
  next char if char == "#"
61
62
 
@@ -71,7 +72,7 @@ class Packcr
71
72
  if min_indent_spaces
72
73
  indent_spaces = " " * indent
73
74
  ptr.gsub!(/^#{min_indent_spaces}( *[^\n#])/) do
74
- "#{indent_spaces}#{$1}"
75
+ "#{indent_spaces}#{::Regexp.last_match(1)}"
75
76
  end
76
77
  end
77
78
 
@@ -79,7 +80,7 @@ class Packcr
79
80
 
80
81
  write_line_directive(fname, lineno)
81
82
  ptr.scan(/^(.+?)[ \v\f\t\r]*$|^\r?\n/) do
82
- write $1 if $1
83
+ write ::Regexp.last_match(1) if ::Regexp.last_match(1)
83
84
  write "\n"
84
85
  end
85
86
  write_output_line_directive
@@ -87,11 +88,15 @@ class Packcr
87
88
 
88
89
  def get_code_block(code, indent, fname)
89
90
  buf = +""
90
- line, stream, @stream, @line = @line, @stream, buf, @line && :uuid
91
+ line = @line
92
+ stream = @stream
93
+ @stream = buf
94
+ @line &&= :uuid
91
95
  write_code_block(code, indent, fname)
92
- return buf
96
+ buf
93
97
  ensure
94
- @line, @stream = line, stream
98
+ @line = line
99
+ @stream = stream
95
100
  end
96
101
  end
97
102
  end