html-to-css 0.1.4 → 0.1.9

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