domle 0.2.2 → 0.5.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (6) hide show
  1. checksums.yaml +4 -4
  2. checksums.yaml.gz.sig +0 -0
  3. data.tar.gz.sig +0 -0
  4. data/lib/domle.rb +139 -25
  5. metadata +37 -37
  6. metadata.gz.sig +0 -0
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 3902b443ea12ca308ca0a9e1a89a5e133126b24a83f0aaa439f8be971f911c0a
4
- data.tar.gz: b50fcf3bbf2c7e10e57fee8be154e1ac10d9ce3dd017feb4e18338f27a0bcf26
3
+ metadata.gz: ffedd3974a12290417326278c4df2f79c97e64303eec8e5c4fa3e3875b4d2663
4
+ data.tar.gz: b2be643717e9f483a671c57e2fde3ec2c423cdc25d5c905a6fc594a17ec00853
5
5
  SHA512:
6
- metadata.gz: 686ac050cc4f33d43165b23348f5614ef67d5f984342a794aed2376c007c43b9d4d5e0952a2addc8a7796b4e411bbfe4f48507a317285ecd614cde2f63f8aedf
7
- data.tar.gz: 44db2a06813d075a2142dec1acdee9f009bbb08b421ac71db89c48bfaf386c4b7cdbcb31caaa54b67ec4f6ce178bc48ec84a3f07c5315af48a58642d90328615
6
+ metadata.gz: 0cdf45a19fbf66d9a57cb563fb9db01f3a874b748530e1f94343c8ec6202dc3b9b5b85d6bc19e45d0012a859a928de9567aa41a12f84e69bdce0245cb3b264fa
7
+ data.tar.gz: 12fb235afb980a62648b90b98cdef319deedf2036b903de80a882bef333a556e6cb3823e8e60d00b6f78934572af957e5ddcba7d98c358bef000bd9046d7d623
Binary file
data.tar.gz.sig CHANGED
Binary file
@@ -54,12 +54,30 @@ class VisualAttributes < Attributes
54
54
  end
55
55
 
56
56
  class Domle < Rexle
57
+ using ColouredText
57
58
 
58
59
  class Element < Rexle::Element
60
+
61
+
62
+ class ClassList
63
+
64
+ def initialize(a, rexle, node)
65
+ @a, @rexle, @node = a, rexle, node
66
+ end
67
+
68
+ def toggle(name)
69
+ @a.include?(name) ? @a.delete(name) : @a << name
70
+ puts '@rexle?: ' + @rexle.inspect if @debug
71
+ @rexle.refresh_css(@node) if @rexle
72
+ end
73
+ end
59
74
 
60
75
  @default = {}
76
+ @attr_map = {}
77
+ attr_reader :attr_map
78
+
61
79
  def initialize(name=self.class.to_s.downcase[/\w+$/], value: nil, \
62
- attributes: VisualAttributes.new(parent: self), rexle: nil)
80
+ attributes: {}, rexle: nil)
63
81
 
64
82
  attributes.merge!(style: '') unless attributes.has_key? :style
65
83
  super(name, value: value, attributes: VisualAttributes.new(attributes), rexle: rexle)
@@ -69,7 +87,9 @@ class Domle < Rexle
69
87
  def self.attr2_accessor(*a)
70
88
 
71
89
  a.concat %i(id transform)
72
- a.concat %i(onload onmousemove onmousedown) # DOM events
90
+ # DOM events
91
+ a.concat %i(onload onmousemove onmousedown onmouseenter
92
+ onmouseleave onclick onscroll onkeydown onkeyup)
73
93
 
74
94
  a.each do |attribute|
75
95
 
@@ -81,12 +101,45 @@ class Domle < Rexle
81
101
 
82
102
  define_method (attribute.to_s + '=').to_sym do |val|
83
103
  attributes[attribute] = val
84
- @rexle.refresh if @rexle
104
+ rexle().refresh if rexle?
105
+ attr_update(attribute, val)
85
106
  val
86
107
  end
87
108
 
88
109
  end
89
110
  end
111
+
112
+ def rexle?()
113
+ not @rexle.nil?
114
+ end
115
+
116
+ def rexle()
117
+ @rexle
118
+ end
119
+
120
+ end
121
+
122
+ def self.attr_mapper(h)
123
+ @attr_map = h
124
+ end
125
+
126
+ def active?()
127
+ @active
128
+ end
129
+
130
+ def active=(v)
131
+ @active = v
132
+ end
133
+
134
+ def classlist()
135
+
136
+ a = attributes[:class]
137
+ cl = ClassList.new(a, @rexle, self)
138
+
139
+
140
+
141
+
142
+ return cl
90
143
  end
91
144
 
