domle 0.5.1 → 0.6.0
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 +4 -4
- checksums.yaml.gz.sig +0 -0
- data/lib/domle.rb +102 -98
- data.tar.gz.sig +0 -0
- metadata +39 -39
- metadata.gz.sig +0 -0
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: aab7af7623e3906158d563c1bdb4703c4488cc84e0b14e5e7b35707fc0789041
|
4
|
+
data.tar.gz: 6a7009e972e5d19abc92803a8b5c8f7f1e28ff8131328140d90fb325019592b2
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 31fd753ab43d345211ebe2fe248110b3a1f95cbbaca53dee46fcb7b80131e98cb28b9c3ac936ac80d78e14e3bb1df633ac84805adddb6d34fd82cdb4a7cfe3e2
|
7
|
+
data.tar.gz: 1403d882dac52ea0f4e2b30ccff402a78355e48fada0cd62d776e73bb75f300bc83c7d406cd2f851147cf82d552923fc77b4f205eaf055ab2c9ca6c84b9c14ad
|
checksums.yaml.gz.sig
CHANGED
Binary file
|
data/lib/domle.rb
CHANGED
@@ -4,7 +4,7 @@
|
|
4
4
|
|
5
5
|
require 'rexle'
|
6
6
|
require 'csslite'
|
7
|
-
require '
|
7
|
+
require 'rxfreader'
|
8
8
|
|
9
9
|
|
10
10
|
class Style < Hash
|
@@ -15,29 +15,32 @@ class Style < Hash
|
|
15
15
|
super().merge! h
|
16
16
|
|
17
17
|
end
|
18
|
-
|
18
|
+
|
19
19
|
def []=(k,v)
|
20
20
|
|
21
21
|
super(k,v)
|
22
22
|
@parent[:style] = self.map{|x| x.join(':') }.join(';')
|
23
|
-
|
24
|
-
|
23
|
+
|
24
|
+
if @parent.callback and @parent.callback.respond_to? :refresh then
|
25
|
+
@parent.callback.refresh
|
26
|
+
end
|
27
|
+
|
25
28
|
end
|
26
29
|
end
|
27
30
|
|
28
31
|
class VisualAttributes < Attributes
|
29
|
-
|
32
|
+
|
30
33
|
attr_reader :callback
|
31
|
-
|
34
|
+
|
32
35
|
def initialize(x, parent: nil)
|
33
36
|
@callback = parent
|
34
37
|
self.merge! x if x
|
35
|
-
end
|
36
|
-
|
38
|
+
end
|
39
|
+
|
37
40
|
def style(parent=nil)
|
38
|
-
|
41
|
+
|
39
42
|
@callback ||= parent
|
40
|
-
|
43
|
+
|
41
44
|
if @style.nil? then
|
42
45
|
|
43
46
|
h = self[:style].split(';').inject({}) do |r, x|
|
@@ -50,52 +53,53 @@ class VisualAttributes < Attributes
|
|
50
53
|
end
|
51
54
|
@style
|
52
55
|
end
|
53
|
-
|
56
|
+
|
54
57
|
end
|
55
58
|
|
56
59
|
class Domle < Rexle
|
57
60
|
using ColouredText
|
58
|
-
|
61
|
+
|
59
62
|
class Element < Rexle::Element
|
60
|
-
|
63
|
+
|
61
64
|
|
62
65
|
class ClassList
|
63
|
-
|
66
|
+
|
64
67
|
def initialize(a, rexle, node)
|
65
68
|
@a, @rexle, @node = a, rexle, node
|
66
69
|
end
|
67
|
-
|
70
|
+
|
68
71
|
def toggle(name)
|
69
72
|
@a.include?(name) ? @a.delete(name) : @a << name
|
70
73
|
puts '@rexle?: ' + @rexle.inspect if @debug
|
71
74
|
@rexle.refresh_css(@node) if @rexle
|
72
|
-
end
|
73
|
-
end
|
75
|
+
end
|
76
|
+
end
|
74
77
|
|
75
78
|
@default = {}
|
76
79
|
@attr_map = {}
|
77
80
|
attr_reader :attr_map
|
78
|
-
|
81
|
+
|
79
82
|
def initialize(name=self.class.to_s.downcase[/\w+$/], value: nil, \
|
80
83
|
attributes: {}, rexle: nil)
|
81
|
-
|
84
|
+
|
82
85
|
attributes.merge!(style: '') unless attributes.has_key? :style
|
83
|
-
super(name, value: value, attributes: VisualAttributes.new(attributes),
|
84
|
-
|
86
|
+
super(name, value: value, attributes: VisualAttributes.new(attributes),
|
87
|
+
rexle: rexle)
|
88
|
+
|
85
89
|
end
|
86
|
-
|
90
|
+
|
87
91
|
def self.attr2_accessor(*a)
|
88
92
|
|
89
93
|
a.concat %i(id transform)
|
90
|
-
# DOM events
|
91
|
-
a.concat %i(onload onmousemove onmousedown onmouseenter
|
92
|
-
onmouseleave onclick onscroll onkeydown onkeyup)
|
93
|
-
|
94
|
+
# DOM events
|
95
|
+
a.concat %i(onload onmousemove onmousedown onmouseenter
|
96
|
+
onmouseleave onclick onscroll onkeydown onkeyup)
|
97
|
+
|
94
98
|
a.each do |attribute|
|
95
99
|
|
96
100
|
class_eval do
|
97
101
|
|
98
|
-
define_method attribute.to_s.gsub('-','_').to_sym do
|
102
|
+
define_method attribute.to_s.gsub('-','_').to_sym do
|
99
103
|
attributes[attribute]
|
100
104
|
end
|
101
105
|
|
@@ -108,53 +112,53 @@ class Domle < Rexle
|
|
108
112
|
|
109
113
|
end
|
110
114
|
end
|
111
|
-
|
115
|
+
|
112
116
|
def rexle?()
|
113
117
|
not @rexle.nil?
|
114
118
|
end
|
115
|
-
|
119
|
+
|
116
120
|
def rexle()
|
117
121
|
@rexle
|
118
122
|
end
|
119
|
-
|
123
|
+
|
120
124
|
end
|
121
|
-
|
125
|
+
|
122
126
|
def self.attr_mapper(h)
|
123
127
|
@attr_map = h
|
124
128
|
end
|
125
|
-
|
129
|
+
|
126
130
|
def active?()
|
127
131
|
@active
|
128
132
|
end
|
129
|
-
|
133
|
+
|
130
134
|
def active=(v)
|
131
135
|
@active = v
|
132
|
-
end
|
133
|
-
|
136
|
+
end
|
137
|
+
|
134
138
|
def classlist()
|
135
|
-
|
139
|
+
|
136
140
|
a = attributes[:class]
|
137
141
|
cl = ClassList.new(a, @rexle, self)
|
138
|
-
|
139
142
|
|
140
|
-
|
141
|
-
|
143
|
+
|
144
|
+
|
145
|
+
|
142
146
|
return cl
|
143
147
|
end
|
144
|
-
|
148
|
+
|
145
149
|
def style()
|
146
150
|
attributes.style(@rexle)
|
147
151
|
end
|
148
|
-
|
149
|
-
|
152
|
+
|
153
|
+
|
150
154
|
def hotspot?(x,y)
|
151
155
|
|
152
156
|
(boundary.first.is_a?(Array) ? boundary : [boundary]).all? do |box|
|
153
157
|
x1, y1, x2, y2 = box
|
154
158
|
(x1..x2).include? x and (y1..y2).include? y
|
155
159
|
end
|
156
|
-
end
|
157
|
-
|
160
|
+
end
|
161
|
+
|
158
162
|
def obj=(v)
|
159
163
|
@obj = v
|
160
164
|
end
|
@@ -162,27 +166,27 @@ class Domle < Rexle
|
|
162
166
|
def obj()
|
163
167
|
@obj
|
164
168
|
end
|
165
|
-
|
166
|
-
|
169
|
+
|
170
|
+
|
167
171
|
private
|
168
|
-
|
172
|
+
|
169
173
|
def attr_update(name, val)
|
170
174
|
return unless @attr_map
|
171
175
|
puts 'inside attr_update, @attr_map: ' + @attr_map.inspect if @debug
|
172
|
-
name = (@attr_map[name].to_s + '=').to_sym
|
176
|
+
name = (@attr_map[name].to_s + '=').to_sym
|
173
177
|
@obj.method(name).call(val) if @obj.respond_to? name
|
174
178
|
end
|
175
179
|
end
|
176
|
-
|
180
|
+
|
177
181
|
class Script < Element
|
178
182
|
|
179
|
-
end
|
180
|
-
|
183
|
+
end
|
184
|
+
|
181
185
|
class Style < Element
|
182
|
-
|
186
|
+
|
183
187
|
|
184
188
|
end
|
185
|
-
|
189
|
+
|
186
190
|
attr_reader :event
|
187
191
|
|
188
192
|
def initialize(src='<svg/>', callback: nil, rexle: nil, debug: false)
|
@@ -190,14 +194,14 @@ class Domle < Rexle
|
|
190
194
|
@callback, @debug, @rexle = callback, debug, rexle
|
191
195
|
puts 'inside Domle initialize'.info if @debug
|
192
196
|
puts 'src:' + src.inspect if @debug
|
193
|
-
|
194
|
-
super(
|
197
|
+
|
198
|
+
super(RXFReader.read(src).first, rexle: self)
|
195
199
|
@debug = debug
|
196
|
-
|
200
|
+
|
197
201
|
puts 'before find add_css' if @debug
|
198
202
|
find_add_css() if src
|
199
203
|
|
200
|
-
|
204
|
+
|
201
205
|
@event = {
|
202
206
|
keydown: [],
|
203
207
|
keyup: [],
|
@@ -207,47 +211,47 @@ class Domle < Rexle
|
|
207
211
|
mouseleave: [],
|
208
212
|
scroll: []
|
209
213
|
}
|
210
|
-
|
211
|
-
end
|
212
|
-
|
214
|
+
|
215
|
+
end
|
216
|
+
|
213
217
|
def addevent_listener(event, method_name)
|
214
|
-
|
218
|
+
|
215
219
|
@event[event.to_sym] << method_name
|
216
|
-
|
220
|
+
|
217
221
|
end
|
218
|
-
|
219
|
-
|
222
|
+
|
223
|
+
|
220
224
|
def element_by_id(id)
|
221
225
|
@doc.root.element("//*[@id='#{id}']")
|
222
226
|
end
|
223
|
-
|
227
|
+
|
224
228
|
def elements_by_name(name)
|
225
229
|
@doc.root.xpath("//*[@name='#{name}']")
|
226
|
-
end
|
227
|
-
|
230
|
+
end
|
231
|
+
|
228
232
|
def elements_by_tagname(name)
|
229
233
|
@doc.root.xpath("//#{name}")
|
230
|
-
end
|
231
|
-
|
234
|
+
end
|
235
|
+
|
232
236
|
def refresh()
|
233
|
-
@callback.refresh if @callback
|
237
|
+
@callback.refresh if @callback and @callback.respond_to? :refresh
|
234
238
|
end
|
235
|
-
|
239
|
+
|
236
240
|
def refresh_css(node)
|
237
241
|
find_add_css(node.parent)
|
238
242
|
end
|
239
|
-
|
243
|
+
|
240
244
|
protected
|
241
|
-
|
245
|
+
|
242
246
|
def add_default_css()
|
243
247
|
end
|
244
|
-
|
248
|
+
|
245
249
|
def add_external_css(node=nil)
|
246
|
-
|
250
|
+
|
247
251
|
# check for an external CSS file
|
248
252
|
if @instructions and @instructions.any? then
|
249
253
|
|
250
|
-
hrefs = @instructions.inject([]) do |r,x|
|
254
|
+
hrefs = @instructions.inject([]) do |r,x|
|
251
255
|
|
252
256
|
if x[0] =~ /xml-stylesheet/i and x[1] =~ /text\/css/i then
|
253
257
|
|
@@ -256,28 +260,28 @@ class Domle < Rexle
|
|
256
260
|
r
|
257
261
|
end
|
258
262
|
end
|
259
|
-
|
263
|
+
|
260
264
|
add_css hrefs.map{|x| RXFHelper.read(x).first}.join, node
|
261
|
-
|
265
|
+
|
262
266
|
end
|
263
|
-
|
267
|
+
|
264
268
|
end
|
265
|
-
|
269
|
+
|
266
270
|
def add_inline_css(node=nil)
|
267
271
|
puts 'inside add_inline_css' if @debug
|
268
|
-
@doc.root.xpath('//style').each {|e| add_css e.text.to_s, node }
|
272
|
+
@doc.root.xpath('//style').each {|e| add_css e.text.to_s, node }
|
269
273
|
end
|
270
|
-
|
274
|
+
|
271
275
|
def find_add_css(node=nil)
|
272
|
-
|
276
|
+
|
273
277
|
puts 'inside find_add_css' if @debug
|
274
278
|
add_default_css() unless node
|
275
279
|
add_inline_css(node)
|
276
280
|
add_external_css(node)
|
277
|
-
end
|
278
|
-
|
281
|
+
end
|
282
|
+
|
279
283
|
private
|
280
|
-
|
284
|
+
|
281
285
|
def add_css(s, node=@doc, override: true)
|
282
286
|
|
283
287
|
puts 'add_css s: ' + s.inspect if @debug
|
@@ -292,9 +296,9 @@ class Domle < Rexle
|
|
292
296
|
#
|
293
297
|
def defined_elements()
|
294
298
|
{
|
295
|
-
doc: Rexle::Element
|
299
|
+
doc: Rexle::Element
|
296
300
|
}
|
297
|
-
end
|
301
|
+
end
|
298
302
|
|
299
303
|
def scan_element(name, attributes=nil, *children)
|
300
304
|
|
@@ -309,35 +313,35 @@ class Domle < Rexle
|
|
309
313
|
if children then
|
310
314
|
|
311
315
|
children.each do |x|
|
312
|
-
|
316
|
+
|
313
317
|
if x.is_a? Array then
|
314
318
|
|
315
|
-
element.add_element scan_element(*x)
|
316
|
-
|
319
|
+
element.add_element scan_element(*x)
|
320
|
+
|
317
321
|
elsif x.is_a? String then
|
318
322
|
|
319
323
|
if x.is_a? String then
|
320
324
|
|
321
325
|
element.add_element(x) if x.strip.length > 0
|
322
|
-
|
326
|
+
|
323
327
|
elsif x.name == '![' then
|
324
328
|
|
325
329
|
e = Rexle::CData.new(x)
|
326
330
|
element.add_element e
|
327
|
-
|
331
|
+
|
328
332
|
elsif x.name == '!-' then
|
329
333
|
|
330
334
|
e = Rexle::Comment.new(x)
|
331
335
|
element.add_element e
|
332
|
-
|
336
|
+
|
333
337
|
end
|
334
|
-
|
338
|
+
|
335
339
|
end
|
336
340
|
end
|
337
341
|
end
|
338
|
-
|
342
|
+
|
339
343
|
return element
|
340
344
|
end
|
341
|
-
|
342
|
-
|
345
|
+
|
346
|
+
|
343
347
|
end
|
data.tar.gz.sig
CHANGED
Binary file
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: domle
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.6.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- James Robertson
|
@@ -11,31 +11,31 @@ cert_chain:
|
|
11
11
|
- |
|
12
12
|
-----BEGIN CERTIFICATE-----
|
13
13
|
MIIEXjCCAsagAwIBAgIBATANBgkqhkiG9w0BAQsFADAsMSowKAYDVQQDDCFnZW1t
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
/
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
14
|
+
YXN0ZXIvREM9amFtZXNyb2JlcnRzb24vREM9ZXUwHhcNMjIwMjIzMTkyNDE0WhcN
|
15
|
+
MjMwMjIzMTkyNDE0WjAsMSowKAYDVQQDDCFnZW1tYXN0ZXIvREM9amFtZXNyb2Jl
|
16
|
+
cnRzb24vREM9ZXUwggGiMA0GCSqGSIb3DQEBAQUAA4IBjwAwggGKAoIBgQDDoHg1
|
17
|
+
dlm44omi2JlyhehpzeodmVum7unwyXkZEAHsEKh+mXlzYBGdWxbY+YX1KMQcYRol
|
18
|
+
EcE4egHY+2lhb2Vnv1t8Rh3dwfcWLN/ZWQ8Q3PvEUvvH3qAuF9TQtEzIKIlbD6gB
|
19
|
+
ltV6WV/V5SsFYn88AcRUBhN60Px4ZYD3PDRJ+qN2h7Y9owiUSAkLE78FMMbLNQmY
|
20
|
+
xxdKwq5fcYxKmmGHOFK7wfULwS+JzN673rcHRprOGZrPvjcObvfJ6K7Exb/EHk8B
|
21
|
+
kJIq8lKXb+pZZI2m0EmpPCkZ1DtpBtphea11TI3WnCNJ3DZrXbWn2oFAEXRG4RRj
|
22
|
+
VG8TxEVOYJ7+x+1QpnglP8hxGtuP71zCdYwR9S9myfCTyr2zz1buxAsFKbyQgrMN
|
23
|
+
0wT9IR1BmA5VSk7TbZtbMDvBiXBssEqOPFUUDbBFO59P8b5dzM16toltKV++ZtGf
|
24
|
+
UB3HyxcmEsmSdszmd4S8gSixg4JVUhyxOn0PnCezKB7f/H6awyvy/EObZBsCAwEA
|
25
|
+
AaOBijCBhzAJBgNVHRMEAjAAMAsGA1UdDwQEAwIEsDAdBgNVHQ4EFgQUtNFA9x9Q
|
26
|
+
Yd7D/AxWkUOCIVC9+8QwJgYDVR0RBB8wHYEbZ2VtbWFzdGVyQGphbWVzcm9iZXJ0
|
27
27
|
c29uLmV1MCYGA1UdEgQfMB2BG2dlbW1hc3RlckBqYW1lc3JvYmVydHNvbi5ldTAN
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
28
|
+
BgkqhkiG9w0BAQsFAAOCAYEAdxmMoxhypcQ4HTzdWDhzdg2AlPFxqZrVS3sLvL65
|
29
|
+
YtLnZPlodIr/KZeJDOjo2c6JKjdAseGLqyIUPoIMp33xdbgIQBHnZ9Ui1XaJcRE2
|
30
|
+
8UBst1EOL/jDgzeePpOfKL7CwvE8MGI9JBN1EeoLsF3ey9c6521gE+987oTK2gFZ
|
31
|
+
0VcwrXum08T/tvPBsP7L4+yaL/Am74oMov5/nRI/ZrP3bLCdO6PwOK6QhimfUOLa
|
32
|
+
jxFFkKYXB2MlEnVr6Gb59v44+VEGuOidO3jykPJWMrIdwKnEZZH8T2yTlkQrlMP5
|
33
|
+
8WabMF23roEt7bPn1PS2d6h3y5JeKS7LNJFE3fGZ8nyDjDYqB9n81a4GsFubFb3c
|
34
|
+
cDX7Urk8FPXCDoY9BNaqCEEZ7EZ2okz1eUW6rfJfxd2HMT9dkYAEB/EZr7saW9NN
|
35
|
+
WmNALyRNdE9qUZs79H0es8GRxFLqo3hKy9wwo/e71PapN5hBmiblML2i9KQjKH8F
|
36
|
+
5VlN3/i+KUFlMQf3KDX18ddy
|
37
37
|
-----END CERTIFICATE-----
|
38
|
-
date:
|
38
|
+
date: 2022-02-23 00:00:00.000000000 Z
|
39
39
|
dependencies:
|
40
40
|
- !ruby/object:Gem::Dependency
|
41
41
|
name: rexle
|
@@ -46,7 +46,7 @@ dependencies:
|
|
46
46
|
version: '1.5'
|
47
47
|
- - ">="
|
48
48
|
- !ruby/object:Gem::Version
|
49
|
-
version: 1.5.
|
49
|
+
version: 1.5.14
|
50
50
|
type: :runtime
|
51
51
|
prerelease: false
|
52
52
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -56,49 +56,49 @@ dependencies:
|
|
56
56
|
version: '1.5'
|
57
57
|
- - ">="
|
58
58
|
- !ruby/object:Gem::Version
|
59
|
-
version: 1.5.
|
59
|
+
version: 1.5.14
|
60
60
|
- !ruby/object:Gem::Dependency
|
61
61
|
name: csslite
|
62
62
|
requirement: !ruby/object:Gem::Requirement
|
63
63
|
requirements:
|
64
|
-
- - ">="
|
65
|
-
- !ruby/object:Gem::Version
|
66
|
-
version: 0.2.0
|
67
64
|
- - "~>"
|
68
65
|
- !ruby/object:Gem::Version
|
69
66
|
version: '0.2'
|
67
|
+
- - ">="
|
68
|
+
- !ruby/object:Gem::Version
|
69
|
+
version: 0.2.0
|
70
70
|
type: :runtime
|
71
71
|
prerelease: false
|
72
72
|
version_requirements: !ruby/object:Gem::Requirement
|
73
73
|
requirements:
|
74
|
-
- - ">="
|
75
|
-
- !ruby/object:Gem::Version
|
76
|
-
version: 0.2.0
|
77
74
|
- - "~>"
|
78
75
|
- !ruby/object:Gem::Version
|
79
76
|
version: '0.2'
|
77
|
+
- - ">="
|
78
|
+
- !ruby/object:Gem::Version
|
79
|
+
version: 0.2.0
|
80
80
|
- !ruby/object:Gem::Dependency
|
81
|
-
name:
|
81
|
+
name: rxfreader
|
82
82
|
requirement: !ruby/object:Gem::Requirement
|
83
83
|
requirements:
|
84
84
|
- - "~>"
|
85
85
|
- !ruby/object:Gem::Version
|
86
|
-
version: '0.
|
86
|
+
version: '0.2'
|
87
87
|
- - ">="
|
88
88
|
- !ruby/object:Gem::Version
|
89
|
-
version: 0.
|
89
|
+
version: 0.2.1
|
90
90
|
type: :runtime
|
91
91
|
prerelease: false
|
92
92
|
version_requirements: !ruby/object:Gem::Requirement
|
93
93
|
requirements:
|
94
94
|
- - "~>"
|
95
95
|
- !ruby/object:Gem::Version
|
96
|
-
version: '0.
|
96
|
+
version: '0.2'
|
97
97
|
- - ">="
|
98
98
|
- !ruby/object:Gem::Version
|
99
|
-
version: 0.
|
99
|
+
version: 0.2.1
|
100
100
|
description:
|
101
|
-
email:
|
101
|
+
email: digital.robertson@gmail.com
|
102
102
|
executables: []
|
103
103
|
extensions: []
|
104
104
|
extra_rdoc_files: []
|
@@ -123,7 +123,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
123
123
|
- !ruby/object:Gem::Version
|
124
124
|
version: '0'
|
125
125
|
requirements: []
|
126
|
-
rubygems_version: 3.
|
126
|
+
rubygems_version: 3.2.22
|
127
127
|
signing_key:
|
128
128
|
specification_version: 4
|
129
129
|
summary: Domle (DOM + Rexle) is the document object model used by the Svgle gem
|
metadata.gz.sig
CHANGED
Binary file
|