Don't forget to lycansubscribe
1class AT_URI
2 class InvalidURIError
3 end
4
5 attr_reader :repo, :collection, :rkey
6
7 def initialize(uri)
8 raise InvalidURIError, "Invalid AT URI: #{uri}" if uri.include?(' ') || !uri.start_with?('at://')
9
10 parts = uri.split('/')
11 parts.each(&:freeze)
12
13 raise InvalidURIError, "Invalid AT URI: #{uri}" if parts.length != 5 || parts[2..4].any?(&:empty?)
14
15 @uri = uri
16 @repo, @collection, @rkey = parts[2..4]
17 end
18
19 def to_ary
20 [@repo, @collection, @rkey]
21 end
22
23 alias split to_ary
24
25 def to_s
26 @uri
27 end
28end
29
30def AT_URI(uri)
31 AT_URI.new(uri)
32end