rbexy 2.0.0.beta8 → 2.0.0.rc2

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.
@@ -0,0 +1,255 @@
1
+ GIT
2
+ remote: https://github.com/rails/rails.git
3
+ revision: 54c73577690e1ec81a79472ba98e28bb3e18703f
4
+ branch: main
5
+ specs:
6
+ actioncable (7.1.0.alpha)
7
+ actionpack (= 7.1.0.alpha)
8
+ activesupport (= 7.1.0.alpha)
9
+ nio4r (~> 2.0)
10
+ websocket-driver (>= 0.6.1)
11
+ actionmailbox (7.1.0.alpha)
12
+ actionpack (= 7.1.0.alpha)
13
+ activejob (= 7.1.0.alpha)
14
+ activerecord (= 7.1.0.alpha)
15
+ activestorage (= 7.1.0.alpha)
16
+ activesupport (= 7.1.0.alpha)
17
+ mail (>= 2.7.1)
18
+ net-imap
19
+ net-pop
20
+ net-smtp
21
+ actionmailer (7.1.0.alpha)
22
+ actionpack (= 7.1.0.alpha)
23
+ actionview (= 7.1.0.alpha)
24
+ activejob (= 7.1.0.alpha)
25
+ activesupport (= 7.1.0.alpha)
26
+ mail (~> 2.5, >= 2.5.4)
27
+ net-imap
28
+ net-pop
29
+ net-smtp
30
+ rails-dom-testing (~> 2.0)
31
+ actionpack (7.1.0.alpha)
32
+ actionview (= 7.1.0.alpha)
33
+ activesupport (= 7.1.0.alpha)
34
+ rack (~> 2.0, >= 2.2.0)
35
+ rack-test (>= 0.6.3)
36
+ rails-dom-testing (~> 2.0)
37
+ rails-html-sanitizer (~> 1.0, >= 1.2.0)
38
+ actiontext (7.1.0.alpha)
39
+ actionpack (= 7.1.0.alpha)
40
+ activerecord (= 7.1.0.alpha)
41
+ activestorage (= 7.1.0.alpha)
42
+ activesupport (= 7.1.0.alpha)
43
+ globalid (>= 0.6.0)
44
+ nokogiri (>= 1.8.5)
45
+ actionview (7.1.0.alpha)
46
+ activesupport (= 7.1.0.alpha)
47
+ builder (~> 3.1)
48
+ erubi (~> 1.4)
49
+ rails-dom-testing (~> 2.0)
50
+ rails-html-sanitizer (~> 1.1, >= 1.2.0)
51
+ activejob (7.1.0.alpha)
52
+ activesupport (= 7.1.0.alpha)
53
+ globalid (>= 0.3.6)
54
+ activemodel (7.1.0.alpha)
55
+ activesupport (= 7.1.0.alpha)
56
+ activerecord (7.1.0.alpha)
57
+ activemodel (= 7.1.0.alpha)
58
+ activesupport (= 7.1.0.alpha)
59
+ activestorage (7.1.0.alpha)
60
+ actionpack (= 7.1.0.alpha)
61
+ activejob (= 7.1.0.alpha)
62
+ activerecord (= 7.1.0.alpha)
63
+ activesupport (= 7.1.0.alpha)
64
+ marcel (~> 1.0)
65
+ mini_mime (>= 1.1.0)
66
+ activesupport (7.1.0.alpha)
67
+ concurrent-ruby (~> 1.0, >= 1.0.2)
68
+ i18n (>= 1.6, < 2)
69
+ minitest (>= 5.1)
70
+ tzinfo (~> 2.0)
71
+ rails (7.1.0.alpha)
72
+ actioncable (= 7.1.0.alpha)
73
+ actionmailbox (= 7.1.0.alpha)
74
+ actionmailer (= 7.1.0.alpha)
75
+ actionpack (= 7.1.0.alpha)
76
+ actiontext (= 7.1.0.alpha)
77
+ actionview (= 7.1.0.alpha)
78
+ activejob (= 7.1.0.alpha)
79
+ activemodel (= 7.1.0.alpha)
80
+ activerecord (= 7.1.0.alpha)
81
+ activestorage (= 7.1.0.alpha)
82
+ activesupport (= 7.1.0.alpha)
83
+ bundler (>= 1.15.0)
84
+ railties (= 7.1.0.alpha)
85
+ railties (7.1.0.alpha)
86
+ actionpack (= 7.1.0.alpha)
87
+ activesupport (= 7.1.0.alpha)
88
+ method_source
89
+ rake (>= 12.2)
90
+ thor (~> 1.0)
91
+ zeitwerk (~> 2.5)
92
+
93
+ PATH
94
+ remote: ..
95
+ specs:
96
+ rbexy (2.0.0.rc2)
97
+ actionview (>= 6, < 7.1)
98
+ activesupport (>= 6, < 7.1)
99
+
100
+ GEM
101
+ remote: https://rubygems.org/
102
+ specs:
103
+ appraisal (2.4.1)
104
+ bundler
105
+ rake
106
+ thor (>= 0.14.0)
107
+ builder (3.2.4)
108
+ byebug (11.1.3)
109
+ coderay (1.1.3)
110
+ concurrent-ruby (1.1.9)
111
+ crass (1.0.6)
112
+ diff-lcs (1.5.0)
113
+ digest (3.1.0)
114
+ erubi (1.10.0)
115
+ ffi (1.15.5)
116
+ formatador (1.1.0)
117
+ globalid (1.0.0)
118
+ activesupport (>= 5.0)
119
+ guard (2.18.0)
120
+ formatador (>= 0.2.4)
121
+ listen (>= 2.7, < 4.0)
122
+ lumberjack (>= 1.0.12, < 2.0)
123
+ nenv (~> 0.1)
124
+ notiffany (~> 0.0)
125
+ pry (>= 0.13.0)
126
+ shellany (~> 0.0)
127
+ thor (>= 0.18.1)
128
+ guard-compat (1.2.1)
129
+ guard-rspec (4.7.3)
130
+ guard (~> 2.1)
131
+ guard-compat (~> 1.1)
132
+ rspec (>= 2.99.0, < 4.0)
133
+ i18n (1.10.0)
134
+ concurrent-ruby (~> 1.0)
135
+ io-wait (0.2.1)
136
+ listen (3.7.1)
137
+ rb-fsevent (~> 0.10, >= 0.10.3)
138
+ rb-inotify (~> 0.9, >= 0.9.10)
139
+ loofah (2.14.0)
140
+ crass (~> 1.0.2)
141
+ nokogiri (>= 1.5.9)
142
+ lumberjack (1.2.8)
143
+ mail (2.7.1)
144
+ mini_mime (>= 0.1.1)
145
+ marcel (1.0.2)
146
+ memory_profiler (0.9.14)
147
+ method_source (1.0.0)
148
+ mini_mime (1.1.2)
149
+ minitest (5.15.0)
150
+ nenv (0.3.0)
151
+ net-imap (0.2.3)
152
+ digest
153
+ net-protocol
154
+ strscan
155
+ net-pop (0.1.1)
156
+ digest
157
+ net-protocol
158
+ timeout
159
+ net-protocol (0.1.2)
160
+ io-wait
161
+ timeout
162
+ net-smtp (0.3.1)
163
+ digest
164
+ net-protocol
165
+ timeout
166
+ nio4r (2.5.8)
167
+ nokogiri (1.13.3-x86_64-linux)
168
+ racc (~> 1.4)
169
+ notiffany (0.1.3)
170
+ nenv (~> 0.1)
171
+ shellany (~> 0.0)
172
+ pry (0.13.1)
173
+ coderay (~> 1.1)
174
+ method_source (~> 1.0)
175
+ pry-byebug (3.9.0)
176
+ byebug (~> 11.0)
177
+ pry (~> 0.13.0)
178
+ puma (5.6.2)
179
+ nio4r (~> 2.0)
180
+ racc (1.6.0)
181
+ rack (2.2.3)
182
+ rack-test (1.1.0)
183
+ rack (>= 1.0, < 3)
184
+ rails-dom-testing (2.0.3)
185
+ activesupport (>= 4.2.0)
186
+ nokogiri (>= 1.6)
187
+ rails-html-sanitizer (1.4.2)
188
+ loofah (~> 2.3)
189
+ rake (13.0.6)
190
+ rb-fsevent (0.11.1)
191
+ rb-inotify (0.10.1)
192
+ ffi (~> 1.0)
193
+ rspec (3.11.0)
194
+ rspec-core (~> 3.11.0)
195
+ rspec-expectations (~> 3.11.0)
196
+ rspec-mocks (~> 3.11.0)
197
+ rspec-core (3.11.0)
198
+ rspec-support (~> 3.11.0)
199
+ rspec-expectations (3.11.0)
200
+ diff-lcs (>= 1.2.0, < 2.0)
201
+ rspec-support (~> 3.11.0)
202
+ rspec-html-matchers (0.9.4)
203
+ nokogiri (~> 1)
204
+ rspec (>= 3.0.0.a, < 4)
205
+ rspec-mocks (3.11.0)
206
+ diff-lcs (>= 1.2.0, < 2.0)
207
+ rspec-support (~> 3.11.0)
208
+ rspec-rails (4.1.2)
209
+ actionpack (>= 4.2)
210
+ activesupport (>= 4.2)
211
+ railties (>= 4.2)
212
+ rspec-core (~> 3.10)
213
+ rspec-expectations (~> 3.10)
214
+ rspec-mocks (~> 3.10)
215
+ rspec-support (~> 3.10)
216
+ rspec-support (3.11.0)
217
+ shellany (0.0.1)
218
+ sprockets (4.0.3)
219
+ concurrent-ruby (~> 1.0)
220
+ rack (> 1, < 3)
221
+ sprockets-rails (3.4.2)
222
+ actionpack (>= 5.2)
223
+ activesupport (>= 5.2)
224
+ sprockets (>= 3.0.0)
225
+ sqlite3 (1.4.2)
226
+ strscan (3.0.1)
227
+ thor (1.2.1)
228
+ timeout (0.2.0)
229
+ tzinfo (2.0.4)
230
+ concurrent-ruby (~> 1.0)
231
+ websocket-driver (0.7.5)
232
+ websocket-extensions (>= 0.1.0)
233
+ websocket-extensions (0.1.5)
234
+ zeitwerk (2.5.4)
235
+
236
+ PLATFORMS
237
+ x86_64-linux
238
+
239
+ DEPENDENCIES
240
+ appraisal (~> 2.2)
241
+ guard-rspec (~> 4.7, >= 4.7.3)
242
+ memory_profiler (~> 0.9.14)
243
+ pry-byebug
244
+ puma
245
+ rails!
246
+ rake
247
+ rbexy!
248
+ rspec (~> 3.9)
249
+ rspec-html-matchers (~> 0.9.3)
250
+ rspec-rails (~> 4.0, >= 4.0.1)
251
+ sprockets-rails (>= 2, < 4)
252
+ sqlite3
253
+
254
+ BUNDLED WITH
255
+ 2.2.3
@@ -9,6 +9,18 @@ module Rbexy
9
9
  def to_s
