Class: Ace::Support::Nav::Atoms::UriParser
- Inherits:
-
Object
- Object
- Ace::Support::Nav::Atoms::UriParser
- Defined in:
- lib/ace/support/nav/atoms/uri_parser.rb
Overview
Parses resource URIs
Instance Method Summary collapse
- #extract_protocol(uri_string) ⇒ Object
-
#initialize(config_loader: nil) ⇒ UriParser
constructor
A new instance of UriParser.
- #parse(uri_string) ⇒ Object
- #valid_protocol?(protocol) ⇒ Boolean
- #valid_protocols ⇒ Object
Constructor Details
#initialize(config_loader: nil) ⇒ UriParser
Returns a new instance of UriParser.
11 12 13 |
# File 'lib/ace/support/nav/atoms/uri_parser.rb', line 11 def initialize(config_loader: nil) @config_loader = config_loader || Molecules::ConfigLoader.new end |
Instance Method Details
#extract_protocol(uri_string) ⇒ Object
42 43 44 45 |
# File 'lib/ace/support/nav/atoms/uri_parser.rb', line 42 def extract_protocol(uri_string) return nil unless uri_string.include?("://") uri_string.split("://", 2)[0] end |
#parse(uri_string) ⇒ Object
15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
# File 'lib/ace/support/nav/atoms/uri_parser.rb', line 15 def parse(uri_string) return nil unless uri_string.is_a?(String) return nil unless uri_string.include?("://") parts = uri_string.split("://", 2) protocol = parts[0] rest = parts[1] return nil unless valid_protocol?(protocol) return {protocol: protocol, source: nil, path: nil} if rest.nil? || rest.empty? # Check for source-specific syntax (@source/path or @source) if rest.start_with?("@") parse_source_specific(protocol, rest) else {protocol: protocol, source: nil, path: rest} end end |
#valid_protocol?(protocol) ⇒ Boolean
34 35 36 |
# File 'lib/ace/support/nav/atoms/uri_parser.rb', line 34 def valid_protocol?(protocol) @config_loader.valid_protocol?(protocol) end |
#valid_protocols ⇒ Object
38 39 40 |
# File 'lib/ace/support/nav/atoms/uri_parser.rb', line 38 def valid_protocols @config_loader.valid_protocols end |