Class: Native::Object

Inherits:
Object show all
Includes:
Enumerable, Native
Defined in:
lib/opal/native.rb

Instance Method Summary collapse

Methods included from Native

===, included, #native_send, send, #to_native

Constructor Details

#initializeObject

Returns a new instance of Object.



60
61
62
63
64
# File 'lib/opal/native.rb', line 60

def initialize (*)
	super

	update!
end

Instance Method Details

#==(other) ⇒ Object



66
67
68
# File 'lib/opal/native.rb', line 66

def == (other)
	`#@native == #{Native(other).to_native}`
end

#===(other) ⇒ Object



70
71
72
# File 'lib/opal/native.rb', line 70

def === (other)
	Native::Object === other && `#@native == #{other.to_native}`
end

#[](name) ⇒ Object



74
75
76
# File 'lib/opal/native.rb', line 74

def [] (name)
	Kernel.Native(`#@native[name]`)
end

#[]=(name, value) ⇒ Object



78
79
80
81
82
83
84
85
86
# File 'lib/opal/native.rb', line 78

def []= (name, value)
	value = value.to_native unless Native === value

	`#@native[name] = #{value}`

	update!(name)

	value
end

#eachObject



88
89
90
91
92
93
94
95
96
97
98
# File 'lib/opal/native.rb', line 88

def each
	return enum_for :each unless block_given?

	%x{
		for (var name in #@native) {
			#{yield Kernel.Native(`name`), Kernel.Native(`#@native[name]`)}
		}
	}

	self
end

#each_keyObject



100
101
102
103
104
105
106
107
108
109
110
# File 'lib/opal/native.rb', line 100

def each_key
	return enum_for :each_key unless block_given?

	%x{
		for (var name in #@native) {
			#{yield Kernel.Native(`name`)}
		}
	}

	self
end

#each_valueObject



112
113
114
115
116
117
118
119
120
# File 'lib/opal/native.rb', line 112

def each_value
	return enum_for :each_value unless block_given?

	%x{
		for (var name in #@native) {
			#{yield Kernel.Native(`#@native[name]`)}
		}
	}
end

#inspectObject



122
123
124
# File 'lib/opal/native.rb', line 122

def inspect
	"#<Native: #{`#@native.toString()`}>"
end

#keysObject



126
127
128
# File 'lib/opal/native.rb', line 126

def keys
	each_key.to_a
end

#nil?Boolean

Returns:



130
131
132
# File 'lib/opal/native.rb', line 130

def nil?
	`#@native === null || #@native === undefined`
end

#to_hashObject



138
139
140
# File 'lib/opal/native.rb', line 138

def to_hash
	Hash[to_a]
end

#to_sObject



134
135
136
# File 'lib/opal/native.rb', line 134

def to_s
	`#@native.toString()`
end

#update!(name = nil) ⇒ Object



146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
# File 'lib/opal/native.rb', line 146

def update! (name = nil)
	unless name
		%x{
			for (var name in #@native) {
				#{update!(`name`)}
			}
		}

		return
	end

	if Proc === `#@native[name]`
		define_singleton_method name do |*args, &block|
			__native_send__(name, *args, &block)
		end

		if respond_to? "#{name}="
			singleton_class.undef_method "#{name}="
		end
	else
		define_singleton_method name do
			self[name]
		end

		define_singleton_method "#{name}=" do |value|
			self[name] = value
		end
	end
end

#valuesObject



142
143
144
# File 'lib/opal/native.rb', line 142

def values
	each_value.to_a
end