html-to-css 0.1.5 → 0.1.10

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: 5c92c0200e7312d8c99fc2526c4a6193c46fc0a9
4
- data.tar.gz: 17138098f5955529a8ffb38e0394588462974baa
2
+ SHA256:
3
+ metadata.gz: 315de96a3d972029860b987b08f1b169ae7205be9a674074bf451b7d5b2391d6
4
+ data.tar.gz: cd812fc610fd26d6828da99c4458e7b54ee3ccc7f9f62a455ec28e0a04fb7b80
5
5
  SHA512:
6
- metadata.gz: 7b76982fb7b99e4a593c9dc5adb0aacf0176169e8210048ca0987e0fc296b57d16621064ca62a866a0ae0f37e5cd4638ebb90554cf02b95238ae80968571fdb3
7
- data.tar.gz: cea7491cb0a501326aada04427f88b4d3619b7b4d10e01a013aa6476c46c9bcc4bdd4e70cc17eb653ae52be46a5372d0ccd39d9a00bd7cf9c5d4c086661d6909
6
+ metadata.gz: d4bf07e1e56c15d669b353a446b76f0f64dce5c4b3dd19c510665f1a0750c80c8ca8a5d805a7d079be382d7917b00a0a66b50696ccb084ba5cc8bf04e418721e
7
+ data.tar.gz: d64016c0d5b3c814e17bdb105676abe106036b4387706b9e14bbfc2273789b636806d73e25b8632fea0a317bead4ef234cedd1353146944a36cff2b517e199f1
Binary file
data.tar.gz.sig CHANGED
Binary file
@@ -4,37 +4,52 @@
4
4
 
5
5
  require 'rexle'
6
6
 
7
- class String
8
7
 
9
- def to_h()
10
- Hash[self.gsub(/\n/,'').split(/;\s*/).map{|x| x.split(/:/,2).map(&:strip)}]
8
+ module CSSHelper
9
+ def self.all_background_transparent(s)
10
+ s.gsub(/rgba[^\)]+\)/, 'transparent')
11
+ end
12
+ end
13
+
14
+ module StringHelper
15
+
16
+ refine String do
17
+
18
+ def to_h()
19
+ Hash[
20
+ self.gsub(/\n/,'').split(/;\s*/).map{|x| x.split(/:/,2).map(&:strip)}
21
+ ]
22
+ end
23
+
11
24
  end
12
25
  end
13
26
 
14
27
  class HtmlToCss
15
28
 
29
+ using StringHelper
30
+
16
31
  attr_accessor :elements
17
32
 
18
- def initialize(options={})
33
+ def initialize(s=nil, rand_color: true, file: nil)
19
34
 
20
- opt = {rand_color: true, filename: nil}.merge options
21
- filename = opt[:filename]
22
- @rand_color = opt[:rand_color]
35
+ @rand_color = rand_color
23
36
 
24
- if filename then
37
+ if s then
38
+ @doc = Rexle.new s
39
+ elsif file
25
40
 
26
- @doc = Rexle.new File.read(filename)
41
+ @doc = Rexle.new File.read(file)
27
42
 
28
43
  else
29
44
 
30
45
  a = Dir.glob("*.html")
31
46
  @doc = Rexle.new File.read(a.pop)
32
- a.each {|file| merge(@doc, Rexle.new(File.read(file)).root ) }
47
+ a.each {|f| merge(@doc, Rexle.new(File.read(f)).root ) }
33
48
  end
34
49
 
35
50
  @selectors = []
36
- @nocss = ['head']
37
- @nolayoutcss = ['ul li ul', 'p a', 'div div \w+']
51
+ @nocss = %i(head script)
52
+ @nolayoutcss = ['ul>li>a', 'ul>li>ul', 'p>a', 'div>div>\w+', 'article']
38
53
  @css = []
39
54
 
