oreorenasass 3.4.12 → 3.4.13

Sign up to get free protection for your applications and to get access to all the features.
Files changed (4) hide show
  1. checksums.yaml +4 -4
  2. data/VERSION +1 -1
  3. data/lib/sass/tree/root_node.rb +44 -15
  4. metadata +1 -1
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: b8baffd1e4296f5b06cba21579d113a04ee110fc
4
- data.tar.gz: 4c01f1f9eb215d73ee64e8f1cfe20b162b1455c8
3
+ metadata.gz: bc99e1d35d50bcf1f0bc6c4141e6939dac3bd08a
4
+ data.tar.gz: f9771f207f9b9e0a4026503a1bcdcb927fa4d37e
5
5
  SHA512:
6
- metadata.gz: 1e8bff0959e4029dffa863ed37d086838862bd66dd3a99c258a5b94652ddc1f07e253c6c8eff63c9fe037948bd7b36bd96ff662f13821970b96eea58c4d44321
7
- data.tar.gz: 05c5abf342a33181eba4793961c6839076c1dca2eb22e375c8364d803136e162694d59ff2a7913cbb653ba5484150332873b3071ca2d6ed87c90e99667725f4a
6
+ metadata.gz: d5ea4d649d5d8fe6fecd89ab8a4867c712adc56a888f1c773417cc23e3287f100ff1d47357fe23d8e69ec00087b45ee63f4bd2dc995f42f2b0b76fd512bfd9de
7
+ data.tar.gz: 5b4002d6cae01f01188ec93dc13e7b3e040c5200b53f519455ff189c2ab6665a9317857631d40fac97cd602ef3b09a0a6edb5a6affd79f1712a553147a04872c
data/VERSION CHANGED
@@ -1 +1 @@
1
- 3.4.12
1
+ 3.4.13
@@ -21,26 +21,55 @@ module Sass
21
21
  Visitors::CheckNesting.visit(result) # Check again to validate mixins
22
22
  result, extends = Visitors::Cssize.visit(result)
23
23
  Visitors::Extend.visit(result, extends)
24
- #extended_result(result.to_s)
25
- p = result.to_s
26
- File.open('/tmp/hoge', 'w') do |f|
27
- f.puts p
28
- end
29
- p
24
+ extended_result(result.to_s)
30
25
  end
31
26
 
32
27
  private
33
28
 
34
- def extended_result(result)
35
- File.open('/tmp/hoge', 'w') do |f|
36
- f.puts result.split('/*').map { |x|
37
- a, b = x.split("\n", 2)
38
- m = a.match(/\/app\/assets\/stylesheets\/([^. \/]+)\./)
39
- next nil unless m
40
- [m[1], b.split("\n")[0].strip[0...-1]]
41
- }.compact.to_s
29
+ def calculate_selector(selector, name)
30
+ class_prefix = calculate_class_prefix(name)
31
+ doc = CSSPool.CSS("#{selector} {}")
32
+ replace_class(doc, class_prefix)
33
+ doc_to_selector(doc)
34
+ end
35
+
36
+ def calculate_class_prefix(name)
37
+ names = name.split('/')
38
+ names = names[0...(names.index { |x| x.start_with?('_') } || -1)]
39
+ return '' if names.empty?
40
+ "#{names.join('__')}___"
41
+ end
42
+
43
+ def replace_class(doc, prefix)
44
+ doc.rule_sets[0].selectors.map do |selector|
45
+ selector.simple_selectors.each do |simple_selector|
46
+ simple_selector.additional_selectors.each do |additional_selector|
47
+ case additional_selector
48
+ when CSSPool::Selectors::Class
49
+ additional_selector.name = "#{prefix}#{additional_selector.name}"
50
+ when CSSPool::Selectors::PseudoClass
51
+ d = CSSPool.CSS("#{additional_selector.extra} {}")
52
+ replace_class(d, prefix)
53
+ additional_selector.extra = doc_to_selector(d)
54
+ end
55
+ end
56
+ end
42
57
  end
43
- result
58
+ end
59
+
60
+ def doc_to_selector(doc)
61
+ doc.to_css.split("\n")[0][0...-1].strip.gsub('\00002e', '.')
62
+ end
63
+
64
+ def extended_result(result)
65
+ result.split('/*').map { |x|
66
+ next x if x.strip.empty?
67
+ a, b = x.split("\n",q 2)
68
+ m = a.match(/\/app\/assets\/stylesheets\/([^. ]+)\./)
69
+ next "#{a}\n#{b}" unless m
70
+ selector = calculate_selector(b.split("\n")[0].strip[0...-1].strip, m[1])
71
+ "#{a}\n#{selector} {\n#{b.split("\n", 2)[1]}"
72
+ }.join('/*')
44
73
  end
45
74
  end
46
75
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: oreorenasass
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.4.12
4
+ version: 3.4.13
5
5
  platform: ruby
6
6
  authors:
7
7
  - Nathan Weizenbaum