RbFailableAccess
public struct RbFailableAccess
A way to call Ruby methods and so on with a different error-handling style
to the try/catch approach of RbObjectAccess
: the methods return nil
in failure
cases instead of throwing errors. Get hold of this failable interface using
RbObject.failable
or RbGateway.failable
:
if let classObj = Ruby.failable.getClass("Mod::Service"),
let instance = classObj.failable.call("new"),
let result = instance.failable.get("summary") {
print(result)
}
This interface makes it easier to ignore errors especially on setters where
there is often no apparent need to check the result. This may be construed
as a feature; I’m not really convinced it pulls its weight over try?
.
If any methods in this interface do return nil
then an RbError
has been raised
and suppressed. You can access the most recent RbError
s whether suppressed or not
via RbError.history
.
Topics
Method Call
func call(String, args: [(any RbObjectConvertible)?], kwArgs: KeyValuePairs<String, (any RbObjectConvertible)?>) -> RbObject?
func call(String, args: [(any RbObjectConvertible)?], kwArgs: KeyValuePairs<String, (any RbObjectConvertible)?>) -> RbObject?
Call a method of a Ruby object.
This is a non-throwing version of RbObjectAccess.call(_:args:kwArgs:)
.
See RbError.history
to retrieve error details.
Declaration
public func call(
_ method: String,
args: [(any RbObjectConvertible)?] = [],
kwArgs: KeyValuePairs<String, (any RbObjectConvertible)?> = [:]
) -> RbObject?
Parameters
method |
The name of the method to call. |
args |
The positional arguments to the method, none by default. |
kwArgs |
The keyword arguments to the method, none by default. |
Return Value
An RbObject
for the result of the method, or nil
if an error occurred.
func call(String, args: [(any RbObjectConvertible)?], kwArgs: KeyValuePairs<String, (any RbObjectConvertible)?>, blockCall: RbBlockCallback) -> RbObject?
func call(String, args: [(any RbObjectConvertible)?], kwArgs: KeyValuePairs<String, (any RbObjectConvertible)?>, blockCall: RbBlockCallback) -> RbObject?
Call a method of a Ruby object passing Swift code as a block used immediately.
This is a non-throwing version of RbObjectAccess.call(_:args:kwArgs:blockCall:)
.
See RbError.history
to retrieve error details.
Declaration
public func call(
_ method: String,
args: [(any RbObjectConvertible)?] = [],
kwArgs: KeyValuePairs<String, (any RbObjectConvertible)?> = [:],
blockCall: RbBlockCallback
) -> RbObject?
Parameters
method |
The name of the method to call. |
args |
The positional arguments to the method, none by default. |
kwArgs |
The keyword arguments to the method, none by default. |
blockCall |
Swift code to pass as a block to the method. |
Return Value
An RbObject
for the result of the method, or nil
if an error occurred.
func call(String, args: [(any RbObjectConvertible)?], kwArgs: KeyValuePairs<String, (any RbObjectConvertible)?>, blockRetention: RbBlockRetention, blockCall: RbBlockCallback) -> RbObject?
func call(String, args: [(any RbObjectConvertible)?], kwArgs: KeyValuePairs<String, (any RbObjectConvertible)?>, blockRetention: RbBlockRetention, blockCall: RbBlockCallback) -> RbObject?
Call a method of a Ruby object passing Swift code as a block.
This is a non-throwing version of RbObjectAccess.call(_:args:kwArgs:blockRetention:blockCall:)
.
See RbError.history
to retrieve error details.
Declaration
public func call(
_ method: String,
args: [(any RbObjectConvertible)?] = [],
kwArgs: KeyValuePairs<String, (any RbObjectConvertible)?> = [:],
blockRetention: RbBlockRetention,
blockCall: @escaping @Sendable RbBlockCallback
) -> RbObject?
Parameters
method |
The name of the method to call. |
args |
The positional arguments to the method, none by default. |
kwArgs |
The keyword arguments to the method, none by default. |
blockRetention |
Should the |
blockCall |
Swift code to pass as a block to the method. |
Return Value
An RbObject
for the result of the method, or nil
if an error occurred.
func call(String, args: [(any RbObjectConvertible)?], kwArgs: KeyValuePairs<String, (any RbObjectConvertible)?>, block: any RbObjectConvertible) -> RbObject?
func call(String, args: [(any RbObjectConvertible)?], kwArgs: KeyValuePairs<String, (any RbObjectConvertible)?>, block: any RbObjectConvertible) -> RbObject?
Call a method of a Ruby object passing a Ruby Proc as a block.
This is a non-throwing version of RbObjectAccess.call(_:args:kwArgs:block:)
.
See RbError.history
to retrieve error details.
Declaration
public func call(
_ method: String,
args: [(any RbObjectConvertible)?] = [],
kwArgs: KeyValuePairs<String, (any RbObjectConvertible)?> = [:],
block: any RbObjectConvertible
) -> RbObject?
Parameters
method |
The name of the method to call. |
args |
The positional arguments to the method, none by default. |
kwArgs |
The keyword arguments to the method, none by default. |
block |
A Ruby proc to pass as a block to the method. |
Return Value
An RbObject
for the result of the method, or nil
if an error occurred.
func call(symbol: any RbObjectConvertible, args: [(any RbObjectConvertible)?], kwArgs: KeyValuePairs<String, (any RbObjectConvertible)?>) -> RbObject?
func call(symbol: any RbObjectConvertible, args: [(any RbObjectConvertible)?], kwArgs: KeyValuePairs<String, (any RbObjectConvertible)?>) -> RbObject?
Call a method of a Ruby object using a symbol.
This is a non-throwing version of RbObjectAccess.call(symbol:args:kwArgs:)
.
See RbError.history
to retrieve error details.
Declaration
@discardableResult
public func call(
symbol: any RbObjectConvertible,
args: [(any RbObjectConvertible)?] = [],
kwArgs: KeyValuePairs<String, (any RbObjectConvertible)?> = [:]
) -> RbObject?
Parameters
symbol |
A symbol for the method to call. |
args |
The positional arguments to the method, none by default. |
kwArgs |
The keyword arguments to the method, none by default. |
Return Value
An RbObject
for the result of the method, or nil
if an error occurred.
func call(symbol: any RbObjectConvertible, args: [(any RbObjectConvertible)?], kwArgs: KeyValuePairs<String, (any RbObjectConvertible)?>, blockCall: RbBlockCallback) -> RbObject?
func call(symbol: any RbObjectConvertible, args: [(any RbObjectConvertible)?], kwArgs: KeyValuePairs<String, (any RbObjectConvertible)?>, blockCall: RbBlockCallback) -> RbObject?
Call a method of a Ruby object using a symbol passing Swift code as a block used immediately.
This is a non-throwing version of RbObjectAccess.call(symbol:args:kwArgs:blockCall:)
.
See RbError.history
to retrieve error details.
Declaration
@discardableResult
public func call(
symbol: any RbObjectConvertible,
args: [(any RbObjectConvertible)?] = [],
kwArgs: KeyValuePairs<String, (any RbObjectConvertible)?> = [:],
blockCall: RbBlockCallback
) -> RbObject?
Parameters
symbol |
A symbol for the method to call. |
args |
The positional arguments to the method, none by default. |
kwArgs |
The keyword arguments to the method, none by default. |
blockCall |
Swift code to pass as a block to the method. |
Return Value
An RbObject
for the result of the method, or nil
if an error occurred.
func call(symbol: any RbObjectConvertible, args: [(any RbObjectConvertible)?], kwArgs: KeyValuePairs<String, (any RbObjectConvertible)?>, blockRetention: RbBlockRetention, blockCall: RbBlockCallback) -> RbObject?
func call(symbol: any RbObjectConvertible, args: [(any RbObjectConvertible)?], kwArgs: KeyValuePairs<String, (any RbObjectConvertible)?>, blockRetention: RbBlockRetention, blockCall: RbBlockCallback) -> RbObject?
Call a method of a Ruby object using a symbol passing Swift code as a block.
This is a non-throwing version of RbObjectAccess.call(symbol:args:kwArgs:blockRetention:blockCall:)
.
See RbError.history
to retrieve error details.
Declaration
@discardableResult
public func call(
symbol: any RbObjectConvertible,
args: [(any RbObjectConvertible)?] = [],
kwArgs: KeyValuePairs<String, (any RbObjectConvertible)?> = [:],
blockRetention: RbBlockRetention = .none,
blockCall: @escaping @Sendable RbBlockCallback
) -> RbObject?
Parameters
symbol |
A symbol for the method to call. |
args |
The positional arguments to the method, none by default. |
kwArgs |
The keyword arguments to the method, none by default. |
blockRetention |
Should the |
blockCall |
Swift code to pass as a block to the method. |
Return Value
An RbObject
for the result of the method, or nil
if an error occurred.
func call(symbol: any RbObjectConvertible, args: [(any RbObjectConvertible)?], kwArgs: KeyValuePairs<String, (any RbObjectConvertible)?>, block: any RbObjectConvertible) -> RbObject?
func call(symbol: any RbObjectConvertible, args: [(any RbObjectConvertible)?], kwArgs: KeyValuePairs<String, (any RbObjectConvertible)?>, block: any RbObjectConvertible) -> RbObject?
Call a method of a Ruby object using a symbol passing a Ruby Proc as a block.
This is a non-throwing version of RbObjectAccess.call(symbol:args:kwArgs:block:)
.
See RbError.history
to retrieve error details.
Declaration
@discardableResult
public func call(
symbol: any RbObjectConvertible,
args: [(any RbObjectConvertible)?] = [],
kwArgs: KeyValuePairs<String, (any RbObjectConvertible)?> = [:],
block: any RbObjectConvertible
) -> RbObject?
Parameters
symbol |
A symbol for the method to call. |
args |
The positional arguments to the method, none by default. |
kwArgs |
The keyword arguments to the method, none by default. |
block |
A Ruby proc to pass as a block to the method. |
Return Value
An RbObject
for the result of the method, or nil
if an error occurred.
Attributes
func getAttribute(String) -> RbObject?
func getAttribute(String) -> RbObject?
Get an attribute of a Ruby object.
This is a non-throwing version of RbObjectAccess.getAttribute(_:)
.
See RbError.history
to retrieve error details.
Declaration
Parameters
name |
The attribute to access. |
Return Value
The value of the attribute, or nil
if an error occurred.
func setAttribute(String, newValue: (any RbObjectConvertible)?) -> RbObject?
func setAttribute(String, newValue: (any RbObjectConvertible)?) -> RbObject?
Set an attribute of a Ruby object.
This is a non-throwing version of RbObjectAccess.setAttribute(_:newValue:)
.
See RbError.history
to retrieve error details.
Declaration
public func setAttribute(_ name: String, newValue: (any RbObjectConvertible)?)
-> RbObject?
Parameters
name |
The attribute to set. |
newValue |
The new value for the attribute. |
Return Value
The value set to the attribute, or nil
if an error occurred.
Constants
func getConstant(String) -> RbObject?
func getConstant(String) -> RbObject?
Get an RbObject
that represents a Ruby constant.
This is a non-throwing version of RbObjectAccess.getConstant(_:)
.
See RbError.history
to retrieve error details.
Declaration
Parameters
name |
The name of the constant to look up. |
Return Value
An RbObject
for the constant or nil
if an error occurred.
func getClass(String) -> RbObject?
func getClass(String) -> RbObject?
Get an RbObject
that represents a Ruby class.
This is a non-throwing version of RbObjectAccess.getClass(_:)
.
See RbError.history
to retrieve error details.
Declaration
Parameters
name |
The name of the class to look up. |
Return Value
An RbObject
for the class or nil
if an error occurred.
func setConstant(String, newValue: (any RbObjectConvertible)?) -> RbObject?
func setConstant(String, newValue: (any RbObjectConvertible)?) -> RbObject?
Bind an object to a constant name.
This is a non-throwing version of RbObjectAccess.setConstant(_:newValue:)
.
See RbError.history
to retrieve error details.
Declaration
@discardableResult
public func setConstant(_ name: String, newValue: (any RbObjectConvertible)?)
-> RbObject?
Parameters
name |
The name of the constant to create or replace. |
newValue |
The value for the constant. |
Return Value
The value set for the constant or nil
if an error occurred.
Instance Variables
func getInstanceVar(String) -> RbObject?
func getInstanceVar(String) -> RbObject?
Get the value of a Ruby instance variable.
This is a non-throwing version of RbObjectAccess.getInstanceVar(_:)
.
See RbError.history
to retrieve error details.
Declaration
Parameters
name |
Name of the IVar. Must begin with a single |
Return Value
Value of the IVar, or nil
if an error occurred.
func setInstanceVar(String, newValue: (any RbObjectConvertible)?) -> RbObject?
func setInstanceVar(String, newValue: (any RbObjectConvertible)?) -> RbObject?
Set a Ruby instance variable.
This is a non-throwing version of RbObjectAccess.setInstanceVar(_:newValue:)
.
See RbError.history
to retrieve error details.
Declaration
@discardableResult
public func setInstanceVar(_ name: String, newValue: (any RbObjectConvertible)?)
-> RbObject?
Parameters
name |
Name of the IVar. Must begin with a single |
newValue |
The new value for the IVar. |
Return Value
The value that was set, or nil if an error occurred.
Class Variables
func getClassVar(String) -> RbObject?
func getClassVar(String) -> RbObject?
Get the value of a Ruby class variable.
Must be called on an RbObject
for a class, or RbGateway
.
This is a non-throwing version of RbObjectAccess.getClassVar(_:)
.
See RbError.history
to retrieve error details.
Declaration
Parameters
name |
Name of the CVar. Must begin with |
Return Value
Value of the CVar, or nil
if an error occurred.
func setClassVar(String, newValue: (any RbObjectConvertible)?) -> RbObject?
func setClassVar(String, newValue: (any RbObjectConvertible)?) -> RbObject?
Set or create a Ruby class variable.
Must be called on an RbObject
for a class, or RbGateway
.
This is a non-throwing version of RbObjectAccess.setClassVar(_:newValue:)
.
See RbError.history
to retrieve error details.
Declaration
@discardableResult
public func setClassVar(_ name: String, newValue: (any RbObjectConvertible)?)
-> RbObject?
Parameters
name |
Name of the CVar. Must begin with |
newValue |
The new value for the CVar. |
Return Value
The value that was set, or nil
if an error occurred.
Global Variables
func getGlobalVar(String) -> RbObject?
func getGlobalVar(String) -> RbObject?
Get the value of a Ruby global variable.
This is a non-throwing version of RbObjectAccess.getGlobalVar(_:)
.
See RbError.history
to retrieve error details.
Declaration
Parameters
name |
Name of the global variable. Must begin with |
Return Value
Value of the variable, or nil
if an error occurred.
func setGlobalVar(String, newValue: (any RbObjectConvertible)?) -> RbObject?
func setGlobalVar(String, newValue: (any RbObjectConvertible)?) -> RbObject?
Set a Ruby global variable.
This is a non-throwing version of RbObjectAccess.setGlobalVar(_:newValue:)
.
See RbError.history
to retrieve error details.
Declaration
@discardableResult
public func setGlobalVar(_ name: String, newValue: (any RbObjectConvertible)?)
-> RbObject?
Parameters
name |
Name of the global variable. Must begin with |
newValue |
The new value for the variable. |
Return Value
The value that was set, or nil
if an error occurred.
Polymorphic Getter
func get(String) -> RbObject?
func get(String) -> RbObject?
Get some kind of Ruby object based on the name
parameter.
This is a non-throwing version of RbObjectAccess.get(_:)
.
See RbError.history
to retrieve error details.
Declaration
Parameters
name |
Name of method / IVar / attribute / CVar / GVar / constant to access. |
Return Value
Retrieved object, or nil
if an error occurred.