class Opal::Rewriters::JsReservedWords
def self.valid_ivar_name?(name)
def self.valid_ivar_name?(name) not (PROTO_SPECIAL_PROPS =~ name or PROTO_SPECIAL_METHODS =~ name) end
def self.valid_name?(name)
def self.valid_name?(name) BASIC_IDENTIFIER_RULES =~ name and not( ES51_RESERVED_WORD =~ name or ES3_RESERVED_WORD_EXCLUSIVE =~ name or IMMUTABLE_PROPS =~ name ) end
def fix_ivar_name(name)
def fix_ivar_name(name) self.class.valid_ivar_name?(name.to_s[1..-1]) ? name : "#{name}$".to_sym end
def fix_var_name(name)
def fix_var_name(name) self.class.valid_name?(name) ? name : "#{name}$".to_sym end
def on_argument(node)
def on_argument(node) node = super(node) name, value = *node fixed_name = fix_var_name(name) new_children = value ? [fixed_name, value] : [fixed_name] node.updated(nil, new_children, meta: {arg_name: name}) end
def on_ivar(node)
def on_ivar(node) name, _ = *node node = node.updated(nil, [fix_ivar_name(name)]) super(node) end
def on_ivasgn(node)
def on_ivasgn(node) name, value = *node if value node = node.updated(nil, [fix_ivar_name(name), value]) else node = node.updated(nil, [fix_ivar_name(name)]) end super(node) end
def on_lvar(node)
def on_lvar(node) name, _ = *node node = node.updated(nil, [fix_var_name(name)]) super(node) end
def on_lvasgn(node)
def on_lvasgn(node) name, value = *node if value node = node.updated(nil, [fix_var_name(name), value]) else node = node.updated(nil, [fix_var_name(name)]) end super(node) end
def on_restarg(node)
because it may have no name
Restarg is a special case
def on_restarg(node) name, _ = *node if name node = node.updated(nil, [fix_var_name(name)], meta: {arg_name: name}) end node end