hamlit 1.4.6 → 1.4.7

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 9a6fd40edd6056710c6fb7a7e571f287355eb797
4
- data.tar.gz: afbad9c5994019cf52bfd0e304a07cfe8f6ec218
3
+ metadata.gz: 3045e96b4ecfe58f815e7d1fd326c1794b03c66f
4
+ data.tar.gz: e5c45da5f9a6a2ccfab6e102c47f1d9927098d65
5
5
  SHA512:
6
- metadata.gz: b71d35469d13442cfdf812ff0fca240f592e825c5b73f30fca91b064b4332b49eff366de7fa55055f7cad58b8e0d91a5790827eba7d76bea06fd66413be597d8
7
- data.tar.gz: 56b2b3b77f0a8a8eade006c176196952934ffff5f7a29d8ea15547ab448879299b5c1b63d31d0875290e160370744c187885467f5c0a88cf04128b6d2f78f0b4
6
+ metadata.gz: 1d80b09e16c7707191fede2b060cc6c7a3f1db422ddaad0be03f3e8cbaa9b395ac04f74f4d396a781de11616bad672a61221501cac3f2d184c4be9453e6af89c
7
+ data.tar.gz: 45e2ee5c7d2f955f15e3093f0f1f87db2783e78b4baf9f1cdedcafb84568e4d5f78c85563461f845f254db80524600f6ceede60a8313d2817af3de248ab2ec79
@@ -1,3 +1,8 @@
1
+ ## v1.4.7
2
+
3
+ - Sort static old attributes by name
4
+ - Bugfix for old array attributes with class element
5
+
1
6
  ## v1.4.6
2
7
 
3
8
  - Support `!==`, `==` operator
@@ -61,8 +61,8 @@ module Hamlit
61
61
  case key
62
62
  when :id
63
63
  result[key] = [base[key], target[key]].compact.join('_')
64
- else
65
- result[key] = [base[key], target[key]].compact.map(&:to_s).sort.join(' ')
64
+ when :class
65
+ result[key] = [base[key], target[key]].flatten.compact.map(&:to_s).sort.join(' ')
66
66
  end
67
67
  else
68
68
  result[key] = base[key].nil? ? target[key] : base[key]
@@ -22,7 +22,7 @@ module Hamlit
22
22
  attrs = compile_attributes(attrs)
23
23
  attrs = join_ids(attrs)
24
24
  attrs = combine_classes(attrs)
25
- attrs = pull_class_first(attrs)
25
+ attrs = sort_attributes(attrs)
26
26
 
27
27
  if has_runtime_attribute?(attrs) && has_attr?(attrs, 'class', 'id')
28
28
  attrs = merge_runtime_attributes(attrs)
@@ -60,11 +60,6 @@ module Hamlit
60
60
  attrs
61
61
  end
62
62
 
63
- def pull_class_first(attrs)
64
- class_attrs = filter_attrs(attrs, 'class')
65
- combine_classes(class_attrs) + (attrs - class_attrs)
66
- end
67
-
68
63
  def combine_classes(attrs)
69
64
  class_attrs = filter_attrs(attrs, 'class')
70
65
  return attrs if class_attrs.length <= 1
@@ -99,6 +94,15 @@ module Hamlit
99
94
  end
100
95
  result
101
96
  end
97
+
98
+ # Sort attributes by attribute name.
99
+ # Move runtime attributes to last.
100
+ def sort_attributes(attrs)
101
+ attrs.sort_by do |(sexp, _, attr_name, _)|
102
+ next '' if sexp == :runtime
103
+ attr_name
104
+ end
105
+ end
102
106
  end
103
107
  end
104
108
  end
@@ -1,3 +1,3 @@
1
1
  module Hamlit
2
- VERSION = "1.4.6"
2
+ VERSION = "1.4.7"
3
3
  end
@@ -64,6 +64,16 @@ describe Hamlit::Engine do
64
64
  HTML
65
65
  end
66
66
 
67
+ it 'sorts static attributes by name' do
68
+ assert_render(<<-HAML, <<-HTML)
69
+ %span{ :foo => "bar", :hoge => "piyo"}
70
+ %span{ :hoge => "piyo", :foo => "bar"}
71
+ HAML
72
+ <span foo='bar' hoge='piyo'></span>
73
+ <span foo='bar' hoge='piyo'></span>
74
+ HTML
75
+ end
76
+
67
77
  describe 'runtime attributes' do
68
78
  it 'renders runtime hash attribute' do
69
79
  assert_render(<<-'HAML', <<-HTML)
@@ -111,6 +121,18 @@ describe Hamlit::Engine do
111
121
  HTML
112
122
  end
113
123
 
124
+ it 'joins attribute class and element class' do
125
+ assert_render(<<-HAML, <<-HTML)
126
+ .foo{ class: ['bar'] }
127
+ .foo{ class: ['bar', nil] }
128
+ .foo{ class: ['bar', 'baz'] }
129
+ HAML
130
+ <div class='bar foo'></div>
131
+ <div class='bar foo'></div>
132
+ <div class='bar baz foo'></div>
133
+ HTML
134
+ end
135
+
114
136
  it 'joins id with an underscore' do
115
137
  assert_render(<<-'HAML', <<-HTML)
116
138
  - val = ['a', 'b', 'c']
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: hamlit
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.4.6
4
+ version: 1.4.7
5
5
  platform: ruby
6
6
  authors:
7
7
  - Takashi Kokubun
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-06-02 00:00:00.000000000 Z
11
+ date: 2015-06-03 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: escape_utils