Sha256: a49d6e8fc922923eed386a9c42d11fd452a17f9d471f2990ba89260f36358c84

Contents?: true

Size: 1.48 KB

Versions: 5

Compression:

Stored size: 1.48 KB

Contents

module Inch
  module CodeObject
    module Provider
      module YARD
        # Parses the source tree (using YARD)
        class Parser
          IGNORE_TYPES      = [:macro]

          # Helper method to parse an instance with the given +args+
          #
          # @see #parse
          # @return [CodeObject::Provider::YARD] the instance that ran
          def self.parse(*args)
            parser = self.new
            parser.parse(*args)
            parser
          end

          # @param dir [String] directory
          # @param config [Inch::Config::Codebase] configuration for codebase
          # @return [void]
          def parse(dir, config)
            old_dir = Dir.pwd
            Dir.chdir dir
            parse_yard_objects(config.included_files, config.excluded_files)
            inject_base_dir(dir)
            Dir.chdir old_dir
          end

          # @return [Array<YARD::Object::Base>]
          def objects
            @objects ||= parsed_objects.map do |o|
              YARD::Object.for(o) unless IGNORE_TYPES.include?(o.type)
            end.compact
          end

          private

          def parse_yard_objects(paths, excluded)
            ::YARD::Registry.clear
            ::YARD.parse(paths, excluded)
          end

          def inject_base_dir(dir)
            objects.each do |object|
              object.base_dir = dir
            end
          end

          def parsed_objects
            ::YARD::Registry.all
          end
        end
      end
    end
  end
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
inch-0.3.3 lib/inch/code_object/provider/yard/parser.rb
inch-0.3.3.rc1 lib/inch/code_object/provider/yard/parser.rb
inch-0.3.2 lib/inch/code_object/provider/yard/parser.rb
inch-0.3.2.rc2 lib/inch/code_object/provider/yard/parser.rb
inch-0.3.2.rc1 lib/inch/code_object/provider/yard/parser.rb