packcr 0.0.4 → 0.0.6

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 (75) hide show
  1. checksums.yaml +4 -4
  2. data/exe/packcr +3 -0
  3. data/lib/packcr/broadcast.rb +17 -0
  4. data/lib/packcr/cli.rb +25 -0
  5. data/lib/packcr/code_block.rb +2 -3
  6. data/lib/packcr/context.rb +59 -56
  7. data/lib/packcr/generator.rb +13 -11
  8. data/lib/packcr/node/action_node.rb +14 -5
  9. data/lib/packcr/node/alternate_node.rb +20 -12
  10. data/lib/packcr/node/capture_node.rb +11 -11
  11. data/lib/packcr/node/charclass_node.rb +37 -13
  12. data/lib/packcr/node/eof_node.rb +23 -0
  13. data/lib/packcr/node/error_node.rb +17 -12
  14. data/lib/packcr/node/expand_node.rb +11 -5
  15. data/lib/packcr/node/predicate_node.rb +15 -24
  16. data/lib/packcr/node/quantity_node.rb +23 -18
  17. data/lib/packcr/node/reference_node.rb +21 -5
  18. data/lib/packcr/node/root_node.rb +60 -0
  19. data/lib/packcr/node/rule_node.rb +26 -3
  20. data/lib/packcr/node/sequence_node.rb +46 -31
  21. data/lib/packcr/node/string_node.rb +12 -12
  22. data/lib/packcr/node.rb +35 -4
  23. data/lib/packcr/parser.rb +2939 -2661
  24. data/lib/packcr/stream.rb +8 -13
  25. data/lib/packcr/templates/context/header.c.erb +29 -0
  26. data/lib/packcr/templates/context/source.c.erb +1292 -0
  27. data/lib/packcr/templates/context/source.rb.erb +406 -0
  28. data/lib/packcr/templates/node/action.c.erb +16 -0
  29. data/lib/packcr/templates/node/action.rb.erb +21 -0
  30. data/lib/packcr/templates/node/alternate.c.erb +34 -0
  31. data/lib/packcr/templates/node/alternate.rb.erb +40 -0
  32. data/lib/packcr/templates/node/capture.c.erb +17 -0
  33. data/lib/packcr/templates/node/capture.rb.erb +14 -0
  34. data/lib/packcr/templates/node/charclass.c.erb +47 -0
  35. data/lib/packcr/templates/node/charclass.rb.erb +49 -0
  36. data/lib/packcr/templates/node/charclass_any.c.erb +5 -0
  37. data/lib/packcr/templates/node/charclass_any.rb.erb +7 -0
  38. data/lib/packcr/templates/node/charclass_fail.c.erb +1 -0
  39. data/lib/packcr/templates/node/charclass_fail.rb.erb +1 -0
  40. data/lib/packcr/templates/node/charclass_one.c.erb +19 -0
  41. data/lib/packcr/templates/node/charclass_one.rb.erb +23 -0
  42. data/lib/packcr/templates/node/charclass_utf8.c.erb +49 -0
  43. data/lib/packcr/templates/node/charclass_utf8.rb.erb +50 -0
  44. data/lib/packcr/templates/node/charclass_utf8_reverse.rb.erb +51 -0
  45. data/lib/packcr/templates/node/eof.c.erb +1 -0
  46. data/lib/packcr/templates/node/eof.rb.erb +3 -0
  47. data/lib/packcr/templates/node/error.c.erb +28 -0
  48. data/lib/packcr/templates/node/error.rb.erb +34 -0
  49. data/lib/packcr/templates/node/expand.c.erb +16 -0
  50. data/lib/packcr/templates/node/expand.rb.erb +16 -0
  51. data/lib/packcr/templates/node/predicate.c.erb +30 -0
  52. data/lib/packcr/templates/node/predicate.rb.erb +28 -0
  53. data/lib/packcr/templates/node/predicate_neg.c.erb +23 -0
  54. data/lib/packcr/templates/node/predicate_neg.rb.erb +22 -0
  55. data/lib/packcr/templates/node/quantify_many.c.erb +45 -0
  56. data/lib/packcr/templates/node/quantify_many.rb.erb +47 -0
  57. data/lib/packcr/templates/node/quantify_one.c.erb +21 -0
  58. data/lib/packcr/templates/node/quantify_one.rb.erb +23 -0
  59. data/lib/packcr/templates/node/reference.c.erb +5 -0
  60. data/lib/packcr/templates/node/reference.rb.erb +9 -0
  61. data/lib/packcr/templates/node/reference_reverse.rb.erb +9 -0
  62. data/lib/packcr/templates/node/rule.c.erb +19 -0
  63. data/lib/packcr/templates/node/rule.rb.erb +23 -0
  64. data/lib/packcr/templates/node/sequence.c.erb +12 -0
  65. data/lib/packcr/templates/node/sequence.rb.erb +12 -0
  66. data/lib/packcr/templates/node/string_many.c.erb +11 -0
  67. data/lib/packcr/templates/node/string_many.rb.erb +10 -0
  68. data/lib/packcr/templates/node/string_one.c.erb +8 -0
  69. data/lib/packcr/templates/node/string_one.rb.erb +10 -0
  70. data/lib/packcr/tokenizer.rb +2948 -0
  71. data/lib/packcr/util.rb +0 -8
  72. data/lib/packcr/version.rb +1 -1
  73. data/lib/packcr.rb +1 -2
  74. metadata +87 -8
  75. data/lib/packcr/buffer.rb +0 -47
