rails_blocks 0.9.0.beta.1 → 0.9.0.beta.3
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 +4 -4
- data/app/helpers/block_helper.rb +19 -8
- data/lib/rails_blocks/configuration.rb +2 -0
- data/lib/rails_blocks/path.rb +40 -14
- data/lib/rails_blocks/version.rb +1 -1
- metadata +2 -3
- data/rails_blocks-0.7.11.gem +0 -0
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 72743d32fb1021d78a8a6bf364fe91d9312a64dffb304d3fcbf6d37d0035d1ad
|
4
|
+
data.tar.gz: 6da5a24ea6b1488d89318510767829f712d9e231ad6272d953a52c9c4b40ca25
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 354c470d345eb8b99c349974ad7f217e648962ac13505fd14a053aa380ca2450a4300ddc02f4f7b0b728514888cfd2c8a8beaf88e556604ec1c11e047a42f48f
|
7
|
+
data.tar.gz: 9e954a5d55cbad6f46b521b044707d66fcdd5f13bd4344c18a20ba89b6234467bb59c99ce7720985a98573a4d2393cf8091723dfff99383dc1b13ae66ddbb482
|
data/app/helpers/block_helper.rb
CHANGED
@@ -133,10 +133,14 @@ module BlockHelper
|
|
133
133
|
private
|
134
134
|
def current_bem_data
|
135
135
|
data = {}
|
136
|
-
|
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
|
-
|
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
|
-
|
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
|
data/lib/rails_blocks/path.rb
CHANGED
@@ -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
|
-
|
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' +
|
79
|
+
file.sub! '.html' + engine_ext, ''
|
70
80
|
|
71
81
|
parts = file.split('/')
|
72
|
-
filename = File.basename(file,
|
82
|
+
filename = File.basename(file, engine_ext)
|
73
83
|
filename = File.basename(filename, '.html')
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
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
|
-
|
84
|
-
|
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
|
-
|
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
|
data/lib/rails_blocks/version.rb
CHANGED
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.
|
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-
|
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
|
data/rails_blocks-0.7.11.gem
DELETED
Binary file
|