10
10
  self
11
11
  end
12
+
13
+ def split(*args)
14
+ super.map { |s| TemplatePath.new(s) }
15
+ end
16
+
17
+ def gsub(*args)
18
+ super.tap { |s| break TemplatePath.new(s) }
19
+ end
20
+
21
+ def from(*args)
22
+ super.tap { |s| break TemplatePath.new(s) }
23
+ end
12
24
  end
13
25
 
14
26
  class_attribute :component_file_location
@@ -78,8 +90,8 @@ module Rbexy
78
90
  raise error
79
91
  end
80
92
 
81
- def method_missing(meth, *args, &block)
82
- view_context.send(meth, *args, &block)
93
+ def method_missing(meth, *args, **kwargs, &block)
94
+ view_context.send(meth, *args, **kwargs, &block)
83
95
  end
84
96
 
85
97
  def respond_to_missing?(method_name, include_all)
@@ -17,6 +17,7 @@ module Rbexy
17
17
  @compile_context = context
18
18
  children.each { |c| c.inject_compile_context(context) } if respond_to?(:children)
19
19
  members.each { |c| c.inject_compile_context(context) } if respond_to?(:members)
20
+ value.inject_compile_context(context) if respond_to?(:value)
20
21
  end
21
22
 
22
23
  def transform!
