lib/v8/access.rb in therubyracer-0.10.2 vs lib/v8/access.rb in therubyracer-0.11.0beta1
- old
+ new
@@ -1,87 +1,5 @@
-require 'set'
-module V8
- class Access
- def get(obj, name, &dontintercept)
- methods = accessible_methods(obj)
- if methods.include?(name)
- method = obj.method(name)
- method.arity == 0 ? method.call : method.unbind
- elsif obj.respond_to?(:[])
- obj.send(:[], name, &dontintercept)
- else
- yield
- end
- end
-
- def iget(obj, index, &dontintercept)
- if obj.respond_to?(:[])
- obj.send(:[], index, &dontintercept)
- else
- yield
- end
- end
-
- def set(obj, name, value, &dontintercept)
- setter = name + "="
- methods = accessible_methods(obj, true)
- if methods.include?(setter)
- obj.send(setter, value)
- elsif obj.respond_to?(:[]=)
- obj.send(:[]=, name, value, &dontintercept)
- else
- yield
- end
- end
-
- def iset(obj, index, value, &dontintercept)
- if obj.respond_to?(:[]=)
- obj.send(:[]=, index, value, &dontintercept)
- else
- yield
- end
- end
-
- def query(obj, name, attributes)
- if obj.respond_to?(name)
- attributes.dont_delete
- unless obj.respond_to?(name + "=")
- attributes.read_only
- end
- else
- yield
- end
- end
-
- def iquery(obj, index, attributes)
- if obj.respond_to?(:[])
- attributes.dont_delete
- unless obj.respond_to?(:[]=)
- attributes.read_only
- end
- else
- yield
- end
- end
-
- def names(obj)
- accessible_methods(obj)
- end
-
- def indices(obj)
- obj.respond_to?(:length) ? (0..obj.length).to_a : yield
- end
-
- private
-
- def accessible_methods(obj, special_methods = false)
- obj.public_methods(false).map {|m| m.to_s}.to_set.tap do |methods|
- ancestors = obj.class.ancestors.dup
- while ancestor = ancestors.shift
- break if ancestor == ::Object
- methods.merge(ancestor.public_instance_methods(false).map {|m| m.to_s})
- end
- methods.reject! {|m| m == "[]" || m == "[]=" || m =~ /=$/} unless special_methods
- end
- end
- end
-end
+class V8::Access
+ include Names
+ include Indices
+ include Invocation
+end
\ No newline at end of file