polyrex-links 0.2.0 → 0.4.1

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
- SHA1:
3
- metadata.gz: 41424c9dc0def1657a8c5490cfbacf005b7a2cef
4
- data.tar.gz: d63105703070c31f9526c95b9522a11380f17846
2
+ SHA256:
3
+ metadata.gz: 07434dc35cbabb41af50c6d49a6ef3c2fa83fd95654d04422c887c69c1653a6e
4
+ data.tar.gz: fe895d84d31ebe6b12bc12f3a0a098544e9365fd070e073bfa38db78be88fea0
5
5
  SHA512:
6
- metadata.gz: 20905b20dd68c14e4edc7a8ad80381be0aac6cfb2ce7a6ccc74e779e6c67aad4da878b92d04eb0f86bff79ed37df58a4e61c03436ced0ee6e4d6f6d692477ef1
7
- data.tar.gz: c7f5bf88e9a16b74eb17ab975c5fac0fb73bed5ac65bf99721596d7a3dcb4685d7f631543c61c2a44b43b0129999ee48dd676c3b0c1960e86942a869959185e4
6
+ metadata.gz: d77dbb86612baae60a9005c570abe89b8efc2a7953cee7954e3e5ccada08f117e83a408c6fc7695409c29a109af72d5ce763d7e2ca083b13dba3e1f2cbd03339
7
+ data.tar.gz: 8b4aa96fb8455b9fe8083056bb41067afadd877972fb816ab02ecc445d40a728a40d2e12452e8f5906dfb256e2965ea4241672d3f9f1062566e9dd6cab1c4a8f
checksums.yaml.gz.sig CHANGED
Binary file
data.tar.gz.sig CHANGED
Binary file
data/lib/polyrex-links.rb CHANGED
@@ -6,19 +6,66 @@ require 'polyrex'
6
6
 
7
7
  class PolyrexLinks < Polyrex
8
8
 
9
- def initialize(x='links/link[name,url]', delimiter: ' # ', debug: false)
10
- super(x)
11
- self.delimiter = 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
12
18
  @debug = debug
19
+
13
20
  end
14
-
15
- def locate(raw_path)
21
+
22
+ def find(s)
23
+
24
+ found = find_by_link_name s
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" +
39
+ s.sub(/<\?[^\?]+\?>/,'').lstrip)
40
+
41
+ pl.each_recursive do |x|
42
+ link, linkpath = find(x.name)
43
+ x.url = link.url if link and link.url
44
+ end
45
+
46
+ pl
47
+
48
+ end
49
+
50
+ # Returns the Polyrex element for the given path
51
+ #
52
+ def link(s)
53
+
54
+ self.rxpath(s.split('/').map {|x| "link[name='%s']" % x}.join('/')).first
16
55
 
56
+ end
57
+
58
+ # Returns the url and remaining arguments for the given path
59
+ #
60
+ def locate(raw_path)
61
+
62
+ return nil if raw_path.nil? or raw_path.strip.empty?
17
63
  path = raw_path.sub(/^\//,'')
18
64
  a = path.split('/')
19
65
  a2 = []
20
66
  (a2 << a.clone; a.pop) while a.any?
21
-
67
+ return nil if a2.empty?
68
+
22
69
  mask = "records/link[summary/name='%s']"
23
70
 
24
71
  begin
@@ -30,8 +77,50 @@ class PolyrexLinks < Polyrex
30
77
  # it didn't find, or it will return nil.
31
78
 
32
79
  puts "c: %s\npath: %s\nr: %s" % [c, path, r].map(&:inspect) if @debug
33
-
80
+
34
81
  r ? [r, path.sub(c.join('/'),'')] : nil
35
82
  end
83
+
84
+
85
+ # Return a flat Hash object containing all the links. The link path is
86
+ # used as the key and the value is the url
87
+ #
88
+ def to_h()
89
+
90
+ h = {}
91
+
92
+ each_link {|key, value| h[key] = value }
93
+ h
94
+
95
+ end
96
+
97
+ def to_s()
98
+ "<?polyrex-links?>\n\n" + super(header: false)
99
+ end
100
+
101
+ private
102
+
103
+ def backtrack_path(e, a5=[])
104
+
105
+ backtrack_path(e.parent, a5) if e.parent?
106
+ a5 << e.name
107
+
108
+ return a5
109
+ end
110
+
111
+
112
+ def each_link()
113
+
114
+ a = []
115
+
116
+ self.each_recursive() do |record, _, i|
117
+
118
+ a.slice!(i..-1)
119
+ a[i] = record
120
+ yield(a.map(&:name).join('/'), record.url) if block_given?
121
+
122
+ end
123
+
124
+ end
36
125
 
37
126
  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.2.0
4
+ version: 0.4.1
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-04-01 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
Binary file