92
145
  def style()
@@ -101,6 +154,24 @@ class Domle < Rexle
101
154
  (x1..x2).include? x and (y1..y2).include? y
102
155
  end
103
156
  end
157
+
158
+ def obj=(v)
159
+ @obj = v
160
+ end
161
+
162
+ def obj()
163
+ @obj
164
+ end
165
+
166
+
167
+ private
168
+
169
+ def attr_update(name, val)
170
+ return unless @attr_map
171
+ puts 'inside attr_update, @attr_map: ' + @attr_map.inspect if @debug
172
+ name = (@attr_map[name].to_s + '=').to_sym
173
+ @obj.method(name).call(val) if @obj.respond_to? name
174
+ end
104
175
  end
105
176
 
106
177
  class Script < Element
@@ -111,30 +182,67 @@ class Domle < Rexle
111
182
 
112
183
 
113
184
  end
185
+
186
+ attr_reader :event
114
187
 
115
- def initialize(x='<svg/>', callback: nil, rexle: self, debug: false)
188
+ def initialize(src='<svg/>', callback: nil, rexle: nil, debug: false)
116
189
 
117
- super x, rexle: rexle
118
- find_add_css() if x
119
- @callback, @debug = callback, debug
190
+ @callback, @debug, @rexle = callback, debug, rexle
191
+ puts 'inside Domle initialize'.info if @debug
192
+ puts 'src:' + src.inspect if @debug
193
+
194
+ super(RXFHelper.read(src).first, rexle: self)
195
+ @debug = debug
196
+
197
+ puts 'before find add_css' if @debug
198
+ find_add_css() if src
199
+
200
+
201
+ @event = {
202
+ keydown: [],
203
+ keyup: [],
204
+ mousemove: [],
205
+ mousedown: [],
206
+ mouseenter: [],
207
+ mouseleave: [],
208
+ scroll: []
209
+ }
120
210
 
121
211
  end
122
212
 
123
- def element_by_id(id)
124
- @doc.root.element("//*[@id='#{id}']")
125
- end
126
-
213
+ def addevent_listener(event, method_name)
214
+
215
+ @event[event.to_sym] << method_name
216
+
217
+ end
218
+
127
219
 
220
+ def element_by_id(id)
221
+ @doc.root.element("//*[@id='#{id}']")
222
+ end
223
+
224
+ def elements_by_name(name)
225
+ @doc.root.xpath("//*[@name='#{name}']")
226
+ end
227
+
228
+ def elements_by_tagname(name)
229
+ @doc.root.xpath("//#{name}")
230
+ end
231
+
128
232
  def refresh()
129
233
  @callback.refresh if @callback
130
234
  end
131
235
 
236
+ def refresh_css(node)
237
+ find_add_css(node.parent)
238
+ end
239
+
132
240
  protected
133
241
 
134
242
  def add_default_css()
135
243
  end
136
244
 
137
- def add_external_css()
245
+ def add_external_css(node=nil)
138
246
 
139
247
  # check for an external CSS file
140
248
  if @instructions and @instructions.any? then
@@ -149,29 +257,35 @@ class Domle < Rexle
149
257
  end
150
258
  end
151
259
 
152
- add_css hrefs.map{|x| RXFHelper.read(x).first}.join
260
+ add_css hrefs.map{|x| RXFHelper.read(x).first}.join, node
153
261
 
154
262
  end
155
263
 
156
264
  end
157
265
 
158
- def add_inline_css()
159
- @doc.root.xpath('//style').each {|e| add_css e.text }
266
+ def add_inline_css(node=nil)
267
+ puts 'inside add_inline_css' if @debug
268
+ @doc.root.xpath('//style').each {|e| add_css e.text.to_s, node }
160
269
  end
161
270
 
162
- def find_add_css()
163
- add_default_css()
164
- add_inline_css()
165
- add_external_css()
166
- end
271
+ def find_add_css(node=nil)
272
+
273
+ puts 'inside find_add_css' if @debug
274
+ add_default_css() unless node
275
+ add_inline_css(node)
276
+ add_external_css(node)
277
+ end
167
278
 
168
279
  private
169
280
 
170
- def add_css(s, override: true)
171
-
172
- css = CSSLite.new s
173
- css.propagate self.root
174
-
281
+ def add_css(s, node=@doc, override: true)
282
+
283
+ puts 'add_css s: ' + s.inspect if @debug
284
+ css = CSSLite.new s, debug: @debug
285
+ node ||= @doc
286
+ puts 'before propagate node: ' + node.inspect if @debug
287
+ css.propagate node
288
+ puts node.xml if @debug
175
289
  end
176
290
 
