Sha256: 8fa8ed04ecbf3f3ff34f2d487dfcd5bec9cd9009cb42cf265517ba544f95d692

Contents?: true

Size: 976 Bytes

Versions: 3

Compression:

Stored size: 976 Bytes

Contents

module VerifiedDouble
  class ParseMethodSignature
    attr_reader :string

    def initialize(string)
      @string = string
    end

    def args
      results = string.scan(/\((.*)\)/)[0]
      if results
        results[0].split(',').map{|arg| MethodSignatureValue.new(eval(arg)) }
      else
        []
      end
    end

    def class_name
      string.scan(/(.*)[\.\#]/)[0][0]
    end

    def execute
      MethodSignature.new(
        class_name: class_name,
        method_operator: method_operator,
        method: method,
        args: args,
        return_values: return_values)
    end

    def method
      string.scan(/[\.\#](.*?)(=>|\(|$)/)[0][0]
    end

    def method_operator
      string.scan(/[\.\#]/)[0][0]
    end

    def return_values
      results = string.scan(/=>(.*)/)[0]
      if results
        results[0].split(',').map{|return_value|
          MethodSignatureValue.new(eval(return_value)) }
      else
        []
      end
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
verified_double-0.1.1 lib/verified_double/parse_method_signature.rb
verified_double-0.1.0 lib/verified_double/parse_method_signature.rb
verified_double-0.0.2 lib/verified_double/parse_method_signature.rb