easydom 0.2.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: 1951ef02d5b66164f15ff58f2b39b2caac0510488f5175beb988c7e26f75cc54
4
+ data.tar.gz: d96df18c8fb245ff11db24d2a868915407c479c0350dfde9bcefd8ddbd8a8d5b
5
+ SHA512:
6
+ metadata.gz: 130c61f94d311fef3ebded8da81922f724d8d20572b799e95796c67d0522fda559910a0e39aafc6919c7a2da5dd8303cb611c4af36cdb77b31df41c318bea8b3
7
+ data.tar.gz: 4295cb71d89579f8f4110f45d484cd57a30d5760e8e22055eab181766c53a3766faf7b4666f7b5d5d4d232bef582d6d2502f12728260b9b9bab88a3768f4a401
@@ -0,0 +1,3 @@
1
+ �QV�4h�qN�2M�]�z�O�a�˼:ˁ=��Wj^C[W�E��mOW���|h20���_c/^щ"X�\�8n ����$�����r ��
2
+ A�ݰ+:O+v���ҏ��^�ߋ�z�6<CP�nJ�+t0Jd� �]F�8�<�v>@� k"G2Fb�c�}? �xZR�g9�!�^�i�ɖ���}〟���l~�
3
+ �H���]K�#�.N��AQ��l�(��)Y�1�ϝ��\|�R#<>9ẜ;�Ɨe�l��A?96$�)�
Binary file
@@ -0,0 +1,86 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ # file: easydom.rb
4
+
5
+ require 'free_dom'
6
+
7
+
8
+ class EasyDom
9
+
10
+ attr_reader :e
11
+
12
+ def initialize(obj=nil, debug: false, root: 'root')
13
+
14
+ @debug = debug
15
+
16
+ obj ||= "<#{root}/>"
17
+
18
+ @e = obj.is_a?(String) ? FreeDom.new(obj).root : obj
19
+
20
+ end
21
+
22
+ def ==(v)
23
+ @e.attributes.values.first.to_s == v
24
+ end
25
+
26
+ def to_s()
27
+ @e.attributes.values.first.to_s
28
+ end
29
+
30
+ def to_sliml()
31
+ @e.to_sliml()
32
+ end
33
+
34
+ def method_missing(sym, *args, &block)
35
+
36
+ puts "name: %s; args: %s" % [sym, args.inspect] if @debug
37
+
38
+ if @e.respond_to? sym then
39
+
40
+ puts 'attribute found' if @debug
41
+ @e.method(sym).call(*args)
42
+
43
+ elsif sym.to_s[-1] == '='
44
+
45
+ # assumes the 1st attribute it finds is the attribute to be set
46
+
47
+ puts '==' if @debug
48
+ e = @e.element(sym.to_s[0..-2])
49
+
50
+ if e.nil? then
51
+
52
+ attribute = sym[0..-2]
53
+
54
+ @e.instance_eval("def #{attribute}()
55
+ attributes[:#{attribute}]
56
+ end")
57
+
58
+ @e.instance_eval("def #{sym}(val)
59
+ attributes[:#{attribute}] = val
60
+ val
61
+ end")
62
+
63
+ return @e.method(sym).call(args.first)
64
+ end
65
+
66
+ attr = e.attributes.keys.first.to_s
67
+
68
+ puts 'attribute: ' + attr.inspect if @debug
69
+
70
+ e.method((attr + '=').to_sym).call(*args)
71
+
72
+ else
73
+
74
+ puts 'query element: ' + sym.to_s if @debug
75
+ e = @e.element(sym.to_s)
76
+
77
+ # if the element doesn't exist, create it
78
+ e = @e.add FreeDom::Element.new(sym, attributes: {}) unless e
79
+
80
+ EasyDom.new(e, debug: @debug) if e
81
+
82
+ end
83
+
84
+ end
85
+
86
+ end
metadata ADDED
@@ -0,0 +1,90 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: easydom
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.2.1
5
+ platform: ruby
6
+ authors:
7
+ - James Robertson
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain:
11
+ - |
12
+ -----BEGIN CERTIFICATE-----
13
+ MIIEXjCCAsagAwIBAgIBATANBgkqhkiG9w0BAQsFADAsMSowKAYDVQQDDCFnZW1t
14
+ YXN0ZXIvREM9amFtZXNyb2JlcnRzb24vREM9ZXUwHhcNMjAwNDI5MDkzMzA1WhcN
15
+ MjEwNDI5MDkzMzA1WjAsMSowKAYDVQQDDCFnZW1tYXN0ZXIvREM9amFtZXNyb2Jl
16
+ cnRzb24vREM9ZXUwggGiMA0GCSqGSIb3DQEBAQUAA4IBjwAwggGKAoIBgQCgqMzh
17
+ /aDgLvsJk+ai2X2dH2xkkXKSiNev3R7w8k5EiymYbAXKgS8r0Os38f+IGGBekxMf
18
+ wxjSbCqfgj7IFEJHoDBaRmoihNeye523oNP+B89qvZg5T2nOWNcBqjZZ/w4cd868
19
+ IfjJk1CGzAqCwI8s817ct8dS+nIaO0UCKL5ku0t3M+LsqLvjN5StkCxxNGxPvyNM
20
+ 9d9s50o+YLKLFGpHyWUBa20UWPZP9W4qME0Cx7DqZMrJOQwd9bFNA0N8wi+kel7z
21
+ Dp1YziayUWmw8hrfwggQaQ3Gft/U9Cb5uZp4U29zgnQ7Mxr61yJaU3B1TFF5fMqN
22
+ Y27YxEMTVtP3JusHZqO02iTs9nbhH7pSAzBYsV5WhuT7x6KQ82CG9ArBc0caE0dL
23
+ RMwHC0yDuzG2RXEdC6s8yGfEshQ3aa2wGmvddYh4Ta7gS7QDnjHNsLSefoMiiwwg
24
+ XHnMui3AcyWNc2na7n4lOdxCiEakQqSP/WuOigXWhXLvr8gqAZUdBeGoFoUCAwEA
25
+ AaOBijCBhzAJBgNVHRMEAjAAMAsGA1UdDwQEAwIEsDAdBgNVHQ4EFgQUPx9uUlJw
26
+ lFynbLocHwQ/Czdod9IwJgYDVR0RBB8wHYEbZ2VtbWFzdGVyQGphbWVzcm9iZXJ0
27
+ c29uLmV1MCYGA1UdEgQfMB2BG2dlbW1hc3RlckBqYW1lc3JvYmVydHNvbi5ldTAN
28
+ BgkqhkiG9w0BAQsFAAOCAYEAjQ5x92t6rp7SGy2tiSolihcvFX5yjORXnx5zoyld
29
+ yWiLUg1ozX5bkszPXUPONMSnIa2QejVvtVUogBY/T0ta5p7XXmnJvGiNn0sKRCxn
30
+ woTPakZdW2OskL4JpzsjSI2N49hyrEQySO/uCbbzR9LPJUfnxpwGOHwYGM5KdA8R
31
+ 8B/XY2YYYZAjiTXG13vGdu/fdGr/eU91/4nlcnyEJdGJSII+ecZHkZduvDbOlUcT
32
+ URxDUMxXZIYdKaCCpCEVU7M4lQ6ob93wR1jwxxF4u3MrW6K96WoX8xNJTYZKXUJq
33
+ b0jNqTEz3EYeRNBy87zsjVc+YKF5uH1KZw26e5URwQWvQPslgB8Nue0/yaDBTxHA
34
+ KDlUvUPutF/hRhGM+QNkK6+YNOljwtJTzN9VZAP8vRa4Lhv4ZgiogInc5lw3o4AF
35
+ GqWzjdQ5Dfb1ydCV6UC9Lu1hzIoAQVrkWlRlbX15SCvwTM+CbAAPFg3vwmKNi5T1
36
+ u695LgOX0KlDJi1766NJIYv8
37
+ -----END CERTIFICATE-----
38
+ date: 2020-05-02 00:00:00.000000000 Z
39
+ dependencies:
40
+ - !ruby/object:Gem::Dependency
41
+ name: free_dom
42
+ requirement: !ruby/object:Gem::Requirement
43
+ requirements:
44
+ - - "~>"
45
+ - !ruby/object:Gem::Version
46
+ version: '0.3'
47
+ - - ">="
48
+ - !ruby/object:Gem::Version
49
+ version: 0.3.1
50
+ type: :runtime
51
+ prerelease: false
52
+ version_requirements: !ruby/object:Gem::Requirement
53
+ requirements:
54
+ - - "~>"
55
+ - !ruby/object:Gem::Version
56
+ version: '0.3'
57
+ - - ">="
58
+ - !ruby/object:Gem::Version
59
+ version: 0.3.1
60
+ description:
61
+ email: james@jamesrobertson.eu
62
+ executables: []
63
+ extensions: []
64
+ extra_rdoc_files: []
65
+ files:
66
+ - lib/easydom.rb
67
+ homepage: https://github.com/jrobertson/easydom
68
+ licenses:
69
+ - MIT
70
+ metadata: {}
71
+ post_install_message:
72
+ rdoc_options: []
73
+ require_paths:
74
+ - lib
75
+ required_ruby_version: !ruby/object:Gem::Requirement
76
+ requirements:
77
+ - - ">="
78
+ - !ruby/object:Gem::Version
79
+ version: '0'
80
+ required_rubygems_version: !ruby/object:Gem::Requirement
81
+ requirements:
82
+ - - ">="
83
+ - !ruby/object:Gem::Version
84
+ version: '0'
85
+ requirements: []
86
+ rubygems_version: 3.0.3
87
+ signing_key:
88
+ specification_version: 4
89
+ summary: Experimental gem to access XML elements from simple dot notation (e.g. person.name).
90
+ test_files: []
Binary file