klenod-build 0.0.18 → 0.0.20

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
  SHA256:
3
- metadata.gz: b36ee8205987d239a6301d55da7f4ef92548303139d04b5bbc2246ba6e94e8e3
4
- data.tar.gz: 8f6db6e13f72e4b290b91d115df9e38e8e907100db677baea5a5fec047bc6ae0
3
+ metadata.gz: 9bbeb7b858f12c3e373b4ddfc2a1d1c097048c84a24bf62babdd9b6abfad0903
4
+ data.tar.gz: 743d7dbbb2850cb175e0ba54dafd2989fd66a2c7ad653338d989f7953a6b50e6
5
5
  SHA512:
6
- metadata.gz: d9572bdc8295bfa42c28a88057e6625d1b105cfb8b7c9f51bc7d426ffb0e090c472237f86f549258da64b1095931921e5259a78a41050590b4d67254c92590c5
7
- data.tar.gz: e4b49528fe297b00c61d9f45bd8b780e88d485c9c3c4e1f37c1a28ce63ee128af0c64bccdaa68567197f0aa5beae51f568fd4371cb4d4a273c82ca7204a73b19
6
+ metadata.gz: 39651b21e98ac61f0f4f1e2f014f036a815b317d21107b6422d20767a6e0117227f640ad19c1436251a58b8c4a1e7b7d8c2c52b26776b0ce28e6d9a8a0199332
7
+ data.tar.gz: 1d4c523e9fff5640b5bf724067c924bfc8f869aca77633e5566388de5365ec6d114cf92972b5737a2067f8ac4d2064911c4df8f9e3d0115bd8839a0829d1a78b
@@ -46,9 +46,12 @@ module Klenod
46
46
  end
47
47
 
48
48
  def self.normalize_prop_key(key)
49
- return key if key.is_a?(Symbol) && !key.to_s.include?("-")
49
+ return key if key.is_a?(Symbol)
50
50
 
51
- key.to_s.tr("-", "_").to_sym
51
+ name = key.to_s
52
+ return key if name.include?("-")
53
+
54
+ name.to_sym
52
55
  end
53
56
 
54
57
  def self.collect_class_values(classes, value)
@@ -89,7 +89,10 @@ module Klenod
89
89
 
90
90
  index += name.length
91
91
  index += 1 while source[index]&.match?(/\s/)
92
- return nil unless source[index] == "="
92
+ unless source[index] == "="
93
+ pairs << [name, "true"]
94
+ next
95
+ end
93
96
 
94
97
  index += 1
95
98
  index += 1 while source[index]&.match?(/\s/)
@@ -114,14 +117,14 @@ module Klenod
114
117
  when "(", "[", "{" then depth += 1
115
118
  when ")", "]", "}" then depth -= 1
116
119
  when " ", "\t"
117
- break if depth.zero? && source[index..].match?(/\A\s+[-:@#\w.]+\s*=/)
120
+ break if depth.zero? && attribute_boundary?(source[index..])
118
121
  end
119
122
  end
120
123
  index += 1
121
124
  end
122
125
 
123
126
  value = source[value_start...index].strip
124
- return nil if value.empty? || depth.negative? || quote
127
+ return nil if value.empty? || depth.negative? || quote || !Ripper.sexp(value)
125
128
 
126
129
  pairs << [name, value]
127
130
  end
@@ -129,6 +132,23 @@ module Klenod
129
132
  pairs
130
133
  end
131
134
 
135
+ def attribute_boundary?(remaining_source)
136
+ attribute_sequence?(remaining_source)
137
+ end
138
+
139
+ def attribute_sequence?(source)
140
+ source = source.lstrip
141
+ name = source.match(/\A[-:@#\w.]*\w[-:@#\w.]*/)&.to_s
142
+ return false unless name
143
+ return false if %w[true false nil].include?(name)
144
+
145
+ rest = source[name.length..]
146
+ return true if rest.empty? || rest.lstrip.start_with?("=")
147
+ return false unless rest.start_with?(" ", "\t")
148
+
149
+ attribute_sequence?(rest)
150
+ end
151
+
132
152
  def literal_class_names_from_old_attributes(source)
133
153
  parsed = ::Haml::AttributeParser.parse(source)
134
154
  return [] unless parsed&.key?("class")
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Klenod
4
4
  module Build
5
- VERSION = "0.0.18"
5
+ VERSION = "0.0.20"
6
6
  end
7
7
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: klenod-build
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.18
4
+ version: 0.0.20
5
5
  platform: ruby
6
6
  authors:
7
7
  - Andrés Alin
@@ -15,14 +15,14 @@ dependencies:
15
15
  requirements:
16
16
  - - '='
17
17
  - !ruby/object:Gem::Version
18
- version: 0.0.18
18
+ version: 0.0.20
19
19
  type: :runtime
20
20
  prerelease: false
21
21
  version_requirements: !ruby/object:Gem::Requirement
22
22
  requirements:
23
23
  - - '='
24
24
  - !ruby/object:Gem::Version
25
- version: 0.0.18
25
+ version: 0.0.20
26
26
  - !ruby/object:Gem::Dependency
27
27
  name: async
28
28
  requirement: !ruby/object:Gem::Requirement
@@ -46,7 +46,7 @@ dependencies:
46
46
  version: 0.95.1
47
47
  - - "<"
48
48
  - !ruby/object:Gem::Version
49
- version: 0.104.0
49
+ version: 0.106.0
50
50
  type: :runtime
51
51
  prerelease: false
52
52
  version_requirements: !ruby/object:Gem::Requirement
@@ -56,7 +56,7 @@ dependencies:
56
56
  version: 0.95.1
57
57
  - - "<"
58
58
  - !ruby/object:Gem::Version
59
- version: 0.104.0
59
+ version: 0.106.0
60
60
  - !ruby/object:Gem::Dependency
61
61
  name: base64
62
62
  requirement: !ruby/object:Gem::Requirement