Module: Rbs::Merge
- Defined in:
- lib/rbs/merge.rb,
lib/rbs/merge/version.rb,
lib/rbs/merge/provider.rb,
lib/rbs/merge/freeze_node.rb,
lib/rbs/merge/debug_logger.rb,
lib/rbs/merge/file_aligner.rb,
lib/rbs/merge/merge_result.rb,
lib/rbs/merge/node_wrapper.rb,
lib/rbs/merge/smart_merger.rb,
lib/rbs/merge/file_analysis.rb,
lib/rbs/merge/comment_tracker.rb,
lib/rbs/merge/conflict_resolver.rb,
lib/rbs/merge/native_projection.rb,
lib/rbs/merge/backends/rbs_backend.rb,
lib/rbs/merge/node_type_normalizer.rb,
lib/rbs/merge/rspec/provider_snapshot_extension.rb,
sig/rbs/merge.rbs
Defined Under Namespace
Modules: Backends, DebugLogger, NativeProjection, NodeTypeNormalizer, RSpec, Version Classes: CommentTracker, ConflictResolver, CorruptionDetectedError, DestinationParseError, Error, FileAligner, FileAnalysis, FreezeNode, MergeResult, NodeWrapper, ParseError, Provider, SmartMerger, TemplateParseError
Constant Summary collapse
- BACKEND_REGISTRY =
Tracks whether backends were registered, without class instance variables.
Struct.new(:registered, :mutex).new(false, Mutex.new)
- RBS_BACKEND_REFERENCE =
TreeHaver::BackendReference.new(id: 'rbs', family: 'rbs').freeze
- TREE_SITTER_BACKEND_REFERENCE =
TreeHaver::KREUZBERG_LANGUAGE_PACK_BACKEND
- VERSION =
Current gem version exposed at the traditional constant location.
Version::VERSION
- NodeTypingNormalizer =
Alias for the shared normalizer module from ast-merge
Ast::Merge::NodeTyping::Normalizer
Class Method Summary collapse
- .available_rbs_backends ⇒ Object
- .merge_provider ⇒ Provider
-
.register_backend! ⇒ Object
private
Register the current RBS parsing entrypoints with TreeHaver.
- .register_provider!(replace: false) ⇒ Object
Class Method Details
.available_rbs_backends ⇒ Object
135 136 137 138 139 140 |
# File 'lib/rbs/merge.rb', line 135 def available_rbs_backends backends = [RBS_BACKEND_REFERENCE] registrations = TreeHaver.registered_languages(:rbs) backends << TREE_SITTER_BACKEND_REFERENCE if registrations.key?(:tree_sitter) || registrations.key?(:tslp) backends end |
.merge_provider ⇒ Provider
142 143 144 |
# File 'lib/rbs/merge.rb', line 142 def merge_provider @merge_provider ||= Provider.new end |
.register_backend! ⇒ Object
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
Register the current RBS parsing entrypoints with TreeHaver.
This registers:
- the RBS gem backend
- the tree-sitter-rbs grammar when the sibling TreeHaver runtime can load it
104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 |
# File 'lib/rbs/merge.rb', line 104 def register_backend! BACKEND_REGISTRY.mutex.synchronize do return if BACKEND_REGISTRY.registered # Register the RBS gem backend (for MRI Ruby) TreeHaver::BackendRegistry.register(RBS_BACKEND_REFERENCE) TreeHaver.register_language( :rbs, backend_module: Backends::RbsBackend, backend_type: :rbs, gem_name: 'rbs' ) # Also register the tree-sitter-rbs grammar when present. grammar_finder = TreeHaver::GrammarFinder.new(:rbs) grammar_finder.register! if grammar_finder.available? TreeHaver::BackendRegistry.register_tag(:rbs_backend, category: :backend, backend_name: :rbs) do Backends::RbsBackend.available? end TreeHaver::BackendRegistry.register_tag(:rbs_gem, category: :gem, backend_name: :rbs_gem) do Backends::RbsBackend.available? end TreeHaver::BackendRegistry.register_tag(:rbs_grammar, category: :grammar, backend_name: :rbs_grammar) do TreeHaver::GrammarFinder.new(:rbs).available? end BACKEND_REGISTRY.registered = true end end |
.register_provider!(replace: false) ⇒ Object
146 147 148 |
# File 'lib/rbs/merge.rb', line 146 def register_provider!(replace: false) Ast::Merge.register_provider(merge_provider, replace: replace) end |