data/lib/packcr/util.rb CHANGED
@@ -2,10 +2,6 @@ require "erb"
2
2
 
3
3
  class Packcr
4
4
  module Util
5
- def is_identifier_string(str)
6
- str.match?(/\A(?!\d)\w+\z/)
7
- end
8
-
9
5
  def unescape_string(str, is_charclass)
10
6
  if is_charclass
11
7
  str.gsub!("\\" * 2) { "\\" * 4 }
@@ -62,10 +58,6 @@ class Packcr
62
58
  $stdout.print escape_string(str)
63
59
  end
64
60
 
65
- def find_trailing_blanks(str)
66
- str =~ /[ \v\f\t\n\r]*\z/
67
- end
68
-
69
61
  def unify_indent_spaces(spaces)
70
62
  offset = 0
71
63
  spaces.tr!("\v\f", " ")
@@ -1,3 +1,3 @@
1
1
  class Packcr
2
- VERSION = "0.0.4"
2
+ VERSION = "0.0.6"
3
3
  end
data/lib/packcr.rb CHANGED
@@ -5,7 +5,6 @@ require "packcr/util"
5
5
  require "packcr/code_block"
6
6
  require "packcr/stream"
7
7
  require "packcr/generator"
8
- require "packcr/buffer"
9
8
  require "packcr/node"
10
9
  require "packcr/context"
11
10
  require "packcr/version"
@@ -22,7 +21,7 @@ class Packcr
22
21
 
23
22
  def run
24
23
  Context.new(@path.to_s, **@opt) do |ctx|
25
- if !ctx.parse
24
+ if !ctx.parse_all
26
25
  raise "PackCR error: can't parse"
27
26
  end
28
27
  if !ctx.generate
metadata CHANGED
@@ -1,37 +1,68 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: packcr
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.4
4
+ version: 0.0.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - wanabe
8
8
  autorequire:
9
- bindir: bin
9
+ bindir: exe
10
10
  cert_chain: []
11
- date: 2023-01-06 00:00:00.000000000 Z
11
+ date: 2023-01-19 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
- name: test-unit
14
+ name: rake
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: '3.5'
19
+ version: '13.0'
20
20
  type: :development
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: '3.5'
26
+ version: '13.0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: rspec
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '3.12'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '3.12'
41
+ - !ruby/object:Gem::Dependency
42
+ name: rspec-parameterized
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '1.0'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: '1.0'
27
55
  description:
28
56
  email:
29
- executables: []
57
+ executables:
58
+ - packcr
30
59
  extensions: []
31
60
  extra_rdoc_files: []
32
61
  files:
62
+ - exe/packcr
33
63
  - lib/packcr.rb
34
- - lib/packcr/buffer.rb
64
+ - lib/packcr/broadcast.rb
65
+ - lib/packcr/cli.rb
35
66
  - lib/packcr/code_block.rb
36
67
  - lib/packcr/context.rb
37
68
  - lib/packcr/generator.rb
@@ -40,16 +71,64 @@ files:
40
71
  - lib/packcr/node/alternate_node.rb
41
72
  - lib/packcr/node/capture_node.rb
42
73
  - lib/packcr/node/charclass_node.rb
74
+ - lib/packcr/node/eof_node.rb
43
75
  - lib/packcr/node/error_node.rb
44
76
  - lib/packcr/node/expand_node.rb
45
77
  - lib/packcr/node/predicate_node.rb
46
78
  - lib/packcr/node/quantity_node.rb
47
79
  - lib/packcr/node/reference_node.rb
80
+ - lib/packcr/node/root_node.rb
48
81
  - lib/packcr/node/rule_node.rb
49
82
  - lib/packcr/node/sequence_node.rb
50
83
  - lib/packcr/node/string_node.rb
