lib/solargraph/convention.rb
# frozen_string_literal: true module Solargraph # Conventions provide a way to modify an ApiMap based on expectations about # one of its sources. # module Convention autoload :Base, 'solargraph/convention/base' autoload :Gemfile, 'solargraph/convention/gemfile' autoload :Gemspec, 'solargraph/convention/gemspec' autoload :Rakefile, 'solargraph/convention/rakefile' autoload :StructDefinition, 'solargraph/convention/struct_definition' autoload :DataDefinition, 'solargraph/convention/data_definition' autoload :ActiveSupportConcern, 'solargraph/convention/active_support_concern' # @type [Set<Convention::Base>] @@conventions = Set.new # @param convention [Class<Convention::Base>] # @return [void] def self.register convention @@conventions.add convention.new end # @param convention [Class<Convention::Base>] # @return [void] def self.unregister convention @@conventions.delete_if { |c| c.is_a?(convention) } end # @param source_map [SourceMap] # @return [Environ] def self.for_local(source_map) result = Environ.new @@conventions.each do |conv| result.merge conv.local(source_map) end result end # @param doc_map [DocMap] # @return [Environ] def self.for_global(doc_map) result = Environ.new @@conventions.each do |conv| result.merge conv.global(doc_map) end result end # Provides any additional method pins based on the described object. # # @param api_map [ApiMap] # @param rooted_tag [String] A fully qualified namespace, with # generic parameter values if applicable # @param scope [Symbol] :class or :instance # @param visibility [Array<Symbol>] :public, :protected, and/or :private # @param deep [Boolean] # @param skip [Set<String>] # @param no_core [Boolean] Skip core classes if true # # @return [Environ] def self.for_object api_map, rooted_tag, scope, visibility, deep, skip, no_core result = Environ.new @@conventions.each do |conv| result.merge conv.object(api_map, rooted_tag, scope, visibility, deep, skip, no_core) end result end register Gemfile register Gemspec register Rakefile register ActiveSupportConcern end end