Ruby
Ruby
Call a JavaScript Function Returning an Array
See more JavaScript Examples
Demonstrates how to call a JavaScript function that returns an array.Chilkat Ruby Downloads
require 'chilkat'
success = false
# ----------------------------------------------------------------------------------
# The Javascript functions called in this example are shown at the bottom of this page.
# -----------------------------------------------------------------------------------
sbScript = Chilkat::CkStringBuilder.new()
success = sbScript.LoadFile("js_function_returning_array.js","utf-8")
if (success == false)
print sbScript.lastErrorText() + "\n";
exit
end
js = Chilkat::CkJs.new()
result = Chilkat::CkJsonObject.new()
result.put_EmitCompact(false)
# Call Eval to add the function to the context's global object
success = js.Eval(sbScript,result)
if (success == false)
# Examine the result for an exception.
print result.emit() + "\n";
# Also examine the LastErrorText.
print js.lastErrorText() + "\n";
exit
end
# ------------------------------------------------------------------------------
# Call each function
funcCall = Chilkat::CkJsonObject.new()
# Create JSON specifying the function name and arguments
# The function has no arguments, so we only specify the name.
funcCall.UpdateString("name","getDays")
success = js.CallFunction(funcCall,result)
if (success == false)
# Examine the result for an exception.
print result.emit() + "\n";
# Also examine the LastErrorText.
print js.lastErrorText() + "\n";
exit
end
print result.emit() + "\n";
# Output:
# {
# "type": "array",
# "value": [
# "Monday",
# "Tuesday",
# "Wednesday",
# "Thursday",
# "Friday"
# ]
# }
# Access each array value..
count = result.SizeOfArray("value")
i = 0
while i < count
result.put_I(i)
print result.stringOf("value[i]") + "\n";
i = i + 1
end
# ------------------------------------------------------------------------------
# Call the getRange(start,end) function
funcCall.Clear()
funcCall.UpdateString("name","getRange")
funcCall.UpdateInt("args[0]",14)
funcCall.UpdateInt("args[1]",21)
success = js.CallFunction(funcCall,result)
print result.emit() + "\n";
# Output:
# {
# "type": "array",
# "value": [
# 14,
# 15,
# 16,
# 17,
# 18,
# 19,
# 20,
# 21
# ]
# }
count = result.SizeOfArray("value")
i = 0
while i < count
result.put_I(i)
print result.IntOf("value[i]").to_s() + "\n";
i = i + 1
end
# ------------------------------------------------------------------------------
# Call the getEmployees() function
funcCall.Clear()
funcCall.UpdateString("name","getEmployees")
success = js.CallFunction(funcCall,result)
print result.emit() + "\n";
# Output:
# {
# "type": "array",
# "value": [
# {
# "id": 101,
# "name": "Alice",
# "role": "Dev"
# },
# {
# "id": 102,
# "name": "Bob",
# "role": "Manager"
# }
# ]
# }
count = result.SizeOfArray("value")
i = 0
while i < count
result.put_I(i)
print "name: " + result.stringOf("value[i].name") + "\n";
print "role: " + result.stringOf("value[i].role") + "\n";
print "id: " + result.IntOf("value[i].id").to_s() + "\n";
print "" + "\n";
i = i + 1
end
JavaScript
function getDays() {
return ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday"];
}
function getRange(start, end) {
var arr = [];
for (var i = start; i <= end; i++) {
arr.push(i);
}
return arr;
}
// Usage: getRange(1, 5) -> [1, 2, 3, 4, 5]
function getEmployees() {
return [
{ id: 101, name: "Alice", role: "Dev" },
{ id: 102, name: "Bob", role: "Manager" }
];
}