rails_blocks 0.9.0.beta.1 → 0.9.0.beta.3

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: 72743d32fb1021d78a8a6bf364fe91d9312a64dffb304d3fcbf6d37d0035d1ad
4
+ data.tar.gz: 6da5a24ea6b1488d89318510767829f712d9e231ad6272d953a52c9c4b40ca25
5
5
  SHA512:
6
- metadata.gz: ed545d3e344a507e4c30cbd7b14bee0186e464e9a54c60d8f4498557607bec1bc1df142eefcfa9d37039f254cb08e5ab7cc0863123d6d4363a9a43480af58133
7
- data.tar.gz: 6f95e004db9ef7883bf17f41bd36fd226b3c7659ae3b5e85ae975c3dd6f63fcafe093de2674312a12ad915f8fcbc2b50c2ae4197bbbcbbbc9c1d03828cec5be6
6
+ metadata.gz: 354c470d345eb8b99c349974ad7f217e648962ac13505fd14a053aa380ca2450a4300ddc02f4f7b0b728514888cfd2c8a8beaf88e556604ec1c11e047a42f48f
7
+ data.tar.gz: 9e954a5d55cbad6f46b521b044707d66fcdd5f13bd4344c18a20ba89b6234467bb59c99ce7720985a98573a4d2393cf8091723dfff99383dc1b13ae66ddbb482
@@ -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, js_ext: block_js_ext(context_block, 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
@@ -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
@@ -30,6 +30,16 @@ 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
39
+
40
+ def block_js_ext(b_name, level)
41
+ return Path.tree.dig(level, b_name, :js_ext)
42
+ end
33
43
 
34
44
  def element_template(b_name, e_name, options = {})
35
45
  options[:levels].reverse.each do |level|
@@ -41,7 +51,6 @@ module RailsBlocks
41
51
  end
42
52
 
43
53
  private
44
-
45
54
  def mod(options)
46
55
  return '' unless options[:mods] && !options[:mods].empty?
47
56
  mod_class(*options[:mods].first)
@@ -63,31 +72,48 @@ module RailsBlocks
63
72
 
64
73
  def self.file_tree
65
74
  t = {}
66
- files = Dir["#{blocks_dir}/**/*#{RailsBlocks.config.template_engine}"]
75
+ engine_ext = RailsBlocks.config.template_engine
76
+ files = Dir["#{blocks_dir}/**/*#{engine_ext}"]
67
77
  files.each do |file|
68
78
  file.sub! blocks_dir.to_s + '/', ''
69
- file.sub! '.html' + RailsBlocks.config.template_engine, ''
79
+ file.sub! '.html' + engine_ext, ''
70
80
 
71
81
  parts = file.split('/')
72
- filename = File.basename(file, RailsBlocks.config.template_engine)
82
+ filename = File.basename(file, engine_ext)
73
83
  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: {}}
84
+ # p filename
85
+ level, block = parts
86
+ t[level] ||= {}
87
+ block_def = (t[level][block] ||= {elements: {}})
81
88
 
82
89
  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
90
+ block_def[:elements][get_e_name(filename)] ||= {}
91
+ block_def[:elements][get_e_name(filename)][get_e_mod(filename)] = file
85
92
  else
86
- t[template[:level]][template[:block]][get_b_mod(filename)] = file
93
+ block_def[get_b_mod(filename)] = file
87
94
  end
88
95
  end
96
+ add_js(t)
89
97
  t.with_indifferent_access.freeze
90
98
  end
99
+
100
+ def self.add_js(t)
101
+ exts = RailsBlocks.config.js_exts.join(',')
102
+ js_files = Dir["#{blocks_dir}/**/*.{#{exts}}"]
103
+ js_files.each do |file|
104
+ file.sub! blocks_dir.to_s + '/', ''
105
+ parts = file.split('/')
106
+ level, block, filename = parts
107
+ ext = File.extname(filename)
108
+ filename = File.basename(filename, '.*')
109
+
110
+ t[level] ||= {}
111
+ block_def = t[level][block] ||= {elements: {}}
112
+ block_def[:js] = true
113
+ block_def[:js_ext] = ext[1..-1]
114
+ end
115
+ p t
116
+ end
91
117
 
92
118
  def self.is_e_file(file)
93
119
  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.3".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.3
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-08-14 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