Sha256: 826db6f34a629d22041e36bfd9b26bb753f777a66f0530776dbbcd44324579a3

Contents?: true

Size: 1.38 KB

Versions: 1

Compression:

Stored size: 1.38 KB

Contents

module YARD
  module Handlers
    module Watir
      #
      # @private
      #

      class AttributesHandler < YARD::Handlers::Ruby::Base
        handles method_call(:attributes)

        TYPES = {
          :string => "String",
          :bool => "Boolean",
          :int => "Integer"
        }

        def process
          attributes = try_eval

          if attributes.nil?
            p :ignoring => statement.source, :in => namespace.to_s
            return
          end

          TYPES.each do |type, return_type|
            if attributes.member? type
              create_attributes attributes[type], return_type
            end
          end
        end

        private

        def create_attributes(names, return_type)
          names.each do |attribute_name|
            p :adding => "#{namespace}##{attribute_name}"
            attribute_name = "#{attribute_name}?".to_sym if return_type == "Boolean"
            register MethodObject.new(namespace, attribute_name, scope) do |o|
              o.visibility = :public
              o.explicit   = false
              o.docstring.add_tag YARD::Tags::Tag.new(:return, "", return_type)
            end
          end
        end

        def try_eval
          eval "{#{statement.parameters.source}}"
        rescue SyntaxError, StandardError
          nil
        end

      end # AttributesHandler
    end # Watir
  end # Handlers
end # YARD

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
watir-webdriver-0.6.2 lib/yard/handlers/watir.rb