Sha256: fd2455c5fc94f7adde68518ed727abf30644dc9832d64ff3131298eb17cf5e84

Contents?: true

Size: 1.4 KB

Versions: 7

Compression:

Stored size: 1.4 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 if $DEBUG
            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}" if $DEBUG
            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

7 entries across 7 versions & 1 rubygems

Version Path
watir-webdriver-0.6.9 lib/yard/handlers/watir.rb
watir-webdriver-0.6.8 lib/yard/handlers/watir.rb
watir-webdriver-0.6.7 lib/yard/handlers/watir.rb
watir-webdriver-0.6.6 lib/yard/handlers/watir.rb
watir-webdriver-0.6.5 lib/yard/handlers/watir.rb
watir-webdriver-0.6.4 lib/yard/handlers/watir.rb
watir-webdriver-0.6.3 lib/yard/handlers/watir.rb