Class: AgentsSkillVault::UrlParser
- Inherits:
-
Object
- Object
- AgentsSkillVault::UrlParser
- Defined in:
- lib/agents_skill_vault/url_parser.rb
Overview
Parses GitHub URLs into their component parts.
Supports repository URLs, folder URLs (tree), and file URLs (blob).
Defined Under Namespace
Classes: ParseResult, PathSegmentsData
Constant Summary collapse
- GITHUB_HOST =
"github.com"
Class Method Summary collapse
-
.parse(url) ⇒ ParseResult
Parses a GitHub URL into its components.
Class Method Details
.parse(url) ⇒ ParseResult
Parses a GitHub URL into its components.
Uses Addressable::URI for robust URL parsing with proper encoding/decoding.
120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 |
# File 'lib/agents_skill_vault/url_parser.rb', line 120 def self.parse(url) uri = Addressable::URI.parse(url) validate_github_url!(uri, url) segments = uri.path.sub(%r{^/}, "").split("/").map { |s| Addressable::URI.unencode(s) } username = segments[0] repo = segments[1] path_data = parse_path_segments(segments) ParseResult.new( username: username, repo: repo, branch: path_data.branch, relative_path: path_data.relative_path, type: path_data.type, skill_name: path_data.skill_name, skill_folder_path: path_data.skill_folder_path ) end |