css_parser 1.4.7 → 1.4.8
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/lib/css_parser/parser.rb +44 -4
- data/lib/css_parser/version.rb +1 -1
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: f5f0a57b79a2c3074f6e8a4f83f9c33c86af5f8d
|
4
|
+
data.tar.gz: 70c358a8a37da0b69c7a752fdf845f5b57decaa4
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c3cb1b5bff4cf81a54a3f2ed091b8119c6c47ec3e3278e110ac2ead3da8685d7504f2affeb62d8956128c165fe1273b3c89ed25c23e18722215f0e66293d9b5a
|
7
|
+
data.tar.gz: 179f6d26055efe2340cbebc9bb551000cbe466dadae3c16ceb00708b8f3f7283f364d89d164e3509ae70d65c3c4e17d431a95627acc250411d5ab89685f44f95
|
data/lib/css_parser/parser.rb
CHANGED
@@ -187,6 +187,27 @@ module CssParser
|
|
187
187
|
end
|
188
188
|
end
|
189
189
|
|
190
|
+
# Output all CSS rules as a Hash
|
191
|
+
def to_h(media_types = :all)
|
192
|
+
out = {}
|
193
|
+
styles_by_media_types = {}
|
194
|
+
each_selector(media_types) do |selectors, declarations, specificity, media_types|
|
195
|
+
media_types.each do |media_type|
|
196
|
+
styles_by_media_types[media_type] ||= []
|
197
|
+
styles_by_media_types[media_type] << [selectors, declarations]
|
198
|
+
end
|
199
|
+
end
|
200
|
+
|
201
|
+
styles_by_media_types.each_pair do |media_type, media_styles|
|
202
|
+
ms = {}
|
203
|
+
media_styles.each do |media_style|
|
204
|
+
ms = css_node_to_h(ms, media_style[0], media_style[1])
|
205
|
+
end
|
206
|
+
out[media_type.to_s] = ms
|
207
|
+
end
|
208
|
+
out
|
209
|
+
end
|
210
|
+
|
190
211
|
# Iterate through CSS selectors.
|
191
212
|
#
|
192
213
|
# +media_types+ can be a symbol or an array of symbols.
|
@@ -424,16 +445,17 @@ module CssParser
|
|
424
445
|
# Returns a string.
|
425
446
|
def cleanup_block(block) # :nodoc:
|
426
447
|
# Strip CSS comments
|
427
|
-
block.
|
448
|
+
utf8_block = block.encode('UTF-8', 'binary', invalid: :replace, undef: :replace, replace: '')
|
449
|
+
utf8_block.gsub!(STRIP_CSS_COMMENTS_RX, '')
|
428
450
|
|
429
451
|
# Strip HTML comments - they shouldn't really be in here but
|
430
452
|
# some people are just crazy...
|
431
|
-
|
453
|
+
utf8_block.gsub!(STRIP_HTML_COMMENTS_RX, '')
|
432
454
|
|
433
455
|
# Strip lines containing just whitespace
|
434
|
-
|
456
|
+
utf8_block.gsub!(/^\s+$/, "")
|
435
457
|
|
436
|
-
|
458
|
+
utf8_block
|
437
459
|
end
|
438
460
|
|
439
461
|
# Download a file into a string.
|
@@ -539,5 +561,23 @@ module CssParser
|
|
539
561
|
@css_rules = []
|
540
562
|
@css_warnings = []
|
541
563
|
end
|
564
|
+
|
565
|
+
# recurse through nested nodes and return them as Hashes nested in
|
566
|
+
# passed hash
|
567
|
+
def css_node_to_h(hash, key, val)
|
568
|
+
hash[key.strip] = '' and return hash if val.nil?
|
569
|
+
lines = val.split(';')
|
570
|
+
nodes = {}
|
571
|
+
lines.each do |line|
|
572
|
+
parts = line.split(':', 2)
|
573
|
+
if (parts[1] =~ /:/)
|
574
|
+
nodes[parts[0]] = css_node_to_h(hash, parts[0], parts[1])
|
575
|
+
else
|
576
|
+
nodes[parts[0].to_s.strip] =parts[1].to_s.strip
|
577
|
+
end
|
578
|
+
end
|
579
|
+
hash[key.strip] = nodes
|
580
|
+
hash
|
581
|
+
end
|
542
582
|
end
|
543
583
|
end
|
data/lib/css_parser/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: css_parser
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.4.
|
4
|
+
version: 1.4.8
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Alex Dunae
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2017-02-03 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: addressable
|
@@ -56,7 +56,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
56
56
|
version: '0'
|
57
57
|
requirements: []
|
58
58
|
rubyforge_project:
|
59
|
-
rubygems_version: 2.
|
59
|
+
rubygems_version: 2.6.8
|
60
60
|
signing_key:
|
61
61
|
specification_version: 4
|
62
62
|
summary: Ruby CSS parser.
|