40
55
  @elements = {
@@ -53,8 +68,12 @@ class HtmlToCss
53
68
  html: "background-color: :color;",
54
69
  li: "background-color: :color;",
55
70
  p: "background-color: :color;",
56
- ul: "background-color: :color;"
71
+ ul: "background-color: :color;",
72
+ article: "background-color: :color;",
73
+ section: "background-color: :color;",
74
+ footer: "background-color: :color;"
57
75
  }
76
+
58
77
  end
59
78
 
60
79
  def to_css()
@@ -84,7 +103,7 @@ class HtmlToCss
84
103
  scan_to_css(type, doc.root)
85
104
  @layout_selectors = @selectors.clone
86
105
  @css.join "\n"
87
- end
106
+ end
88
107
 
89
108
  def merge(mdoc, e, axpath=[], prev_tally=[])
90
109
 
@@ -118,13 +137,14 @@ class HtmlToCss
118
137
 
119
138
  def scan_to_css(type, e, indent='', parent_selector='', &blk)
120
139
 
121
- return if @nocss.include? e.name
140
+ return if @nocss.include? e.name.to_sym
122
141
  h = e.attributes
123
142
 
124
143
  if h.has_key?(:id) then
125
144
  selector = '#' + h[:id]
126
145
  else
127
- selector = (parent_selector + ' ' + e.name).strip
146
+ ps = parent_selector
147
+ selector = (ps.empty? ? e.name : ps + '>' + e.name).strip
128
148
  end
129
149
 
