module Kenma::Macro::Basic

Public Instance Methods

NODE_GASGN(node, parent) click to toggle source

$left = right

# File lib/kenma/macro/basic.rb, line 53
def NODE_GASGN(node, parent)
  left, right = node.children
  name = left.to_s.delete_prefix("$").to_sym
  if bind.local_variable_defined?(name)
    [:GASGN, [bind.local_variable_get(name), right]]
  else
    node
  end
end
NODE_GVAR(node, parent) click to toggle source

$node

# File lib/kenma/macro/basic.rb, line 43
def NODE_GVAR(node, parent)
  name = node.children.first.to_s.delete_prefix("$").to_sym
  if bind.local_variable_defined?(name)
    bind.local_variable_get(name)
  else
    node
  end
end
eval!(args) click to toggle source
# File lib/kenma/macro/basic.rb, line 36
def eval!(args)
  data = bind.eval(args.source)
  RubyVM::AbstractSyntaxTree.parse(data.inspect).children.last
end
node_bind!(args) click to toggle source
# File lib/kenma/macro/basic.rb, line 31
def node_bind!(args)
  bind.eval(args.source)
end
stringify!(args) click to toggle source
# File lib/kenma/macro/basic.rb, line 17
def stringify!(args)
  if args.respond_to?(:source)
    [:STR, [args.source]]
  else
    [:STR, [args.to_s]]
  end
end
symbolify!(args) click to toggle source
# File lib/kenma/macro/basic.rb, line 12
def symbolify!(args)
  [:LIT, [args.source.to_sym]]
end
unstringify!(args) click to toggle source
# File lib/kenma/macro/basic.rb, line 26
def unstringify!(args)
  RubyVM::AbstractSyntaxTree.parse(bind.eval(args.source)).children.last
end