Sha256: 20ea28acff864d982030f3822c4129fbe9064890e7e23c97b3b77152df8fdbe6

Contents?: true

Size: 1.37 KB

Versions: 11

Compression:

Stored size: 1.37 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

Version data entries

11 entries across 11 versions & 1 rubygems

Version Path
watir-webdriver-0.6.1 lib/yard/handlers/watir.rb
watir-webdriver-0.6.0 lib/yard/handlers/watir.rb
watir-webdriver-0.5.8 lib/yard/handlers/watir.rb
watir-webdriver-0.5.7 lib/yard/handlers/watir.rb
watir-webdriver-0.5.6 lib/yard/handlers/watir.rb
watir-webdriver-0.5.5 lib/yard/handlers/watir.rb
watir-webdriver-0.5.4 lib/yard/handlers/watir.rb
watir-webdriver-0.5.3 lib/yard/handlers/watir.rb
watir-webdriver-0.5.2 lib/yard/handlers/watir.rb
watir-webdriver-0.5.1 lib/yard/handlers/watir.rb
watir-webdriver-0.5.0 lib/yard/handlers/watir.rb