@@ -24,6 +25,7 @@ module Rbexy
24
25
  ast_transformer.transform(self, compile_context)
25
26
  children.each(&:transform!) if respond_to?(:children)
26
27
  members.each(&:transform!) if respond_to?(:members)
28
+ value.transform! if respond_to?(:value)
27
29
  end
28
30
 
29
31
  private
@@ -1,7 +1,11 @@
1
1
  module Rbexy
2
2
  module Nodes
3
3
  class HTMLElement < AbstractElement
4
- KNOWN_VOID_ELEMENTS = ActionView::Helpers::TagHelper::TagBuilder::VOID_ELEMENTS.map(&:to_s).to_set
4
+ if ActionView.version >= Gem::Version.new("7.0.0")
5
+ KNOWN_VOID_ELEMENTS = ActionView::Helpers::TagHelper::TagBuilder::HTML_VOID_ELEMENTS.map(&:to_s).to_set
6
+ else
7
+ KNOWN_VOID_ELEMENTS = ActionView::Helpers::TagHelper::TagBuilder::VOID_ELEMENTS.map(&:to_s).to_set
8
+ end
5
9
 
6
10
  def precompile
7
11
  nodes = []
@@ -2,7 +2,7 @@ module Rbexy
2
2
  module Nodes
3
3
  module Util