51
84
  - lib/packcr/parser.rb
52
85
  - lib/packcr/stream.rb
86
+ - lib/packcr/templates/context/header.c.erb
87
+ - lib/packcr/templates/context/source.c.erb
88
+ - lib/packcr/templates/context/source.rb.erb
89
+ - lib/packcr/templates/node/action.c.erb
90
+ - lib/packcr/templates/node/action.rb.erb
91
+ - lib/packcr/templates/node/alternate.c.erb
92
+ - lib/packcr/templates/node/alternate.rb.erb
93
+ - lib/packcr/templates/node/capture.c.erb
94
+ - lib/packcr/templates/node/capture.rb.erb
95
+ - lib/packcr/templates/node/charclass.c.erb
96
+ - lib/packcr/templates/node/charclass.rb.erb
97
+ - lib/packcr/templates/node/charclass_any.c.erb
98
+ - lib/packcr/templates/node/charclass_any.rb.erb
99
+ - lib/packcr/templates/node/charclass_fail.c.erb
100
+ - lib/packcr/templates/node/charclass_fail.rb.erb
101
+ - lib/packcr/templates/node/charclass_one.c.erb
102
+ - lib/packcr/templates/node/charclass_one.rb.erb
103
+ - lib/packcr/templates/node/charclass_utf8.c.erb
104
+ - lib/packcr/templates/node/charclass_utf8.rb.erb
105
+ - lib/packcr/templates/node/charclass_utf8_reverse.rb.erb
106
+ - lib/packcr/templates/node/eof.c.erb
107
+ - lib/packcr/templates/node/eof.rb.erb
108
+ - lib/packcr/templates/node/error.c.erb
109
+ - lib/packcr/templates/node/error.rb.erb
110
+ - lib/packcr/templates/node/expand.c.erb
111
+ - lib/packcr/templates/node/expand.rb.erb
112
+ - lib/packcr/templates/node/predicate.c.erb
113
+ - lib/packcr/templates/node/predicate.rb.erb
114
+ - lib/packcr/templates/node/predicate_neg.c.erb
115
+ - lib/packcr/templates/node/predicate_neg.rb.erb
116
+ - lib/packcr/templates/node/quantify_many.c.erb
117
+ - lib/packcr/templates/node/quantify_many.rb.erb
118
+ - lib/packcr/templates/node/quantify_one.c.erb
119
+ - lib/packcr/templates/node/quantify_one.rb.erb
120
+ - lib/packcr/templates/node/reference.c.erb
121
+ - lib/packcr/templates/node/reference.rb.erb
122
+ - lib/packcr/templates/node/reference_reverse.rb.erb
123
+ - lib/packcr/templates/node/rule.c.erb
124
+ - lib/packcr/templates/node/rule.rb.erb
125
+ - lib/packcr/templates/node/sequence.c.erb
126
+ - lib/packcr/templates/node/sequence.rb.erb
127
+ - lib/packcr/templates/node/string_many.c.erb
128
+ - lib/packcr/templates/node/string_many.rb.erb
129
+ - lib/packcr/templates/node/string_one.c.erb
130
+ - lib/packcr/templates/node/string_one.rb.erb
131
+ - lib/packcr/tokenizer.rb
53
132
  - lib/packcr/util.rb
54
133
  - lib/packcr/version.rb
55
134
  homepage: https://github.com/wanabe/packcr
data/lib/packcr/buffer.rb DELETED
@@ -1,47 +0,0 @@
1
-
2
- class Packcr
3
- class Buffer
4
- def initialize
5
- @buf = +"".b
6
- end
7
-
8
- def len
9
- @buf.length
10
- end
11
-
12
- def [](index)
13
- @buf[index].ord
14
- end
15
-
16
- def count_characters(s, e)
17
- # UTF-8 multibyte character support but without checking UTF-8 validity
18
- n = 0
19
- i = s
20
- while i < e
21
- c = self[i]
22
- if c == 0
23
- break
24
- end
25
- n += 1
26
- i += (c < 0x80) ? 1 : ((c & 0xe0) == 0xc0) ? 2 : ((c & 0xf0) == 0xe0) ? 3 : ((c & 0xf8) == 0xf0) ? 4 : 1
27
- end
28
- return n
29
- end
30
-
31
- def add(ch)
32
- @buf.concat(ch)
33
- end
34
-
35
- def to_s
36
- @buf
37
- end
38
-
39
- def []=(pos, ch)
40
- @buf[pos] = ch
41
- end
42
-
43
- def add_pos(offset)
44
- @buf[0, offset] = ""
45
- end
46
- end
47
- end