free_dom 0.2.0 → 0.3.3

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
2
  SHA256:
3
- metadata.gz: 0b25006295cb48501f306a796923819b86162ba2479c3daa84e490bc201d9364
4
- data.tar.gz: 87796929372ea091459a75facb1a8d01b94d3368dbe8e99d6e37e4a8614b2149
3
+ metadata.gz: 88b95a4ba4045392455d872d4712a352429857a011e1523831343950df79e90a
4
+ data.tar.gz: 97b82962f4be6578dbc7aece6c92427b7b33603935b71eab2979dfd1fe6489b0
5
5
  SHA512:
6
- metadata.gz: ec3355fdef23b6ff5d9c8c668db1a258dec3f4cd58cdd942e324e587f1b03729ae4f9d91a9df321ba4f2a97eb548da1565b881f5ad53c32d388fc8ad02e6e350
7
- data.tar.gz: 850c75e8fa3fc0b91d13cd31d7702d311c9a6635bcbfe89ed6e8ac6ad2cb7a4767853dd0799511a4a550ae37d220ca210660587095b1489aa0c44a711635c7cf
6
+ metadata.gz: 3280a2d8e1f6021ee730e06727a721d645e1904d8dc82a74740b04d4111088eceff36119895e0e0462f3d9cab10a5c497de7d4605b3f5b8dc1f2134a32531ddf
7
+ data.tar.gz: 48240b2b70abcf810d710e2bfbace2e3711e34c76675a46b30648c8084e6b9d755648db7f5808883f5fec2ead58a35d98d56fb996da266be5ad8bbb728f20f78
Binary file
data.tar.gz.sig CHANGED
Binary file
@@ -3,18 +3,42 @@
3
3
  # file: free_dom.rb
4
4
 
5
5
  require 'domle'
6
+ require 'xml_to_sliml'
6
7
 
7
8
 
9
+ class Rexle::Element
10
+ def to_sliml()
11
+
12
+ xml = self.xml(pretty: true)
13
+ XmlToSliml.new(xml.gsub(/ style=''/,"")).to_s
14
+
15
+ end
16
+ end
17
+
8
18
  class FreeDom < Domle
9
19
 
10
- def initialize(xml, debug: false)
20
+ def initialize(s, debug: false)
11
21
 
12
- @doc, @debug = Rexle.new(xml), debug
22
+ @debug = debug
23
+
24
+ xml = s =~ /^</ ? s : LineTree.new(s).to_xml
25
+ @doc = Rexle.new(xml)
13
26
 
14
27
  h = {}
15
28
 
16
29
  @doc.root.each_recursive do |e|
30
+
17
31
  h[e.name.to_sym] ||= {}
32
+
33
+ # if there's a custom attribute, add a default trigger called trigger_change
34
+ a = e.attributes.keys.reject {|x| %i(id name class style).include? x }
35
+ e.attributes.merge!({trigger_change: a.first}) if a.any?
36
+
37
+ # add a trigger attribute for each *on* event attribute
38
+ events = e.attributes.keys.select {|x| x =~ /^on/}\
39
+ .map {|x| 'trigger_' + x.to_s[/(?<=^on)\w+/]}
40
+ e.attributes.merge! events.zip(['']*events.length).to_h
41
+
18
42
  h[e.name.to_sym].merge!(e.attributes)
19
43
  end
20
44
 
@@ -26,9 +50,8 @@ class FreeDom < Domle
26
50
 
27
51
  a = attributelist.keys
28
52
 
29
- triggers = a.select {|x| x =~ /^trigger_/ }
30
-
31
- attr2_accessor *(a - triggers)
53
+ triggers = a.select {|x| x =~ /^trigger_/ }
54
+ attr2_accessor *((a - triggers) + %i(onchange)).uniq
32
55
 
33
56
  triggers.each do |x|
34
57
 
@@ -36,21 +59,22 @@ class FreeDom < Domle
36
59
  puts 'trigger: ' + trigger.inspect if @debug
37
60
 
38
61
  define_method(trigger) do
39
- eval method(('on' + trigger.to_s).to_sym).call, $env
62
+ statement = method(('on' + trigger.to_s).to_sym).call
63
+ eval statement, $env if statement
40
64
  end
41
65
 
42
- if trigger == :change then
43
-
44
- #puts 'change found'
66
+ if trigger == :change then
45
67
 
