free_dom 0.2.0 → 0.3.3

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