html-to-css 0.1.4 → 0.1.9

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: 7ce023ea55a86ff16fef105a2ae4c1a7338aa76a
4
- data.tar.gz: 6befdb1a8b3c493fb40b51d3e94e272e6aa82fb6
2
+ SHA256:
3
+ metadata.gz: e73eec903ba4bd2697e85053366f556fd517392a5ee2ed5aa39800ef4b4382d7
4
+ data.tar.gz: 90af4e08b9a160cc6940acb22bedc1edc75296815a9f7c0c9d40afd679d4120b
5
5
  SHA512:
6
- metadata.gz: df21b9e5cba643f151dbc83cf54b553a3e323439cc4fae9a84c029c62a3acf2fcbd3fb57278dbdb18b7bec04a0506096bc2f6d8f178b6676781e7320d3705f41
7
- data.tar.gz: 8853e230d5609db634711ccadf56e5387379eccf014bd2c433acd2a2287da283ab67c07cf6f184797a0116e8d10fc4407e7f96ef72af3aa7d18bfcff3bc59039
6
+ metadata.gz: 992c1b05ed9b75c6131304f89b57f6fcc48fedc64f95d77021b4fca816ef39a2f3edd080f4276b55df01f46c6097ad810b8c9fb9d25a1a2a71dbc57195039d31
7
+ data.tar.gz: f9ef14c9d00ca6153dd864627e17cea9f160ec3ad28b09bd3bf2753be11f5fa6f65ce411e37dba00a7f4915a83069d2aa92aa885ca39d3a5bb7535dcb5117fdf
Binary file
data.tar.gz.sig CHANGED
@@ -1,2 +1,3 @@
1
- Mq�.:����c 3ج�l9 ��)7�\�|Vo]JQsuB]R-}\[/,�т��}����qh�����s�-n�Cl E��&��j��X���O
1
+ x0�j���s����$��W�C�����O"��b�m���gk&<�t������ԝl�C�O)�`5q����iA�熊�0j ����[w6�������!r�?��Cr�/�ilv��B���b].���4{�@���x�~�
2
-
2
+ ���W�
3
+ �?���y�F���^�rKjA�fz��[���Wq7��3��X�X�x$7[y�\�M@�W��k<x����rs���\r�O*А>��_�z�Mr�� lS`�)���Y���gR_�v6��W@#S��R��n���f��]L��xj��~I,�N���@�>�l.�;a�dC�e���G��"Z��6�Г�A/��I��u��FB�)A�<I�]I�:& �@Q���2�4*Z8mS�?�o>f9����;L�˩(�ځ�m
4
+ ���?M"�&��,+"�o�oVa:�dTg� �'>$�=s��֦~�� w�=@µ�`�`.wDMv"IN!
@@ -4,33 +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(filename=nil)
33
+ def initialize(s=nil, rand_color: true, file: nil)
34
+
35
+ @rand_color = rand_color
19
36
 
20
- if filename then
37
+ if s then
38
+ @doc = Rexle.new s
39
+ elsif file
21
40
 
22
- @doc = Rexle.new File.read(filename)
41
+ @doc = Rexle.new File.read(file)
23
42
 
24
43
  else
25
44
 
26
45
  a = Dir.glob("*.html")
27
46
  @doc = Rexle.new File.read(a.pop)
28
- a.each {|file| merge(@doc, Rexle.new(File.read(file)).root ) }
47
+ a.each {|f| merge(@doc, Rexle.new(File.read(f)).root ) }
29
48
  end
30
49
 
31
50
  @selectors = []
32
51
  @nocss = ['head']
33
- @nolayoutcss = ['ul li ul', 'p a', 'div div \w+']
52
+ @nolayoutcss = ['ul>li>a', 'ul>li>ul', 'p>a', 'div>div>\w+', 'article']
34
53
  @css = []
35
54
 
36
55
  @elements = {
@@ -49,8 +68,13 @@ class HtmlToCss
49
68
  html: "background-color: :color;",
50
69
  li: "background-color: :color;",
51
70
  p: "background-color: :color;",
52
- ul: "background-color: :color;"
71
+ ul: "background-color: :color;",
72
+ article: "background-color: :color;",
73
+ section: "background-color: :color;",
74
+ footer: "background-color: :color;"
53
75
  }
76
+
77
+ @ignore_elements = %i(script)
54
78
  end
55
79
 
56
80
  def to_css()
@@ -80,7 +104,7 @@ class HtmlToCss
80
104
  scan_to_css(type, doc.root)
81
105
  @layout_selectors = @selectors.clone
82
106
  @css.join "\n"
83
- end
107
+ end
84
108
 
85
109
  def merge(mdoc, e, axpath=[], prev_tally=[])
86
110
 
@@ -120,7 +144,8 @@ class HtmlToCss
120
144
  if h.has_key?(:id) then
121
145
  selector = '#' + h[:id]
122
146
  else
123
- selector = (parent_selector + ' ' + e.name).strip
147
+ ps = parent_selector
148
+ selector = (ps.empty? ? e.name : ps + '>' + e.name).strip
124
149
  end
125
150
 
126
151
  return if @nolayoutcss.detect {|x| selector =~ /#{x}/ } and type == :layout
@@ -130,7 +155,11 @@ class HtmlToCss
130
155
  @selectors << selector
131
156
 
132
157
  if @elements.has_key?(e.name.to_sym) then
133
- attributes = @elements[e.name.to_sym].strip.sub(':color','#a5f').to_h
158
+ #c = @rand_color ? "#%06x" % (rand * 0xffffff) : '#a5f'
159
+ c = @rand_color ? "rgba(%s,%s,%s, 0.3)" % 3.times.map{rand(255)} \
160
+ : '#a5f'
161
+
162
+ attributes = @elements[e.name.to_sym].strip.sub(':color', c).to_h
134
163
  else
135
164
  attributes = {}
136
165
  end
@@ -157,8 +186,12 @@ class HtmlToCss
157
186
  parent_selector = selector unless selector == 'html'
158
187
 
159
188
  indent += ' '
189
+
160
190
  e.elements.each do |x|
191
+
192
+ next if @ignore_elements.include? x.name.to_sym
161
193
  scan_to_css type, x, indent, parent_selector
194
+
162
195
  end
163
196
  end
164
197
 
@@ -184,4 +217,4 @@ end
184
217
 
185
218
  if __FILE__ == $0 then
186
219
  css = HtmlToCss.new('index.html').to_css
187
- end
220
+ 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.4
4
+ version: 0.1.9
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-10 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