4
4
  def self.escape_string(str)
5
- str.gsub('"', '\\"').gsub("'", "\\'")
5
+ str.gsub('"', '\\"').gsub("'", "\\\\'")
6
6
  end
7
7
  end
8
8
  end
@@ -10,9 +10,21 @@ module Rbexy
10
10
  slim: "/ %s"
11
11
  }
12
12
 
13
- # Rails 6 requires us to override `_find_all` in order to hook
14
- def _find_all(name, prefix, partial, details, key, locals)
15
- find_templates(name, prefix, partial, details, locals)
13
+ # Rails 6 and 7 require us to override `_find_all` in order to hook
14
+ if ActionView.version >= Gem::Version.new("7.0.0")
15
+ # Rails 7 implements caching internally to _find_all
16
+ def _find_all(name, prefix, partial, details, key, locals)
17
+ cache = key ? @unbound_templates : Concurrent::Map.new
18
+
19
+ cache.compute_if_absent(ActionView::TemplatePath.virtual(name, prefix, partial)) do
20
+ find_templates(name, prefix, partial, details, locals)
21
+ end
22
+ end
23
+ else
24
+ # Rails 6 implements caching at the call-site (find_all)
25
+ def _find_all(name, prefix, partial, details, key, locals)
26
+ find_templates(name, prefix, partial, details, locals)
27
+ end
16
28
  end
17
29
 
18
30
  # Rails 5 only requires `find_templates` (which tbh is the proper way
data/lib/rbexy/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Rbexy
2
- VERSION = "2.0.0.beta8"
2
+ VERSION = "2.0.0.rc2"
3
3
  end
data/lib/rbexy.rb CHANGED
@@ -1,6 +1,7 @@
1
1
  require "rbexy/version"
2
2
  require "active_support/inflector"
3
3
  require "active_support/concern"
4
+ require "active_support/core_ext/enumerable"
4
5
  require "action_view/helpers/output_safety_helper"
5
6
  require "action_view/helpers/capture_helper"
6
7
  require "action_view/helpers/tag_helper"
data/rbexy.gemspec CHANGED
@@ -9,7 +9,7 @@ Gem::Specification.new do |spec|
9
9
  spec.summary = "A Ruby template language inspired by JSX"
10
10
  spec.homepage = "https://github.com/patbenatar/rbexy"
11
11
  spec.license = "MIT"
12
- spec.required_ruby_version = Gem::Requirement.new(">= 2.3.0")
12
+ spec.required_ruby_version = Gem::Requirement.new(">= 2.7.0")
13
13
 
