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 
     |