lib/inch/language/javascript/code_object/function_object.rb
require 'inch/language/javascript/code_object/function_parameter_object'
module Inch
module Language
module JavaScript
module CodeObject
# Proxy class for functions
class FunctionObject < Base
def bang_name?
self[:bang_name?]
end
def getter?
self[:getter?]
end
def has_parameters?
!parameters.empty?
end
MANY_PARAMETERS_THRESHOLD = 3
def has_many_parameters?
parameters.size > MANY_PARAMETERS_THRESHOLD
end
def has_many_lines?
false
end
def parameter(name)
parameters.find { |p| p.name == name.to_s }
end
def parameters
@parameters ||= self[:parameters].map do |param_attr|
FunctionParameterObject.new(param_attr)
end
end
def overridden?
self[:overridden?]
end
def overridden_method
@overridden_method ||=
object_lookup.find(self[:overridden_method_fullname])
end
def return_mentioned?
self[:return_mentioned?]
end
def return_described?
self[:return_described?]
end
def return_typed?
self[:return_typed?]
end
def setter?
self[:setter?]
end
def source
self[:source?]
end
def questioning_name?
self[:questioning_name?]
end
end
end
end
end
end