html-to-css 0.1.5 → 0.1.10

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