Class: Fastererer::Argument

Inherits:
Object
  • Object
show all
Defined in:
lib/fastererer/method_call.rb

Constant Summary collapse

TYPE_BY_NODE_CLASS =
{
  Prism::KeywordHashNode => :hash,
  Prism::HashNode => :hash,
  Prism::StringNode => :string,
  Prism::IntegerNode => :integer,
  Prism::SymbolNode => :symbol,
  Prism::FloatNode => :float,
  Prism::RegularExpressionNode => :regexp,
  Prism::NilNode => :nil,
  Prism::TrueNode => :boolean,
  Prism::FalseNode => :boolean,
  Prism::LocalVariableReadNode => :variable,
  Prism::CallNode => :method_call
}.freeze

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(node) ⇒ Argument

Returns a new instance of Argument.



148
149
150
# File 'lib/fastererer/method_call.rb', line 148

def initialize(node)
  @element = node
end

Instance Attribute Details

#elementObject (readonly)

Returns the value of attribute element.



146
147
148
# File 'lib/fastererer/method_call.rb', line 146

def element
  @element
end

Instance Method Details

#typeObject



167
168
169
# File 'lib/fastererer/method_call.rb', line 167

def type
  @type ||= TYPE_BY_NODE_CLASS[element.class] || :unknown
end

#valueObject



171
172
173
174
175
176
177
178
179
# File 'lib/fastererer/method_call.rb', line 171

def value
  return @value if defined?(@value)

  @value = case element
           when Prism::StringNode then element.unescaped
           when Prism::IntegerNode, Prism::FloatNode then element.value
           when Prism::SymbolNode then element.unescaped.to_sym
           end
end