Class: JavaScript::Function
- Inherits:
-
Struct
- Object
- Struct
- JavaScript::Function
- Defined in:
- lib/javascript.rb
Direct Known Subclasses
Instance Attribute Summary collapse
-
#args ⇒ Object
Returns the value of attribute args.
-
#body ⇒ Object
Returns the value of attribute body.
-
#name ⇒ Object
Returns the value of attribute name.
Instance Method Summary collapse
- #apply(target = nil, arg_values) ⇒ Object
- #arity ⇒ Object
- #bind(target) ⇒ Object
- #call(target = nil, *arg_values) ⇒ Object
-
#initialize ⇒ Function
constructor
A new instance of Function.
- #to_proc ⇒ Object
Constructor Details
#initialize ⇒ Function
Returns a new instance of Function.
222 223 224 225 |
# File 'lib/javascript.rb', line 222 def initialize(*) @scope = JavaScript.current_scope super end |
Instance Attribute Details
#args ⇒ Object
Returns the value of attribute args
221 222 223 |
# File 'lib/javascript.rb', line 221 def args @args end |
#body ⇒ Object
Returns the value of attribute body
221 222 223 |
# File 'lib/javascript.rb', line 221 def body @body end |
#name ⇒ Object
Returns the value of attribute name
221 222 223 |
# File 'lib/javascript.rb', line 221 def name @name end |
Instance Method Details
#apply(target = nil, arg_values) ⇒ Object
235 236 237 |
# File 'lib/javascript.rb', line 235 def apply(target = nil, arg_values) call(target, *arg_values) end |
#arity ⇒ Object
227 228 229 |
# File 'lib/javascript.rb', line 227 def arity args.length end |
#bind(target) ⇒ Object
239 240 241 |
# File 'lib/javascript.rb', line 239 def bind(target) BoundFunction.new(target, name, args, body) end |
#call(target = nil, *arg_values) ⇒ Object
231 232 233 |
# File 'lib/javascript.rb', line 231 def call(target = nil, *arg_values) ::Object.instance_method(:instance_exec).bind(target).call(*arg_values, &self) end |
#to_proc ⇒ Object
243 244 245 246 247 248 249 250 251 252 253 |
# File 'lib/javascript.rb', line 243 def to_proc parent_scope = @scope arg_names = args.map(&:name) unwrapped = body FunctionWrapper.new(arg_names) do |*arg_values| locals = Hash[ arg_names.zip(arg_values) ] locals[:arguments] = arg_values parent_scope.__spawn__(self, locals).__eval__(*arg_values, &unwrapped) end end |