class URI::Source
Must be kept in sync with the one in Tapioca
def build(gem_name:, gem_version:, path:, line_number:)
def build(gem_name:, gem_version:, path:, line_number:) super( { scheme: "source", host: gem_name, path: PARSER.escape("/#{gem_version}/#{path}"), fragment: line_number, } ) end
def check_host(v)
def check_host(v) return true unless v if /[A-Za-z][A-Za-z0-9\-_]*/ !~ v raise InvalidComponentError, "bad component(expected gem name): #{v}" end true end
def set_path(v) # rubocop:disable Naming/AccessorMethodName
: (String? v) -> void
def set_path(v) # rubocop:disable Naming/AccessorMethodName return if v.nil? gem_version, path = v.delete_prefix("/").split("/", 2) @gem_version = gem_version #: String? @path = path #: String? end
def to_s
def to_s "source://#{gem_name}/#{gem_version}#{path}##{line_number}" end