packcr 0.0.6 → 0.0.7

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.
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