lib/nodo/core.rb in nodo-1.6.2 vs lib/nodo/core.rb in nodo-1.6.3
- old
+ new
@@ -109,17 +109,15 @@
deps = mods.last.is_a?(Hash) ? mods.pop : {}
mods = mods.map { |m| [m, m] }.to_h
self.dependencies = dependencies + mods.merge(deps).map { |name, package| Dependency.new(name, package) }
end
- def function(name, _code = nil, timeout: Nodo.timeout, code: nil)
+ def function(name, _code = nil, timeout: Nodo.timeout, code: nil, &block)
raise ArgumentError, "reserved method name #{name.inspect}" if reserved_method_name?(name)
- code = (code ||= _code).strip
- raise ArgumentError, 'function code is required' if '' == code
loc = caller_locations(1, 1)[0]
source_location = "#{loc.path}:#{loc.lineno}: in `#{name}'"
- self.functions = functions.merge(name => Function.new(name, _code || code, source_location, timeout))
+ self.functions = functions.merge(name => Function.new(name, _code || code, source_location, timeout, &block))
define_method(name) { |*args| call_js_method(name, args) }
end
def class_function(*methods)
singleton_class.def_delegators(:instance, *methods)
@@ -127,12 +125,12 @@
def const(name, value)
self.constants = constants + [Constant.new(name, value)]
end
- def script(code)
- self.scripts = scripts + [Script.new(code)]
+ def script(code = nil, &block)
+ self.scripts = scripts + [Script.new(code, &block)]
end
def nodo_js
Pathname.new(__FILE__).dirname.join('nodo.js').to_s.to_json
end
@@ -244,10 +242,10 @@
object_id
end
request = Net::HTTP::Post.new("/#{clsid}/#{context_id}/#{method}", 'Content-Type': 'application/json')
request.body = JSON.dump(args)
client = Client.new("unix://#{socket_path}")
- client.read_timeout = function.timeout if function
+ client.read_timeout = function&.timeout || Nodo.timeout
response = client.request(request)
if response.is_a?(Net::HTTPOK)
parse_response(response)
else
handle_error(response, function)