31 lines
720 B
Ruby
31 lines
720 B
Ruby
|
module RKelly
|
||
|
module JS
|
||
|
class Object < Base
|
||
|
attr_reader :value
|
||
|
class << self
|
||
|
def create(*args)
|
||
|
arg = args.first
|
||
|
return self.new if arg.nil? || arg == :undefined
|
||
|
case arg
|
||
|
when true, false
|
||
|
JS::Boolean.new(arg)
|
||
|
when Numeric
|
||
|
JS::Number.new(arg)
|
||
|
when ::String
|
||
|
JS::String.new(arg)
|
||
|
else
|
||
|
self.new(arg)
|
||
|
end
|
||
|
end
|
||
|
end
|
||
|
|
||
|
def initialize(*args)
|
||
|
super()
|
||
|
self['prototype'] = JS::ObjectPrototype.new
|
||
|
self['valueOf'] = lambda { args.first || self }
|
||
|
self['valueOf'].function = lambda { args.first || self }
|
||
|
end
|
||
|
end
|
||
|
end
|
||
|
end
|