rails_blocks 0.9.0.beta.2 → 0.9.0.beta.4

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: e037cb85e19c073e95220d11d5216f35bb58f1544a61c6510f2b2885dbc45565
4
- data.tar.gz: bf00672538f7e357accdf84659f826b2967ce86ccae8584530cdfb3a19721850
3
+ metadata.gz: 03e2b58cf290941dd680f6e0d7893c5ad06ccaed98e6f6549f9c24876204e9aa
4
+ data.tar.gz: 5d5fda3dc88c986ea65c00f5291874c3e17f9b5712f42540be04c77f9e8e4fa9
5
5
  SHA512:
6
- metadata.gz: 87b20842800181fe3d7af4a2a6694dc1fb471224ab1812e72b660c530ff3032eef8fba240b1cd9df110549680df707fcc7de326c817da1df53497d26bbd6a309
7
- data.tar.gz: d3af99de53ce9fd44a444b5eb930d39212688381daa0b8a726f5f2b46a254ab8f0288d46ed418e141ba86fa0559d356f7ffa96bdbeed4d4326568391fa6c73de
6
+ metadata.gz: 837d083a5707d595483fc788b169c44ae9cda7db9ed35a5727f70330b4753980ee1e3da6fb173bc6aa633cf04b6d9afc0ce003569b63acd725ea7bba2ccfb82b
7
+ data.tar.gz: e0e8e4a89613e8859d2a5e6af26d543963418e56ee87aaa0ec921578c1967e779785308bba035efea81ef058cb81d14fc7e5a6195868d468601889a859d2c81a
@@ -35,7 +35,7 @@ module BlockHelper
35
35
  def b(b_name, options = {}, &block)
36
36
  options = page_options.merge options
37
37
  options[:parent_block] = context_block
38
- push_context_block b_name
38
+ push_context_block b_name, options
39
39
  template = block_template b_name, options
40
40
  result = entity(template, :block, b_name, options, &block)
41
41
  pop_context_block
@@ -44,7 +44,7 @@ module BlockHelper
44
44
 
45
45
  def b_classes(b_name, options = {})
46
46
  parent_block = context_block
47
- push_context_block b_name
47
+ push_context_block b_name, options
48
48
  options = page_options.merge options
49
49
  options[:parent_block] = parent_block if parent_block
50
50
  classes = block_classes b_name, options
@@ -52,8 +52,8 @@ module BlockHelper
52
52
  classes
53
53
  end
54
54
 
55
- def b_context(b_name, &block)
56
- push_context_block b_name
55
+ def b_context(b_name, options = {}, &block)
56
+ push_context_block b_name, options
57
57
  result = capture(&block)
58
58
  pop_context_block
59
59
  result
@@ -160,7 +160,7 @@ module BlockHelper
160
160
  def block_data(name, js)
161
161
  level = block_js_level(context_block, @current_options[:levels])
162
162
  return {} if !js
163
- data = (js == true ? {} : js).merge!({level: level})
163
+ data = (js == true ? {} : js).merge!({level: level, js_ext: block_js_ext(context_block, level)})
164
164
  entity_data(name, data)
165
165
  end
166
166
 
@@ -169,7 +169,10 @@ module BlockHelper
169
169
  end
170
170
 
171
171
  def entity_data(name, data)
172
- return {name => data} if data.is_a? Hash
172
+ if data.is_a? Hash
173
+ transformed_data = data.transform_keys {|k| k.to_s.camelize(:lower)}
174
+ return {name => transformed_data}
175
+ end
173
176
  return {name => {}} if data == true
174
177
  {}
175
178
  end
@@ -189,11 +192,15 @@ module BlockHelper
189
192
  end
190
193
 
191
194
  def context_block
192
- blocks_stack.last
195
+ blocks_stack.last&.fetch(:name, nil)
196
+ end
197
+
198
+ def context_block_options
199
+ blocks_stack.last&.fetch(:options, nil)
193
200
  end
194
201
 
195
- def push_context_block(b_name)
196
- blocks_stack.push b_name
202
+ def push_context_block(b_name, options)
203
+ blocks_stack.push({name: b_name, options: options})
197
204
  end
198
205
 
199
206
  def pop_context_block
@@ -6,6 +6,7 @@ module RailsBlocks
6
6
  attr_accessor :element_separator
7
7
  attr_accessor :modifier_separator
8
8
  attr_accessor :js_class
9
+ attr_accessor :js_exts
9
10
 
10
11
  def ns(name)
11
12
  @ns ||= {}
@@ -20,6 +21,7 @@ module RailsBlocks
20
21
  @element_separator = '__'
21
22
  @modifier_separator = '--'
22
23
  @js_class = 'js-bem'
24
+ @js_exts = ['js']
23
25
  end
24
26
  end
25
27
  end
@@ -36,6 +36,10 @@ module RailsBlocks
36
36
  Path.tree.dig(level, b_name, :js)
37
37
  end
38
38
  end
39
+
40
+ def block_js_ext(b_name, level)
41
+ return Path.tree.dig(level, b_name, :js_ext)
42
+ end
39
43
 
40
44
  def element_template(b_name, e_name, options = {})
41
45
  options[:levels].reverse.each do |level|
@@ -94,17 +98,21 @@ module RailsBlocks
94
98
  end
95
99
 
96
100
  def self.add_js(t)
97
- js_files = Dir["#{blocks_dir}/**/*.js"]
101
+ exts = RailsBlocks.config.js_exts.join(',')
102
+ js_files = Dir["#{blocks_dir}/**/*.{#{exts}}"]
98
103
  js_files.each do |file|
99
104
  file.sub! blocks_dir.to_s + '/', ''
100
105
  parts = file.split('/')
101
106
  level, block, filename = parts
107
+ ext = File.extname(filename)
102
108
  filename = File.basename(filename, '.*')
103
109
 
104
110
  t[level] ||= {}
105
111
  block_def = t[level][block] ||= {elements: {}}
106
112
  block_def[:js] = true
113
+ block_def[:js_ext] = ext[1..-1]
107
114
  end
115
+ p t
108
116
  end
109
117
 
110
118
  def self.is_e_file(file)
@@ -1,3 +1,3 @@
1
1
  module RailsBlocks
2
- VERSION = "0.9.0.beta.2".freeze
2
+ VERSION = "0.9.0.beta.4".freeze
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rails_blocks
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.9.0.beta.2
4
+ version: 0.9.0.beta.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Andrey Potetiurin
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2023-07-26 00:00:00.000000000 Z
11
+ date: 2023-08-17 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -181,7 +181,6 @@ files:
181
181
  - lib/rails_blocks/path.rb
182
182
  - lib/rails_blocks/version.rb
183
183
  - lib/tasks/rails_blocks.rake
184
- - rails_blocks-0.7.11.gem
185
184
  - rails_blocks.gemspec
186
185
  - spec/helpers/block_helper_spec.rb
187
186
  - spec/internal/app/blocks/app/block3/_mod1.slim
Binary file