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

Sign up to get free protection for your applications and to get access to all the features.
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