Sha256: 8a05138075fc2342bd62d730939b7342493bd898030d866bd81a3a96de9fb90c

Contents?: true

Size: 926 Bytes

Versions: 9

Compression:

Stored size: 926 Bytes

Contents

module Fasterer
  class MethodDefinition
    attr_reader :element # for testing purposes
    attr_reader :method_name
    attr_reader :block_argument_name
    attr_reader :body

    def initialize(element)
      @element = element # Ripper element
      set_method_name
      set_body

      if arguments_element.any?
        set_argument_names
        set_block_argument_name
      end
    end

    def has_block?
      !!@block_argument_name
    end

    private

    def arguments_element
      element[2].drop(1)
    end

    def set_method_name
      @method_name = @element[1]
    end

    def set_argument_names
      # TODO
    end

    def set_body
      @body = @element[3..-1]
    end

    def set_block_argument_name
      if last_argument.to_s.start_with?('&')
        @block_argument_name = last_argument.to_s[1..-1].to_sym
      end
    end

    def last_argument
      arguments_element.last
    end
  end
end

Version data entries

9 entries across 9 versions & 1 rubygems

Version Path
fasterer-0.1.8 lib/fasterer/method_definition.rb
fasterer-0.1.7 lib/fasterer/method_definition.rb
fasterer-0.1.6 lib/fasterer/method_definition.rb
fasterer-0.1.5 lib/fasterer/method_definition.rb
fasterer-0.1.4 lib/fasterer/method_definition.rb
fasterer-0.1.3 lib/fasterer/method_definition.rb
fasterer-0.1.2 lib/fasterer/method_definition.rb
fasterer-0.1.1 lib/fasterer/method_definition.rb
fasterer-0.1.0 lib/fasterer/method_definition.rb