rails_blocks 0.9.0.beta.1 → 0.9.0.beta.2

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: 033ebb0f7ed446801f2ae9cd57276c54881fa1ce0790b67475e8c0d3d58aaf68
4
- data.tar.gz: 909f87b36efb9f8c909de64e51564b5ca57c575253052374c4791b891f0705c6
3
+ metadata.gz: e037cb85e19c073e95220d11d5216f35bb58f1544a61c6510f2b2885dbc45565
4
+ data.tar.gz: bf00672538f7e357accdf84659f826b2967ce86ccae8584530cdfb3a19721850
5
5
  SHA512:
6
- metadata.gz: ed545d3e344a507e4c30cbd7b14bee0186e464e9a54c60d8f4498557607bec1bc1df142eefcfa9d37039f254cb08e5ab7cc0863123d6d4363a9a43480af58133
7
- data.tar.gz: 6f95e004db9ef7883bf17f41bd36fd226b3c7659ae3b5e85ae975c3dd6f63fcafe093de2674312a12ad915f8fcbc2b50c2ae4197bbbcbbbc9c1d03828cec5be6
6
+ metadata.gz: 87b20842800181fe3d7af4a2a6694dc1fb471224ab1812e72b660c530ff3032eef8fba240b1cd9df110549680df707fcc7de326c817da1df53497d26bbd6a309
7
+ data.tar.gz: d3af99de53ce9fd44a444b5eb930d39212688381daa0b8a726f5f2b46a254ab8f0288d46ed418e141ba86fa0559d356f7ffa96bdbeed4d4326568391fa6c73de
@@ -133,10 +133,14 @@ module BlockHelper
133
133
  private
134
134
  def current_bem_data
135
135
  data = {}
136
- data.merge! entity_data(current_entity_name, @current_options[:js]) if @current_options[:js]
136
+ if(@current_entity[:type] == :block)
137
+ data.merge! block_data(@current_entity[:name], @current_options[:js])
138
+ else
139
+ data.merge! element_data(context_block, @current_entity[:name], @current_options[:js])
140
+ end
137
141
  data.merge! mix_data(@current_options[:mix]) if @current_options[:mix]
138
142
 
139
- return nil if data == {}
143
+ return nil if data.length == 0
140
144
  data
141
145
  end
142
146
 
@@ -145,18 +149,25 @@ module BlockHelper
145
149
  data = mixes.map do |mix|
146
150
  next unless mix[:js]
147
151
  if mix[:e]
148
- if mix[:b]
149
- entity_data(element_name(mix[:b], mix[:e]), mix[:js])
150
- else
151
- entity_data(element_name(context_block, mix[:e]), mix[:js])
152
- end
152
+ element_data(mix[:b] || context_block, mix[:e], mix[:js])
153
153
  else
154
154
  raise RailsBlocks::BadMixError if mix[:b].nil?
155
- entity_data(block_name(mix[:b]), mix[:js])
155
+ block_data(mix[:b], mix[:js])
156
156
  end
157
157
  end.compact.inject(&:merge) || {}
158
158
  end
159
159
 
160
+ def block_data(name, js)
161
+ level = block_js_level(context_block, @current_options[:levels])
162
+ return {} if !js
163
+ data = (js == true ? {} : js).merge!({level: level})
164
+ entity_data(name, data)
165
+ end
166
+
167
+ def element_data(b, e, js)
168
+ entity_data(element_name(b || context_block, e), js)
169
+ end
170
+
160
171
  def entity_data(name, data)
161
172
  return {name => data} if data.is_a? Hash
162
173
  return {name => {}} if data == true
@@ -30,6 +30,12 @@ module RailsBlocks
30
30
  end
31
31
  nil
32
32
  end
33
+
34
+ def block_js_level(b_name, levels)
35
+ return levels.reverse.find do |level|
36
+ Path.tree.dig(level, b_name, :js)
37
+ end
38
+ end
33
39
 
34
40
  def element_template(b_name, e_name, options = {})
35
41
  options[:levels].reverse.each do |level|
@@ -41,7 +47,6 @@ module RailsBlocks
41
47
  end
42
48
 
43
49
  private
44
-
45
50
  def mod(options)
46
51
  return '' unless options[:mods] && !options[:mods].empty?
47
52
  mod_class(*options[:mods].first)
@@ -63,31 +68,44 @@ module RailsBlocks
63
68
 
64
69
  def self.file_tree
65
70
  t = {}
66
- files = Dir["#{blocks_dir}/**/*#{RailsBlocks.config.template_engine}"]
71
+ engine_ext = RailsBlocks.config.template_engine
72
+ files = Dir["#{blocks_dir}/**/*#{engine_ext}"]
67
73
  files.each do |file|
68
74
  file.sub! blocks_dir.to_s + '/', ''
69
- file.sub! '.html' + RailsBlocks.config.template_engine, ''
75
+ file.sub! '.html' + engine_ext, ''
70
76
 
71
77
  parts = file.split('/')
72
- filename = File.basename(file, RailsBlocks.config.template_engine)
78
+ filename = File.basename(file, engine_ext)
73
79
  filename = File.basename(filename, '.html')
74
- template = {
75
- level: parts[0],
76
- block: parts[1],
77
- file: filename
78
- }
79
- t[template[:level]] ||= {}
80
- t[template[:level]][template[:block]] ||= {elements: {}}
80
+ # p filename
81
+ level, block = parts
82
+ t[level] ||= {}
83
+ block_def = (t[level][block] ||= {elements: {}})
81
84
 
82
85
  if is_e_file(filename)
83
- t[template[:level]][template[:block]][:elements][get_e_name(filename)] ||= {}
84
- t[template[:level]][template[:block]][:elements][get_e_name(filename)][get_e_mod(filename)] = file
86
+ block_def[:elements][get_e_name(filename)] ||= {}
87
+ block_def[:elements][get_e_name(filename)][get_e_mod(filename)] = file
85
88
  else
86
- t[template[:level]][template[:block]][get_b_mod(filename)] = file
89
+ block_def[get_b_mod(filename)] = file
87
90
  end
88
91
  end
92
+ add_js(t)
89
93
  t.with_indifferent_access.freeze
90
94
  end
95
+
96
+ def self.add_js(t)
97
+ js_files = Dir["#{blocks_dir}/**/*.js"]
98
+ js_files.each do |file|
99
+ file.sub! blocks_dir.to_s + '/', ''
100
+ parts = file.split('/')
101
+ level, block, filename = parts
102
+ filename = File.basename(filename, '.*')
103
+
104
+ t[level] ||= {}
105
+ block_def = t[level][block] ||= {elements: {}}
106
+ block_def[:js] = true
107
+ end
108
+ end
91
109
 
92
110
  def self.is_e_file(file)
93
111
  file.start_with? ELEMENT_FILE_PREFIX
@@ -1,3 +1,3 @@
1
1
  module RailsBlocks
2
- VERSION = "0.9.0.beta.1".freeze
2
+ VERSION = "0.9.0.beta.2".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.1
4
+ version: 0.9.0.beta.2
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-19 00:00:00.000000000 Z
11
+ date: 2023-07-26 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails