oreorenasass 3.4.12 → 3.4.13

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.
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