14
14
  spec.metadata["allowed_push_host"] = "https://rubygems.org"
15
15
 
@@ -25,10 +25,12 @@ Gem::Specification.new do |spec|
25
25
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
26
26
  spec.require_paths = ["lib"]
27
27
 
28
- spec.add_dependency "activesupport", ">= 6.0", "< 7.0"
29
- spec.add_dependency "actionview", ">= 6.0", "< 7.0"
28
+ spec.add_dependency "activesupport", ">= 6", "< 7.1"
29
+ spec.add_dependency "actionview", ">= 6", "< 7.1"
30
30
 
31
- spec.add_development_dependency "rails", ">= 6.0", "< 7.0"
31
+ spec.add_development_dependency "appraisal", "~> 2.2"
32
+ spec.add_development_dependency "rails", ">= 6", "< 7.1"
33
+ spec.add_development_dependency "sprockets-rails", ">= 2", "< 4"
32
34
  spec.add_development_dependency "rspec", "~> 3.9"
33
35
  spec.add_development_dependency "guard-rspec", "~> 4.7", ">= 4.7.3"
34
36
  spec.add_development_dependency "rspec-rails", "~> 4.0", ">= 4.0.1"
@@ -36,5 +38,6 @@ Gem::Specification.new do |spec|
36
38
  spec.add_development_dependency "rake"
37
39
  spec.add_development_dependency "pry-byebug"
38
40
  spec.add_development_dependency "sqlite3"
41
+ spec.add_development_dependency "puma"
39
42
  spec.add_development_dependency "memory_profiler", "~> 0.9.14"
40
43
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rbexy
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.0.0.beta8
4
+ version: 2.0.0.rc2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Nick Giancola
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2021-01-23 00:00:00.000000000 Z
11
+ date: 2022-03-15 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -16,60 +16,94 @@ dependencies:
16
16
  requirements:
17
17
  - - ">="
18
18
  - !ruby/object:Gem::Version
19
- version: '6.0'
19
+ version: '6'
20
20
  - - "<"
21
21
  - !ruby/object:Gem::Version
22
- version: '7.0'
22
+ version: '7.1'
23
23
  type: :runtime
24
24
  prerelease: false
25
25
  version_requirements: !ruby/object:Gem::Requirement
26
26
  requirements:
27
27
  - - ">="
28
28
  - !ruby/object:Gem::Version
29
- version: '6.0'
29
+ version: '6'
30
30
  - - "<"
31
31
  - !ruby/object:Gem::Version
32
- version: '7.0'
32
+ version: '7.1'
33
33
  - !ruby/object:Gem::Dependency
34
34
  name: actionview
35
35
  requirement: !ruby/object:Gem::Requirement
36
36
  requirements:
37
37
  - - ">="
38
38
  - !ruby/object:Gem::Version
39
- version: '6.0'
39
+ version: '6'
40
40
  - - "<"
41
41
  - !ruby/object:Gem::Version
42
- version: '7.0'
42
+ version: '7.1'
43
43
  type: :runtime
44
44
  prerelease: false
45
45
  version_requirements: !ruby/object:Gem::Requirement
46
46
  requirements:
47
47
  - - ">="
48
48
  - !ruby/object:Gem::Version
49
- version: '6.0'
49
+ version: '6'
50
50
  - - "<"
51
51
  - !ruby/object:Gem::Version
52
- version: '7.0'
52
+ version: '7.1'
53
+ - !ruby/object:Gem::Dependency
54
+ name: appraisal
55
+ requirement: !ruby/object:Gem::Requirement
56
+ requirements:
57
+ - - "~>"
58
+ - !ruby/object:Gem::Version
59
+ version: '2.2'
60
+ type: :development
61
+ prerelease: false
62
+ version_requirements: !ruby/object:Gem::Requirement
63
+ requirements:
64
+ - - "~>"
65
+ - !ruby/object:Gem::Version
66
+ version: '2.2'
53
67
  - !ruby/object:Gem::Dependency
54
68
  name: rails
55
69
  requirement: !ruby/object:Gem::Requirement
56
70
  requirements:
