polyrex-links 0.1.10 → 0.4.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: d595f1d5699111f14c78b86b8a4a107a2937c836
4
- data.tar.gz: 972b27803771af0620a03bb613746b21ef550100
2
+ SHA256:
3
+ metadata.gz: 8964a224bb312d07bcc1a24ca3df8350c26ee39ae1c1d4437ad53ca6741e9cf8
4
+ data.tar.gz: 38a6fffecdb3f792e0d7cb4bdc08456e8c550bd069a4304d227444727ad0c69e
5
5
  SHA512:
6
- metadata.gz: 1f58cc3bb34cbc0fef99d84d1d219dfbc3c811870f31032197cc4d9ff4e0f83f12038c55f3835d87516984da7d936a91b4c851161519816686162099f39fae27
7
- data.tar.gz: f4ea39ede1d7fa68437ef23974e17eb391fb6b68d3ce34958796d1e8d92e4fcfa2ef529559ecbe423250c5b4551f475ae51efb8617e09aa21b7ecfb7bf15effc
6
+ metadata.gz: 9f84201d8eee6df717d0a99d1464776239476afad86f8ab7bf83a1d711777226c90381478ea3b7579e67f91241e03c4febe60eb01093ed3336a0e44c2aa09bae
7
+ data.tar.gz: df19c602da175197d3f6b2797c1df4314dc63e9d4ee1e48609435ca2d46139028194b570fb05f842b6d4961ff182f6335019644e8f80dbb98c69c9a90b7b6244
checksums.yaml.gz.sig CHANGED
Binary file
data.tar.gz.sig CHANGED
@@ -1,2 +1 @@
1
- )1����e�[5��R�;�&V"#�KnL�f��<m��'L�m���Ħ����Q_����{uA꛴7{5A����C����7���smVm�-Q hXB�[�.�.�� !�Ϟm�$e bJ7ˎ��ly����b� ��kij��j�ݍS��a���k��Aԟ%�ĉ�����b>�`��nlP����i]h(��dn�7�!���[g٧�;�h닉��cj�(�Y�ڶ�i_
2
- ��x6�����x
1
+ 7��!.Ƃ��%륁CH�+e�4a6Q��⿩��Yor�����p�n�x��V���tùW2��P��7xK����_�/�?��݁� ˙����F�%�����m��؟�("}�#�y�^!#E|5���N�� G il7#���>*,�_��bCW��fChcF�=������?f ��(�����LDlREF}hZW3����& vF�贰k�#�C~��{�+萠2�����}
data/lib/polyrex-links.rb CHANGED
@@ -6,18 +6,65 @@ require 'polyrex'
6
6
 
7
7
  class PolyrexLinks < Polyrex
8
8
 
9
- def initialize(x='links/link[name,url]')
10
- super(x)
11
- self.delimiter = ' # '
9
+ def initialize(rawx='links/link[name,url]', delimiter: ' # ', debug: false)
10
+
11
+ x, _ = RXFHelper.read(rawx)
12
+ obj = x.lstrip.sub(/<\?polyrex-links\?>/,
13
+ '<?polyrex schema="links/link[name,url]" delimiter=" # "?>')
14
+ puts 'obj: ' + x.inspect if debug
15
+
16
+ super(obj)
17
+ @delimiter = self.delimiter = delimiter
18
+ @debug = debug
19
+
12
20
  end
13
-
14
- def locate(raw_path)
21
+
22
+ def find(s)
23
+
24
+ found = find_by_link_name s
15
25
 
26
+ if found then
27
+
28
+ path = backtrack_path found
29
+ [link(path.join('/')), path.join('/')]
30
+
31
+ end
32
+
33
+ end
34
+
35
+ def migrate(raws)
36
+
37
+ s, _ = RXFHelper.read(raws)
38
+ pl = PolyrexLinks.new("<?polyrex-links?>\n\n" + s.sub(/<\?[^\?]+\?>/,'').lstrip)
39
+
40
+ pl.each_recursive do |x|
41
+ link, linkpath = find(x.name)
42
+ x.url = link.url if link.url
43
+ end
44
+
45
+ pl
46
+
47
+ end
48
+
49
+ # Returns the Polyrex element for the given path
50
+ #
51
+ def link(s)
52
+
53
+ self.rxpath(s.split('/').map {|x| "link[name='%s']" % x}.join('/')).first
54
+
55
+ end
56
+
57
+ # Returns the url and remaining arguments for the given path
58
+ #
59
+ def locate(raw_path)
60
+
61
+ return nil if raw_path.nil? or raw_path.strip.empty?
16
62
  path = raw_path.sub(/^\//,'')
17
63
  a = path.split('/')
18
64
  a2 = []
19
65
  (a2 << a.clone; a.pop) while a.any?
20
-
66
+ return nil if a2.empty?
67
+
21
68
  mask = "records/link[summary/name='%s']"
22
69
 
23
70
  begin
@@ -27,7 +74,48 @@ class PolyrexLinks < Polyrex
27
74
 
28
75
  # return the found path along with any remaining string which
29
76
  # it didn't find, or it will return nil.
30
- r ? [r + path.sub(c.join('/'),''), path.sub(c.join('/'),'')] : nil
77
+
78
+ puts "c: %s\npath: %s\nr: %s" % [c, path, r].map(&:inspect) if @debug
79
+
80
+ r ? [r, path.sub(c.join('/'),'')] : nil
31
81
  end
82
+
83
+
84
+ # Return a flat Hash object containing all the links. The link path is
85
+ # used as the key and the value is the url
86
+ #
87
+ def to_h()
88
+
89
+ h = {}
90
+
91
+ each_link {|key, value| h[key] = value }
92
+ h
93
+
94
+ end
95
+
96
+ private
97
+
98
+ def backtrack_path(e, a5=[])
99
+
100
+ backtrack_path(e.parent, a5) if e.parent?
101
+ a5 << e.name
102
+
103
+ return a5
104
+ end
105
+
106
+
107
+ def each_link()
108
+
109
+ a = []
110
+
111
+ self.each_recursive() do |record, _, i|
112
+
113
+ a.slice!(i..-1)
114
+ a[i] = record
115
+ yield(a.map(&:name).join('/'), record.url) if block_given?
116
+
117
+ end
118
+
119
+ end
32
120
 
33
121
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: polyrex-links
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.10
4
+ version: 0.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - James Robertson
@@ -10,27 +10,32 @@ bindir: bin
10
10
  cert_chain:
11
11
  - |
12
12
  -----BEGIN CERTIFICATE-----
13
- MIIDXjCCAkagAwIBAgIBATANBgkqhkiG9w0BAQUFADAsMSowKAYDVQQDDCFnZW1t
14
- YXN0ZXIvREM9amFtZXNyb2JlcnRzb24vREM9ZXUwHhcNMTgwMzIxMTQzNzQ3WhcN
15
- MTkwMzIxMTQzNzQ3WjAsMSowKAYDVQQDDCFnZW1tYXN0ZXIvREM9amFtZXNyb2Jl
16
- cnRzb24vREM9ZXUwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDUE5r+
17
- CoqxqOOXr3v0GW1pe7qKUAwPKVr6xJQwZgP+oNWstt/uuQe9ohWT14DigR/GphUw
18
- AOYEYXoy8qa5zzJV0q+LhS1OohliMQBG00vWXcHz9dMtVzcWp1xC68q3Tw9pM85g
19
- mCyqcM2onmB/7CUISigY1zIS2acmihWSzFasaL29d5XNOwFzhkuQUEfL+f4m35An
20
- nPuEY4HyEzA3d4acZOqV4O8bSYeiOu+M+aWdTE1wPUS150VtbR3jebyG9aWqsEad
21
- rQpvmo56nae1bc51HWudEY9t+y2WoT1wWE8/7H0HfobR12adcGElv/4WsfoWnCaM
22
- LEtkGqWVbEgiq/CbAgMBAAGjgYowgYcwCQYDVR0TBAIwADALBgNVHQ8EBAMCBLAw
23
- HQYDVR0OBBYEFJ49MMj/X0rEWIHq31oVALOAEwIJMCYGA1UdEQQfMB2BG2dlbW1h
24
- c3RlckBqYW1lc3JvYmVydHNvbi5ldTAmBgNVHRIEHzAdgRtnZW1tYXN0ZXJAamFt
25
- ZXNyb2JlcnRzb24uZXUwDQYJKoZIhvcNAQEFBQADggEBAGw2ftJrTxQ25tkByit/
26
- 6jJI/StiPRVHdsfDDJF0/1lcNjkVXPVkwix3n8MiCNp+OuKujk+EpuVAvzX/fFYG
27
- 3tXM/alEykb+dLL1/D+evWLCxwPQmIl1qLh52KACVwTp/va63ACH+ICFk/bcNq6d
28
- rRrPR/O5Jgzz9cxTTNVNqkbKj+LccD5GG66AOuo+q6Ze4v7e4+5Iup/9UkG28W6n
29
- CnRyuQWWBapZOCF9peyMD+3pcJQvTkpWdVl9DeLi9F7tnP6h9KYMAdjv/uanNgEg
30
- BPwFsWAbLaLB8f5sRH9pSgr7gqm3ky2fSBk//wtYHz86+AKvwZ0E3pvp6FuWl5Az
31
- iPQ=
13
+ MIIEXjCCAsagAwIBAgIBATANBgkqhkiG9w0BAQsFADAsMSowKAYDVQQDDCFnZW1t
14
+ YXN0ZXIvREM9amFtZXNyb2JlcnRzb24vREM9ZXUwHhcNMjEwMjI3MTUxODE4WhcN
15
+ MjIwMjI3MTUxODE4WjAsMSowKAYDVQQDDCFnZW1tYXN0ZXIvREM9amFtZXNyb2Jl
16
+ cnRzb24vREM9ZXUwggGiMA0GCSqGSIb3DQEBAQUAA4IBjwAwggGKAoIBgQCdtqiT
17
+ 0WUTjIB9AjlZAkqkD9DB5TTRiRmNEN1Hfq4mtVpj56axPBwoR7fuZJSutczmuy9K
18
+ avOwyfG5SZqqPGYAQspwg758CnP6c+rF29lMVYkoR8PiCryQK9tXBGPV33CS+T1k
19
+ 4lQGttd8wgN55YSRkAtl/AuKmJr4zNFwY6kE0fwFWIBaw2grKJBrZUe2WTjBC4to
20
+ GIEP9/ehRvpiPDVsF6KY5QGPsGKDEBBPR/P5ChG6OuP5qv8wKUSw4eLMQbY81n+/
21
+ X2F/8FfpLGKjDboMMygHyWi+pJRiaSqzxB6WL5Q8bnIkelbw4LKhck5kWx0gl5cv
22
+ WLPtarEFK3Ac3kg9FzjsgvW/IJDKDn9TmYWsNKIqGj1j8vdc7sksfcch7rmKRIsD
23
+ zWoLCS+djhi0v2f8u9Yp5cJB0e6oyNHSkMUD44uefHAZOeT/u3kZvL6aOAjpS1A8
24
+ IaxkwwjginilyBHSpyPruxcNyiaDvJ/D+C7xzM5XbkbQzOwFf5Ml0UDwPgsCAwEA
25
+ AaOBijCBhzAJBgNVHRMEAjAAMAsGA1UdDwQEAwIEsDAdBgNVHQ4EFgQUke21GuFM
26
+ jVaog26Uc04gxKe1iCwwJgYDVR0RBB8wHYEbZ2VtbWFzdGVyQGphbWVzcm9iZXJ0
27
+ c29uLmV1MCYGA1UdEgQfMB2BG2dlbW1hc3RlckBqYW1lc3JvYmVydHNvbi5ldTAN
28
+ BgkqhkiG9w0BAQsFAAOCAYEAjIJYPq1LH/BCICN8vgvNFgGs21y/cfvb9xHYlzFW
29
+ rsugnb0Z/o4KFuR4F8JceTgBAhwCKnsXltjamYjw+VfcF/4KVtmgiFKjS35kTCu1
30
+ bTemc4gbHKjwz03kh35lDFD6sfqCumtifHBPNZjYXB3Nxlel+ECHLtj7NP4K14wJ
31
+ yu/k6V++dimd0zKocsIOSwuOUCbn9q3sXu0ZNippHdpyYtaj76BFURASv2xVj4KR
32
+ sIkI6KVVE15q6hrjxLInQX2GH6frDr6I6w7ltuDhI8I3TkW9C/W5vuoHyWCiG9qX
33
+ cBRqqQiCW7xMi8SCyoVCJydO3Js8E0gFrbg6R9XcsIt2yaktptXEcY4hm+yWlkJD
34
+ Nnidax6k9ikNRlpzL5AhDq6nRARm+7bJAr/4Ln3SswnLtXW6//WkQyReUJMDgRo9
35
+ 5x/50O2gHQvmLgSVk8EsWqPZ6B8tMZ9h/ttCIkW33ewCmHrrxH9suuyqbC/SaiEf
36
+ 2qE86MpuEcgDiX59WiP5GiBx
32
37
  -----END CERTIFICATE-----
33
- date: 2018-03-31 00:00:00.000000000 Z
38
+ date: 2021-05-25 00:00:00.000000000 Z
34
39
  dependencies:
35
40
  - !ruby/object:Gem::Dependency
36
41
  name: polyrex
@@ -38,22 +43,22 @@ dependencies:
38
43
  requirements:
39
44
  - - "~>"
40
45
  - !ruby/object:Gem::Version
41
- version: '1.2'
46
+ version: '1.3'
42
47
  - - ">="
43
48
  - !ruby/object:Gem::Version
44
- version: 1.2.0
49
+ version: 1.3.2
45
50
  type: :runtime
46
51
  prerelease: false
47
52
  version_requirements: !ruby/object:Gem::Requirement
48
53
  requirements:
49
54
  - - "~>"
50
55
  - !ruby/object:Gem::Version
51
- version: '1.2'
56
+ version: '1.3'
52
57
  - - ">="
53
58
  - !ruby/object:Gem::Version
54
- version: 1.2.0
59
+ version: 1.3.2
55
60
  description:
56
- email: james@jamesrobertson.eu
61
+ email: digital.robertson@gmail.com
57
62
  executables: []
58
63
  extensions: []
59
64
  extra_rdoc_files: []
@@ -78,8 +83,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
78
83
  - !ruby/object:Gem::Version
79
84
  version: '0'
80
85
  requirements: []
81
- rubyforge_project:
82
- rubygems_version: 2.6.13
86
+ rubygems_version: 3.1.2
83
87
  signing_key:
84
88
  specification_version: 4
85
89
  summary: A convenient gem for retrieving a link from a hierarchical lookup table from
metadata.gz.sig CHANGED
@@ -1 +1 @@
1
- �d'@�`�Y��V+FF�: ��.J��� ��uR-������L3^t/h��(����*�s��G �����[Mwp禐r��(�t�JwƧ��2��ɖ�V��˥��%~�@ǖN��i��A�M'j�K�g���gu����)�cK{Z�' �
1
+ �`�粇޻[�����lZc��I\Q��(d51{b/�NP�`�Kq09�t�K�X��<�>�7�僥_��aGa�&��GY1�|�s���:sQ��At��j�?ɱ0�˫ʆ��"o�`H��