class Opal::Rewriters::DotJsSyntax

Public Instance Methods

on_send(node) click to toggle source
Calls superclass method
# File lib/opal/rewriters/dot_js_syntax.rb, line 8
def on_send(node)
  recv, meth, *args = *node
  if recv && recv.type == :send
    recv_of_recv, meth_of_recv, _ = *recv
    if meth_of_recv == :JS
      case meth
      when :[]
        if args.size != 1
          error '.JS[:property] syntax supports only one argument'
        end
        property = args.first

        node = to_js_attr_call(recv_of_recv, property)
      when :[]=
        if args.size != 2
          error '.JS[:property]= syntax supports only two arguments'
        end

        property, value = *args
        node = to_js_attr_assign_call(recv_of_recv, property, value)
      else
        node = to_native_js_call(recv_of_recv, meth, args)
      end
      super(node)
    else
      super
    end
  else
    super
  end
end
to_js_attr_assign_call(recv, property, value) click to toggle source

@param recv [AST::Node] receiver of .JS[]= method @param property [AST::Node] property passed to brackets @param value [AST::Node] value of assignment

# File lib/opal/rewriters/dot_js_syntax.rb, line 56
def to_js_attr_assign_call(recv, property, value)
  s(:jsattrasgn, recv, property, value)
end
to_js_attr_call(recv, property) click to toggle source

@param recv [AST::Node] receiver of .JS[] method @param property [AST::Node] argument passed to .JS[] method

# File lib/opal/rewriters/dot_js_syntax.rb, line 49
def to_js_attr_call(recv, property)
  s(:jsattr, recv, property)
end
to_native_js_call(recv, meth, args) click to toggle source

@param recv [AST::Node] receiver of .JS. method @param meth [Symbol] name of the JS method @param args [Array<AST::Node>] list of the arguments passed to JS method

# File lib/opal/rewriters/dot_js_syntax.rb, line 43
def to_native_js_call(recv, meth, args)
  s(:jscall, recv, meth, *args)
end