Package org.jruby.embed.variable
Class ClassVariable
java.lang.Object
org.jruby.embed.variable.ClassVariable
- All Implemented Interfaces:
BiVariable
An implementation of BiVariable for a Ruby class variable.
- Author:
- Yoko Harada <[email protected]>
-
Nested Class Summary
Nested classes/interfaces inherited from interface org.jruby.embed.variable.BiVariable
BiVariable.Type
-
Field Summary
FieldsModifier and TypeFieldDescriptionprotected boolean
protected Object
protected Class
protected final String
protected final IRubyObject
protected IRubyObject
-
Method Summary
Modifier and TypeMethodDescriptionstatic BiVariable
getInstance
(RubyObject receiver, String name, Object... javaObject) Returns an instance of this class.Returns a value of the variable this object holds in Java type.getName()
Returns a name of the variable this object holds.Returns the original receiver where this variable has been retrieved.protected static RubyModule
getRubyClass
(Ruby runtime) Returns a value of the variable this object holds in a org.jruby.runtime.builtin.IRubyObject type.getType()
Returns enum type of this variable defined inBiVariable
.void
inject()
Injects a class variable value to a parsed Ruby script.boolean
isReceiverIdentical
(RubyObject receiver) Returns true if a given receiver is identical to the receiver this object has.static boolean
isValidName
(Object name) Returns true if the given name is a decent Ruby class variable.protected static boolean
isValidName
(String pattern, Object name) void
remove()
Attempts to remove this variable from top self or receiver.static void
retrieve
(RubyObject receiver, BiVariableMap vars) Retrieves class variables from Ruby after the evaluation.static void
retrieveByKey
(RubyObject receiver, BiVariableMap vars, String name) Retrieves a class variable by key from Ruby runtime after the evaluation.void
setJavaObject
(Ruby runtime, Object javaObject) Sets a Java object as a value of this object.void
setRubyObject
(IRubyObject rubyObject) Sets a org.jruby.runtime.builtin.IRubyObject type, Ruby object as a value of this object.protected void
updateByJavaObject
(Ruby runtime, Object... values) protected void
updateRubyObject
(IRubyObject rubyObject)
-
Field Details
-
receiver
-
name
-
javaObject
-
javaType
-
rubyObject
-
fromRuby
protected volatile boolean fromRuby
-
-
Method Details
-
getInstance
Returns an instance of this class. This factory method is used when a class variables is put inBiVariableMap
. This variable is originated from Java.- Parameters:
receiver
- Receiver object returned when a script is evaluated.name
- a variable namejavaObject
- Java object that should be assigned to.- Returns:
- the instance of ClassVariable
-
retrieve
Retrieves class variables from Ruby after the evaluation.- Parameters:
receiver
- receiver object returned when a script is evaluated.vars
- map to save retrieved class variables.
-
retrieveByKey
Retrieves a class variable by key from Ruby runtime after the evaluation. This method is used when eager retrieval is off.- Parameters:
receiver
- receiver object returned when a script is evaluated.vars
- map to save retrieved instance variables.name
- instace varible name
-
getType
Returns enum type of this variable defined inBiVariable
.- Returns:
- this enum type, BiVariable.Type.ClassVariable.
-
isValidName
Returns true if the given name is a decent Ruby class variable. Unless returns false.- Parameters:
name
- is a name to be checked.- Returns:
- true if the given name is of a Ruby class variable.
-
inject
public void inject()Injects a class variable value to a parsed Ruby script. This method is invoked during EvalUnit#run() is executed. -
remove
public void remove()Attempts to remove this variable from top self or receiver. -
updateByJavaObject
-
updateRubyObject
-
getReceiver
Description copied from interface:BiVariable
Returns the original receiver where this variable has been retrieved.- Specified by:
getReceiver
in interfaceBiVariable
- Returns:
- an original receiver.
-
isReceiverIdentical
Returns true if a given receiver is identical to the receiver this object has.- Specified by:
isReceiverIdentical
in interfaceBiVariable
- Returns:
- true if identical otherwise false
-
getName
Description copied from interface:BiVariable
Returns a name of the variable this object holds. The name follows Ruby's naming rule.- Specified by:
getName
in interfaceBiVariable
- Returns:
- a name of the variable
-
getJavaObject
Description copied from interface:BiVariable
Returns a value of the variable this object holds in Java type.- Specified by:
getJavaObject
in interfaceBiVariable
- Returns:
- a value in Java type.
-
setJavaObject
Description copied from interface:BiVariable
Sets a Java object as a value of this object. At the same time, an equivalent Ruby object is set automatically.- Specified by:
setJavaObject
in interfaceBiVariable
- Parameters:
runtime
- is used to convert a Java object to Ruby object.javaObject
- is a variable value to be set.
-
getRubyObject
Description copied from interface:BiVariable
Returns a value of the variable this object holds in a org.jruby.runtime.builtin.IRubyObject type.- Specified by:
getRubyObject
in interfaceBiVariable
- Returns:
- a value in IRubyObject type.
-
setRubyObject
Description copied from interface:BiVariable
Sets a org.jruby.runtime.builtin.IRubyObject type, Ruby object as a value of this object. At the same time, an equivalent Java object is set automatically.- Specified by:
setRubyObject
in interfaceBiVariable
- Parameters:
rubyObject
- is a variable value to be set.
-
getRubyClass
-
isValidName
-