lib/inch/language/ruby/provider/yard.rb

Summary

Maintainability
A
0 mins
Test Coverage
module Inch
  module Language
    module Ruby
      module Provider
        # Parses the source tree (using YARD)
        module YARD
          # Returns +true+ if the docstring was generated by YARD
          #
          # @param docstring [Docstring,String]
          # @param method [MethodObject]
          def self.implicit_docstring?(docstring, method)
            name = method.name
            if method.getter?
              docstring.to_s == "Returns the value of attribute #{name}"
            elsif method.setter?
              basename = name.to_s.gsub(/(\=)$/, '')
              docstring.to_s == "Sets the attribute #{basename}"
            else
              false
            end
          end

          # Returns +true+ if the tag was generated by YARD
          #
          # @param tag [::YARD::Tag]
          # @param method [MethodObject]
          def self.implicit_tag?(tag, method)
            name = method.name
            if method.getter?
              tag.tag_name == 'return' &&
                tag.text == "the current value of #{name}"
            elsif method.setter?
              tag.tag_name == 'return' &&
                tag.text == 'the newly set value'
            else
              false
            end
          end

          # @see Provider.parse
          def self.parse(dir, config)
            Parser.parse(dir, config)
          end
        end
      end
    end
  end
end

require 'logger'
require 'yard'

log.level = ::Logger::UNKNOWN # basically disable YARD's logging

require 'inch/language/ruby/provider/yard/parser'
require 'inch/language/ruby/provider/yard/docstring'
require 'inch/language/ruby/provider/yard/nodoc_helper'
require 'inch/language/ruby/provider/yard/object'