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