57
71
  - - ">="
58
72
  - !ruby/object:Gem::Version
59
- version: '6.0'
73
+ version: '6'
60
74
  - - "<"
61
75
  - !ruby/object:Gem::Version
62
- version: '7.0'
76
+ version: '7.1'
63
77
  type: :development
64
78
  prerelease: false
65
79
  version_requirements: !ruby/object:Gem::Requirement
66
80
  requirements:
67
81
  - - ">="
68
82
  - !ruby/object:Gem::Version
69
- version: '6.0'
83
+ version: '6'
70
84
  - - "<"
71
85
  - !ruby/object:Gem::Version
72
- version: '7.0'
86
+ version: '7.1'
87
+ - !ruby/object:Gem::Dependency
88
+ name: sprockets-rails
89
+ requirement: !ruby/object:Gem::Requirement
90
+ requirements:
91
+ - - ">="
92
+ - !ruby/object:Gem::Version
93
+ version: '2'
94
+ - - "<"
95
+ - !ruby/object:Gem::Version
96
+ version: '4'
97
+ type: :development
98
+ prerelease: false
99
+ version_requirements: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - ">="
102
+ - !ruby/object:Gem::Version
103
+ version: '2'
104
+ - - "<"
105
+ - !ruby/object:Gem::Version
106
+ version: '4'
73
107
  - !ruby/object:Gem::Dependency
74
108
  name: rspec
75
109
  requirement: !ruby/object:Gem::Requirement
@@ -180,6 +214,20 @@ dependencies:
180
214
  - - ">="
181
215
  - !ruby/object:Gem::Version
182
216
  version: '0'
217
+ - !ruby/object:Gem::Dependency
218
+ name: puma
219
+ requirement: !ruby/object:Gem::Requirement
220
+ requirements:
221
+ - - ">="
222
+ - !ruby/object:Gem::Version
223
+ version: '0'
224
+ type: :development
225
+ prerelease: false
226
+ version_requirements: !ruby/object:Gem::Requirement
227
+ requirements:
228
+ - - ">="
229
+ - !ruby/object:Gem::Version
230
+ version: '0'
183
231
  - !ruby/object:Gem::Dependency
184
232
  name: memory_profiler
185
233
  requirement: !ruby/object:Gem::Requirement
@@ -201,9 +249,11 @@ executables: []
201
249
  extensions: []
202
250
  extra_rdoc_files: []
203
251
  files:
252
+ - ".github/workflows/main.yml"
204
253
  - ".gitignore"
205
254
  - ".rspec"
206
255
  - ".travis.yml"
256
+ - Appraisals
207
257
  - CODE_OF_CONDUCT.md
208
258
  - Dockerfile
209
259
  - Gemfile
@@ -214,7 +264,15 @@ files:
214
264
  - Rakefile
215
265
  - bin/console
216
266
  - bin/setup
267
+ - bin/test
217
268
  - docker-compose.yml
269
+ - gemfiles/.bundle/config
270
+ - gemfiles/rails_6_1.gemfile
271
+ - gemfiles/rails_6_1.gemfile.lock
272
+ - gemfiles/rails_7_0.gemfile
273
+ - gemfiles/rails_7_0.gemfile.lock
274
+ - gemfiles/rails_master.gemfile
275
+ - gemfiles/rails_master.gemfile.lock
218
276
  - lib/rbexy.rb
219
277
  - lib/rbexy/ast_transformer.rb
220
278
  - lib/rbexy/cache_component.rb
@@ -270,14 +328,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
270
328
  requirements:
271
329
  - - ">="
272
330
  - !ruby/object:Gem::Version
273
- version: 2.3.0
331
+ version: 2.7.0
274
332
  required_rubygems_version: !ruby/object:Gem::Requirement
275
333
  requirements:
276
334
  - - ">"
277
335
  - !ruby/object:Gem::Version
278
336
  version: 1.3.1
279
337
  requirements: []
280
- rubygems_version: 3.1.2
338
+ rubygems_version: 3.3.7
281
339
  signing_key:
282
340
  specification_version: 4
283
341
  summary: A Ruby template language inspired by JSX