46
68
  attribute = attributelist[x].to_sym
47
69
 
48
70
  define_method((attribute.to_s + '=').to_sym) do |val|
71
+
49
72
  oldval = attributes[attribute]
50
73
  attributes[attribute] = val
51
- #puts 'inside change='
74
+
52
75
  @rexle.refresh if @rexle
53
76
  change() unless val == oldval
77
+
54
78
  val
55
79
  end
56
80
 
@@ -71,7 +95,7 @@ class FreeDom < Domle
71
95
  .each {|x| e.attributes.delete x }
72
96
  end
73
97
 
74
- super(@doc.root.xml)
98
+ super(@doc.root.xml, debug: @debug)
75
99
  script()
76
100
 
77
101
  end
@@ -88,6 +112,14 @@ class FreeDom < Domle
88
112
  eval s
89
113
  $env = binding
90
114
  end
115
+
116
+ def to_sliml()
117
+
118
+ xml = @doc.root.element('*').xml(pretty: true)
119
+ puts 'xml: ' + xml.inspect if @debug
120
+ XmlToSliml.new(xml.gsub(/ style=''/,"")).to_s
121
+
122
+ end
91
123
 
92
124
 
93
125
  private
@@ -97,3 +129,4 @@ class FreeDom < Domle
97
129
  end
98
130
 
99
131
  end
132
+
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: free_dom
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.3.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - James Robertson
@@ -35,7 +35,7 @@ cert_chain:
35
35
  VxSuuHhAXplX7wWmd1FzAAH5bk4OPlKGt5fxQbax+FSoEzTsnoDcLTY2i0WOxwRo
36
36
  76nAi+UZoU87S6brj88/rtOL
37
37
  -----END CERTIFICATE-----
38
- date: 2020-04-30 00:00:00.000000000 Z
38
+ date: 2020-05-03 00:00:00.000000000 Z
39
39
  dependencies:
40
40
  - !ruby/object:Gem::Dependency
41
41
  name: domle
@@ -43,20 +43,60 @@ dependencies:
43
43
  requirements:
44
44
  - - "~>"
45
45
  - !ruby/object:Gem::Version
46
- version: '0.3'
46
+ version: '0.4'
47
47
  - - ">="
48
48
  - !ruby/object:Gem::Version
49
- version: 0.3.1
49
+ version: 0.4.1
50
50
  type: :runtime
51
51
  prerelease: false
52
52
  version_requirements: !ruby/object:Gem::Requirement
53
53
  requirements:
54
54
  - - "~>"
55
55
  - !ruby/object:Gem::Version
56
- version: '0.3'
56
+ version: '0.4'
57
57
  - - ">="
58
58
  - !ruby/object:Gem::Version
59
- version: 0.3.1
59
+ version: 0.4.1
60
+ - !ruby/object:Gem::Dependency
61
+ name: line-tree
62
+ requirement: !ruby/object:Gem::Requirement
63
+ requirements:
64
+ - - "~>"
65
+ - !ruby/object:Gem::Version
66
+ version: '0.9'
67
+ - - ">="
68
+ - !ruby/object:Gem::Version
69
+ version: 0.9.1
70
+ type: :runtime
71
+ prerelease: false
72
+ version_requirements: !ruby/object:Gem::Requirement
73
+ requirements:
74
+ - - "~>"
75
+ - !ruby/object:Gem::Version
76
+ version: '0.9'
77
+ - - ">="
78
+ - !ruby/object:Gem::Version
79
+ version: 0.9.1
80
+ - !ruby/object:Gem::Dependency
81
+ name: xml_to_sliml
82
+ requirement: !ruby/object:Gem::Requirement
83
+ requirements:
84
+ - - "~>"
85
+ - !ruby/object:Gem::Version
86
+ version: '0.1'
87
+ - - ">="
88
+ - !ruby/object:Gem::Version
89
+ version: 0.1.2
90
+ type: :runtime
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - "~>"
95
+ - !ruby/object:Gem::Version
96
+ version: '0.1'
97
+ - - ">="
98
+ - !ruby/object:Gem::Version
99
+ version: 0.1.2
60
100
  description:
61
101
  email: james@jamesrobertson.eu
62
102
  executables: []
metadata.gz.sig CHANGED
Binary file