177
291
  # override this method in your own class
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.2.2
4
+ version: 0.5.1
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
- YXN0ZXIvREM9amFtZXNyb2JlcnRzb24vREM9ZXUwHhcNMTkwMjA5MTgyNzIyWhcN
15
- MjAwMjA5MTgyNzIyWjAsMSowKAYDVQQDDCFnZW1tYXN0ZXIvREM9amFtZXNyb2Jl
16
- cnRzb24vREM9ZXUwggGiMA0GCSqGSIb3DQEBAQUAA4IBjwAwggGKAoIBgQCvI/7J
17
- aOxpl1cmhFGeKLwDLcwxwd0FtzL+sqZEpR+A5j/T4FkSDn8qr0eiSB5PrcBVQ1Se
18
- vxiDFQsLy/zxTNoRDrqlO2RiyF7oDGfCpFPDqt9gJ/T2p4Zil/7rY5gb9v/YVQ3W
19
- 1mKTX5A0YkqyCW6Qte9sMFVI1EojGQ/3uwZxgi3D6pdOQNBEtI5Ln51EnbA/JPXZ
20
- rV9dGt9BkahDZgG5APQ8ODDhqOsJ2hRze7D1X9M/qsiWNIGMsncJf9/id4+pn0LS
21
- TOR42GglYrDRRP43rLr7EZAhWF7DwT0aYYHsUdOkf/XyzQ+rYQCGP9lhbkY7B80B
22
- 8J/khduqdCq4ZV9nx+QwHI8Mc5QSCteSykb5FyiksDGp/RKNAeUAHkj66W+x3GP9
23
- QMXLpJO343fSuTYANHVOSunvJjg0wc8UwXNjkaVOTtbQfX2YOgTgenL7cjasM/gI
24
- BZAzRozpitrc0Zhp6Mr5K4tFsHu/7F9lXWX7sux3XgiyrHnSSqepfvOjBk0CAwEA
25
- AaOBijCBhzAJBgNVHRMEAjAAMAsGA1UdDwQEAwIEsDAdBgNVHQ4EFgQUpL0ZkHAo
26
- d92dQENBvAE6fQY7bqwwJgYDVR0RBB8wHYEbZ2VtbWFzdGVyQGphbWVzcm9iZXJ0
14
+ YXN0ZXIvREM9amFtZXNyb2JlcnRzb24vREM9ZXUwHhcNMjAwNTAxMTMxNjQ5WhcN
15
+ MjEwNTAxMTMxNjQ5WjAsMSowKAYDVQQDDCFnZW1tYXN0ZXIvREM9amFtZXNyb2Jl
16
+ cnRzb24vREM9ZXUwggGiMA0GCSqGSIb3DQEBAQUAA4IBjwAwggGKAoIBgQDNesSu
17
+ sygIaXbswwwwIdCy5SkfMqbxiDiQf6vXceCVmoAx7lPQcPXApty8VE6JeA1SXIPI
18
+ O3m+1x6bK3c3KJdXBjebuWwnMI93y2zevnLJaTCogWqprucrwv0HPlcsNPRPNbWY
19
+ rR4W5yU+bZfT3R9XoQWXC6emzlXmzIZTAMKtPoH88p5Lzu8MgyR9o0au2YJmbWze
20
+ /6rSLG9lQg6Q0MMqzeLDuhBxX2jcl4d2jNrbIw0a33fS9IaTpj0qMQCvpYUozfZu
21
+ RVO3jUTEql0y3LsuLv/NPJOqLQEpQ+8XoTCBZaEBAyk7C3bOPXKkEbEJ2vQTBNyI
22
+ on/c7otXBH9F9lo+AJ0tYBG/bxUYrn5D+e1UC1HH6+DwgbsoNkJ7wvUzGJPMg8rt
23
+ 9UresKC5ETtO5SDFVbe9RxB3bdJUKr39UsZnbX0HEiT0ZPoA+PLNICO5A3IBOmRT
24
+ oW/w+LwV6ruL5Rq/T16hXQrzSgIE2Rkh6K5lv8so9okdv6qY0pJ3X/NiPpMCAwEA
25
+ AaOBijCBhzAJBgNVHRMEAjAAMAsGA1UdDwQEAwIEsDAdBgNVHQ4EFgQUqtOilBV4
26
+ YaDlJDbt3ZqEIfMmrsowJgYDVR0RBB8wHYEbZ2VtbWFzdGVyQGphbWVzcm9iZXJ0
27
27
  c29uLmV1MCYGA1UdEgQfMB2BG2dlbW1hc3RlckBqYW1lc3JvYmVydHNvbi5ldTAN
