bemer 0.3.0 → 0.5.0

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.
@@ -1,74 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'active_support/core_ext/object/blank'
4
-
5
- module Bemer
6
- class MixinList
7
- def initialize(mix)
8
- @mix = mix
9
- @mixins = nil
10
- end
11
-
12
- def to_a
13
- build_mixins
14
- end
15
-
16
- def to_s
17
- @to_s ||= to_a.join(' ')
18
- end
19
-
20
- protected
21
-
22
- attr_reader :mixins
23
-
24
- def build_mixins
25
- return mixins unless mixins.nil?
26
-
27
- mix = @mix.instance_of?(Hash) ? build_mixins_from_hash : build_mixins_from_array
28
-
29
- @mixins = mix.flatten.reject(&:blank?).uniq
30
- end
31
-
32
- def build_mixin(mixin)
33
- return mixin.split if mixin.instance_of?(String)
34
-
35
- case mixin
36
- when Symbol then Bemer.bem_class(mixin)
37
- when Array then build_mixin_from_array(mixin)
38
- when Hash then build_mixin_from_hash(mixin)
39
- end
40
- end
41
-
42
- def build_mixin_from_hash(mixin)
43
- mixin.map do |block, element|
44
- next Bemer.bem_class(block, element) unless element.instance_of?(Array)
45
-
46
- element.map { |elem| Bemer.bem_class(block, elem) }
47
- end
48
- end
49
-
50
- def build_mixin_from_array(mixin)
51
- block, element = *mixin
52
-
53
- return Bemer.bem_class(block, element) unless element.instance_of?(Array)
54
-
55
- element.map { |elem| Bemer.bem_class(block, elem) }
56
- end
57
-
58
- def build_mixins_from_hash
59
- @mix.map do |mixin|
60
- next if mixin.blank?
61
-
62
- build_mixin(mixin)
63
- end
64
- end
65
-
66
- def build_mixins_from_array
67
- Array(@mix).map do |mixin|
68
- next if mixin.blank?
69
-
70
- mixin.instance_of?(Array) ? mixin.map { |mix| build_mixin(mix) } : build_mixin(mixin)
71
- end
72
- end
73
- end
74
- end
@@ -1,99 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- RSpec.describe Bemer::MixinList do
4
- describe 'mixins from an empty params' do
5
- subject(:mixin_list) { described_class.new([nil, '', {}]) }
6
-
7
- it 'returns an empty string' do
8
- expect(mixin_list.to_s).to be_empty
9
- end
10
-
11
- it 'returns an empty array' do
12
- expect(mixin_list.to_a).to be_empty
13
- end
14
- end
15
-
16
- describe 'mixins from an empty array' do
17
- subject(:mixin_list) { described_class.new([]) }
18
-
19
- it 'returns an empty string' do
20
- expect(mixin_list.to_s).to be_empty
21
- end
22
-
23
- it 'returns an empty array' do
24
- expect(mixin_list.to_a).to be_empty
25
- end
26
- end
27
-
28
- describe 'mixins from an empty hash' do
29
- subject(:mixin_list) { described_class.new({}) }
30
-
31
- it 'returns an empty string' do
32
- expect(mixin_list.to_s).to be_empty
33
- end
34
-
35
- it 'returns an empty array' do
36
- expect(mixin_list.to_a).to be_empty
37
- end
38
- end
39
-
40
- describe 'mixins from an array' do
41
- subject(:mixin_list) { described_class.new([:block_name, { block_name: %i[elem_name1 elem_name2] }, block: :elem]) }
42
-
43
- it 'returns mixins as a string' do
44
- expect(mixin_list.to_s).to eq 'block-name block-name__elem-name1 block-name__elem-name2 block__elem'
45
- end
46
-
47
- it 'returns mixins as an array' do
48
- expect(mixin_list.to_a).to match_array %w[block-name block-name__elem-name1 block-name__elem-name2 block__elem]
49
- end
50
- end
51
-
52
- describe 'mixins from a hash' do
53
- subject(:mixin_list) { described_class.new(block_name: [nil, :elem_name1, :elem_name2], block: :elem) }
54
-
55
- it 'returns mixins as a string' do
56
- expect(mixin_list.to_s).to eq 'block-name block-name__elem-name1 block-name__elem-name2 block__elem'
57
- end
58
-
59
- it 'returns mixins as an array' do
60
- expect(mixin_list.to_a).to match_array %w[block-name block-name__elem-name1 block-name__elem-name2 block__elem]
61
- end
62
- end
63
-
64
- describe 'mixins from a symbol' do
65
- subject(:mixin_list) { described_class.new(:block_name) }
66
-
67
- it 'returns mixins as a string' do
68
- expect(mixin_list.to_s).to eq 'block-name'
69
- end
70
-
71
- it 'returns mixins as an array' do
72
- expect(mixin_list.to_a).to match_array %w[block-name]
73
- end
74
- end
75
-
76
- describe 'mixins from a string' do
77
- subject(:mixin_list) { described_class.new('block_name block__elem') }
78
-
79
- it 'returns mixins as a string' do
80
- expect(mixin_list.to_s).to eq 'block_name block__elem'
81
- end
82
-
83
- it 'returns mixins as an array' do
84
- expect(mixin_list.to_a).to match_array %w[block_name block__elem]
85
- end
86
- end
87
-
88
- describe 'mixins from a hash with string values' do
89
- subject(:mixin_list) { described_class.new('BlockName' => [nil, 'ElemName', :elem_name], 'Block' => 'ElemName') }
90
-
91
- it 'returns mixins as a string' do
92
- expect(mixin_list.to_s).to eq 'BlockName BlockName__ElemName BlockName__elem-name Block__ElemName'
93
- end
94
-
95
- it 'returns mixins as an array' do
96
- expect(mixin_list.to_a).to match_array %w[BlockName BlockName__ElemName BlockName__elem-name Block__ElemName]
97
- end
98
- end
99
- end
@@ -1,21 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- RSpec.shared_examples 'an HTML entity tree builder method' do |*params|
4
- it 'creates an HTML tree' do # rubocop:disable RSpec/ExampleLength
5
- pretty_html = params.pop if params[-1].is_a?(String)
6
- pretty_html = html if pretty_html.nil? && defined?(html)
7
- compressed_html = pretty_html.to_s.strip.gsub(/>\s+/, '>')
8
-
9
- html_tree =
10
- if defined?(html_entity_tree)
11
- html_entity_tree
12
- else
13
- options = params.extract_options!
14
- options[:content] = content if defined?(content) && !options.key?(:content)
15
-
16
- html_entity_tree_builder_method.call(*params, options)
17
- end
18
-
19
- expect(html_tree).to eq compressed_html
20
- end
21
- end