130
150
  return if @nolayoutcss.detect {|x| selector =~ /#{x}/ } and type == :layout
@@ -134,8 +154,11 @@ class HtmlToCss
134
154
  @selectors << selector
135
155
 
136
156
  if @elements.has_key?(e.name.to_sym) then
137
- c = @rand_color ? "%06x" % (rand * 0xffffff) : 'a5f'
138
- attributes = @elements[e.name.to_sym].strip.sub(':color','#' + c).to_h
157
+ #c = @rand_color ? "#%06x" % (rand * 0xffffff) : '#a5f'
158
+ c = @rand_color ? "rgba(%s,%s,%s, 0.3)" % 3.times.map{rand(255)} \
159
+ : '#a5f'
160
+
161
+ attributes = @elements[e.name.to_sym].strip.sub(':color', c).to_h
139
162
  else
140
163
  attributes = {}
141
164
  end
@@ -162,8 +185,11 @@ class HtmlToCss
162
185
  parent_selector = selector unless selector == 'html'
163
186
 
164
187
  indent += ' '
188
+
165
189
  e.elements.each do |x|
190
+
166
191
  scan_to_css type, x, indent, parent_selector
192
+
167
193
  end
168
194
  end
169
195
 
@@ -189,4 +215,4 @@ end
189
215
 
190
216
  if __FILE__ == $0 then
191
217
  css = HtmlToCss.new('index.html').to_css
192
- end
218
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: html-to-css
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.5
4
+ version: 0.1.10
5
5
  platform: ruby
6
6
  authors:
7
7
  - James Robertson
@@ -10,45 +10,55 @@ bindir: bin
10
10
  cert_chain:
11
11
  - |
12
12
  -----BEGIN CERTIFICATE-----
13
- MIIDljCCAn6gAwIBAgIBATANBgkqhkiG9w0BAQUFADBIMRIwEAYDVQQDDAlnZW1t
14
- YXN0ZXIxHjAcBgoJkiaJk/IsZAEZFg5qYW1lc3JvYmVydHNvbjESMBAGCgmSJomT
15
- 8ixkARkWAmV1MB4XDTEzMTAwOTE5MjE0MloXDTE0MTAwOTE5MjE0MlowSDESMBAG
16
- A1UEAwwJZ2VtbWFzdGVyMR4wHAYKCZImiZPyLGQBGRYOamFtZXNyb2JlcnRzb24x
17
- EjAQBgoJkiaJk/IsZAEZFgJldTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC
18
- ggEBAMIRrkLSoh3Hau7akxq/Ip+gGvxofjOaAuAvb17nzQd2jP15OF3VSg1WPRWM
19
- 5huY092hzLs3xAg/DlMOrJMn8oCGoWIC2xq8SLq2ZbN2SMHorASu8qDfV+7u+GOT
20
- VX7I/SdbCJWjaOCcPRzQTowbPewwIZhRoQBF63mvOu/S3ALnIwtCqVcibIbQv8A+
21
- B1fdW2EHtBIj2woGN8LRsHVCkgqksjEKScn9eDT3eRo48/1Ty504Bya4FYnMtLkR
22
- bNfpVgCdC/06po0N+qT0poGqm/3MUbjwNdnbbkas+Enbbdnor/J+DLIIydGC8wMk
23
- U+gEnN97q7/ixlBUoOilDItKDKUCAwEAAaOBijCBhzAJBgNVHRMEAjAAMAsGA1Ud
24
- DwQEAwIEsDAdBgNVHQ4EFgQUo1m/FTIkIN0ophoYsMrOV/cjUzQwJgYDVR0RBB8w
25
- HYEbZ2VtbWFzdGVyQGphbWVzcm9iZXJ0c29uLmV1MCYGA1UdEgQfMB2BG2dlbW1h
26
- c3RlckBqYW1lc3JvYmVydHNvbi5ldTANBgkqhkiG9w0BAQUFAAOCAQEAHnlla+EY
27
- fQsDxKvNAAiO+M6ZnRpQ8Pqy75L0youYyJHktteFSAnDoTX+5ZFXfL/bQGab/9Zu
28
- T5vOzA055rw5Wo2ZgxtQ1JRflLDptnTDFX3ofPzVWO9BQeiBrMefCrkVWzWwEr+4
29
- SONZhRs6P78RH2fmwwHx45eo/ZO3VyK8dbmDEISg3sK31F3q8ezpTYDn0Gq1dXxX
30
- 7nE7EwfgX7M4rp8vgET+FkhJeFQIc4g2NEJZL+2Dq9W3FKaPN+wRSxPGNHjlckAw
31
- n9X5YRMwlJkR8AjTM6rhQpKsbN0jqpzYjglj02VuBO/YASqBM1gV6sKxMtAbdYam
32
- 6yGZgJtO0psElQ==
13
+ MIIEXjCCAsagAwIBAgIBATANBgkqhkiG9w0BAQsFADAsMSowKAYDVQQDDCFnZW1t
14
+ YXN0ZXIvREM9amFtZXNyb2JlcnRzb24vREM9ZXUwHhcNMjAwNzEwMTA0ODMyWhcN
15
+ MjEwNzEwMTA0ODMyWjAsMSowKAYDVQQDDCFnZW1tYXN0ZXIvREM9amFtZXNyb2Jl
16
+ cnRzb24vREM9ZXUwggGiMA0GCSqGSIb3DQEBAQUAA4IBjwAwggGKAoIBgQCsnbV9
17
+ iXTJ5qFo58IYXu+lfM1X8aNNTaMBEYbNXS90l1GYeHRo2CDG9l7U1C5fI9bOtXuw
18
+ FGxZEVL/rmvzoJ4iwwxQnuqqWVev/ZeEGSknCcCk0uXEZJorq2MYwG/oV72WcgkD
19
+ f+YRtHU36B4Gv45THmOUPWvbyv/a8/xafc291mQ7gN1zNC5vvso6xFNfDLCWq4nt
20
+ L78KXrSD9dvcSYHkx98fBVBYqJJFrlvHsELhaTlBe2sSGzt/jju6vkwaivSBf8s6
21
+ xi1v+3SdD5tkq7D6Za1oRhbnn+dy1whid+AdshLfAj4dNj5MJnfe/ZYyKujj4pbc
22
+ yI38Mz3lynC37Uu72DOJVZzlP/7wV64WNIE4ADJ1G08BEvDt5TKnKtdqZjkFvNfH
23
+ vR01oppHdCSw3t67fXNTQ2zOLVE0iG+Uz8RpxP8vbRpYhGz28Ng0D/yqE6AdS9s6
24
+ vwp+ySmEWN1oLbn2QNKcfcjBHtzuiRXt2W+ymH+xAl4B+9mnR0dHuGsrSSkCAwEA
25
+ AaOBijCBhzAJBgNVHRMEAjAAMAsGA1UdDwQEAwIEsDAdBgNVHQ4EFgQUmmLPRqL1
26
+ qBREE7/GoCBSA6VpiwcwJgYDVR0RBB8wHYEbZ2VtbWFzdGVyQGphbWVzcm9iZXJ0
27
+ c29uLmV1MCYGA1UdEgQfMB2BG2dlbW1hc3RlckBqYW1lc3JvYmVydHNvbi5ldTAN
28
+ BgkqhkiG9w0BAQsFAAOCAYEAgJdiEoN8bkBv93k7ApN5UVZpHGwEahp74kzQbzYl
29
+ 8BqUQKq0TkrxETcoadR7znI6oSnxxEbo7oGb7NsmIFe/CBke+y3YwTrnDTsLliOh
30
+ VElqCnUNVWcdnB13t8mrTp5YlsT3TbXb92qUKannJ+dP4a/jfDVfhyEbolRxHP6f
31
+ Dijt0eccGBf0Ay5RPdBlq79o9zRp9A5blTnF/KyQuy93wzBgClgV8qpwxnWCI3+l
32
+ QjAot0vxs1FoA9yG/0p8J+0kUyGO4/QQpdpJPujktofSYG9I7YzS52pWi3gwY1DB
33
+ P1VnK8PWvwSHsjc28wL97f4GjRgcutkDp+B9sueDNLUdUfzfgyQiyFteClutTLtR
34
+ EVy8/18sKX5zH+twpDhOIJiPdAzEoLgnyAwXxKJACzbS/zJ/jQnArJnPmsae7Qh7
35
+ RXzNbBKUJMbBruvpkMfMEwSIxsSWWBtVBadf8+Fdia8+8CHXA586gtxhaaecM6cd
36
+ VTIqqQ460pE389pQ9ggwXUiZ
33
37
  -----END CERTIFICATE-----
34
- date: 2013-10-11 00:00:00.000000000 Z
38
+ date: 2020-07-10 00:00:00.000000000 Z
35
39
  dependencies:
36
40
  - !ruby/object:Gem::Dependency
37
41
  name: rexle
38
42
  requirement: !ruby/object:Gem::Requirement
39
43
  requirements:
44
+ - - "~>"
45
+ - !ruby/object:Gem::Version
46
+ version: '1.4'
40
47
  - - ">="
41
48
  - !ruby/object:Gem::Version
42
- version: '0'
49
+ version: 1.4.12
43
50
  type: :runtime
44
51
  prerelease: false
45
52
  version_requirements: !ruby/object:Gem::Requirement
46
53
  requirements:
54
+ - - "~>"
55
+ - !ruby/object:Gem::Version
56
+ version: '1.4'
47
57
  - - ">="
48
58
  - !ruby/object:Gem::Version
49
- version: '0'
59
+ version: 1.4.12
50
60
  description:
51
- email: james@r0bertson.co.uk
61
+ email: james@jamesrobertson.eu
52
62
  executables: []
53
63
  extensions: []
54
64
  extra_rdoc_files: []
@@ -66,16 +76,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
66
76
  requirements:
67
77
  - - ">="
68
78
  - !ruby/object:Gem::Version
69
- version: '0'
79
+ version: 2.1.2
70
80
  required_rubygems_version: !ruby/object:Gem::Requirement
71
81
  requirements:
72
82
  - - ">="
73
83
  - !ruby/object:Gem::Version
74
84
  version: '0'
75
85
  requirements: []
76
- rubyforge_project:
77
- rubygems_version: 2.0.0.rc.2
86
+ rubygems_version: 3.0.3
78
87
  signing_key:
79
88
  specification_version: 4
80
- summary: html-to-css
89
+ summary: Generates CSS from HTML passed into it.
81
90
  test_files: []
metadata.gz.sig CHANGED
Binary file