Class: URI::Source
- Inherits:
-
File
- Object
- File
- URI::Source
- Extended by:
- T::Sig
- Defined in:
- lib/ruby_lsp/requests/support/source_uri.rb
Overview
Must be kept in sync with the one in Tapioca
Constant Summary collapse
- COMPONENT =
T.let( [ :scheme, :gem_name, :gem_version, :path, :line_number, ].freeze, T::Array[Symbol], )
- @@schemes =
rubocop:disable Style/ClassVars
T.let(@@schemes, T::Hash[String, T.untyped])
Instance Attribute Summary collapse
-
#gem_version ⇒ Object
readonly
Returns the value of attribute gem_version.
Class Method Summary collapse
Instance Method Summary collapse
- #check_host(v) ⇒ Object
-
#set_path(v) ⇒ Object
rubocop:disable Naming/AccessorMethodName.
- #to_s ⇒ Object
Instance Attribute Details
#gem_version ⇒ Object (readonly)
Returns the value of attribute gem_version.
26 27 28 |
# File 'lib/ruby_lsp/requests/support/source_uri.rb', line 26 def gem_version @gem_version end |
Class Method Details
.build(gem_name:, gem_version:, path:, line_number:) ⇒ Object
39 40 41 42 43 44 45 46 47 48 |
# File 'lib/ruby_lsp/requests/support/source_uri.rb', line 39 def build(gem_name:, gem_version:, path:, line_number:) super( { scheme: "source", host: gem_name, path: DEFAULT_PARSER.escape("/#{gem_version}/#{path}"), fragment: line_number, } ) end |
Instance Method Details
#check_host(v) ⇒ Object
62 63 64 65 66 67 68 69 70 71 |
# File 'lib/ruby_lsp/requests/support/source_uri.rb', line 62 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 |
#set_path(v) ⇒ Object
rubocop:disable Naming/AccessorMethodName
52 53 54 55 56 57 58 59 |
# File 'lib/ruby_lsp/requests/support/source_uri.rb', line 52 def set_path(v) # rubocop:disable Naming/AccessorMethodName return if v.nil? gem_version, path = v.delete_prefix("/").split("/", 2) @gem_version = T.let(gem_version, T.nilable(String)) @path = T.let(path, T.nilable(String)) end |
#to_s ⇒ Object
74 75 76 |
# File 'lib/ruby_lsp/requests/support/source_uri.rb', line 74 def to_s "source://#{gem_name}/#{gem_version}#{path}##{line_number}" end |