28
- BgkqhkiG9w0BAQsFAAOCAYEASA/iHxAE3XSn086NtQ9BlutTfBBzNOTq6ZhVPOZz
29
- qgi0ZyUoZFTinsGH6ppnjhKC5zSUb8cQ5JYiJTNy08O8gQ8DsnRkaFaxmcyuQTal
30
- q6VI9YYdJWUd5loVDE4cuqJxxKOiE+XBdlxfUMTAysrzcJlXzNbnbmIWnw80eJS9
31
- J+FDoXa0n+QN+sQONRlseA9uh9vtKbi8oLr9QYbniXdtiYDTBFgk8r2FxSBsvPyf
32
- aUHf/vQD3dIMKyxmTTjrWtRvzpkIsOATH+02GVzq6IXp92bOlo3jux6IogeMTKUI
33
- NHDkO5fcGMCFJPYiRuO+G6Q8a84D5ygQJSh1vcVz5UOt/sbHkzXB2ZXzsSZxARAo
34
- 7WUufgoTkSx2l89paohsgp6nKxhUOS3dbrRugCOShy+F/mlA0zNc1k0l9AmCX2az
35
- 5W+/h8msUafjVr6ihNHTXefecVsjVhacb6l0hBYUNzXDpkhCjnNUaSxcS0e4FavI
36
- JHHC9WlNneDJrmTdGxNUWsw6
28
+ BgkqhkiG9w0BAQsFAAOCAYEATKO4gsH586vrhwVMsn8y4MNk+oNmqLaV5/uQzki6
29
+ I3jSu/1NOnHgOwZ+qj7FtGQIhlWrk3B2Yl+1DnF/YXmkppV7Ge5DLhpRRxXW2ZfA
30
+ SUc9ShIkYXrgfY1r7oL5iMSsLUp+kNA8RlRmhxhdRH8rm80nlvoYtJH/kGN9xgNZ
31
+ 9swoqkehC7nNf6RzRiFd3z7xCnNOnAqTzvIdIm0CBwhGAixGLRfOit3v3/iIyjSe
32
+ jIWH0OKqh/m8vvFCTCHFtr5gR+J3sBfJfg+Y+TH2Hi/GOkvU+SZ1uyWWAkuGxVnX
33
+ JYmxw6FYVTYOv/r2nz/sVQWRDxYYjV5LcZ1ItJS9MVdvb9vDYzQw3clEt+K5DjQU
34
+ iCUNL5rwIkLnLoAc4c6M3bTze3UExyNDNjwQjuUV6Kyl/105/90y44FgAizwS6xu
35
+ ewt0cFO7UqEB/yC8KNeXJjd19INo+w98LYjFZQEzLAg15Sz7ca5bUbr/LuYQUk4y
36
+ Lvi3w1KUp4YuUbhbhnEQXuPH
37
37
  -----END CERTIFICATE-----
38
- date: 2019-02-24 00:00:00.000000000 Z
38
+ date: 2020-06-07 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.1
49
+ version: 1.5.6
50
50
  type: :runtime
51
51
  prerelease: false
52
52
  version_requirements: !ruby/object:Gem::Requirement
@@ -56,27 +56,27 @@ dependencies:
56
56
  version: '1.5'
57
57
  - - ">="
58
58
  - !ruby/object:Gem::Version
59
- version: 1.5.1
59
+ version: 1.5.6
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.1'
67
64
  - - ">="
68
65
  - !ruby/object:Gem::Version
69
- version: 0.1.3
66
+ version: 0.2.0
67
+ - - "~>"
68
+ - !ruby/object:Gem::Version
69
+ version: '0.2'
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.1'
77
74
  - - ">="
78
75
  - !ruby/object:Gem::Version
79
- version: 0.1.3
76
+ version: 0.2.0
77
+ - - "~>"
78
+ - !ruby/object:Gem::Version
79
+ version: '0.2'
80
80
  - !ruby/object:Gem::Dependency
81
81
  name: rxfhelper
82
82
  requirement: !ruby/object:Gem::Requirement
@@ -86,7 +86,7 @@ dependencies:
86
86
  version: '0.9'
87
87
  - - ">="
88
88
  - !ruby/object:Gem::Version
89
- version: 0.9.2
89
+ version: 0.9.4
90
90
  type: :runtime
91
91
  prerelease: false
92
92
  version_requirements: !ruby/object:Gem::Requirement
@@ -96,7 +96,7 @@ dependencies:
96
96
  version: '0.9'
97
97
  - - ">="
98
98
  - !ruby/object:Gem::Version
99
- version: 0.9.2
99
+ version: 0.9.4
100
100
  description:
101
101
  email: james@jamesrobertson.eu
102
102
  executables: []
@@ -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.0.1
126
+ rubygems_version: 3.0.3
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