class Culerity::CelerityServer
Public Class Methods
new(_in, _out)
click to toggle source
# File lib/culerity/celerity_server.rb, line 8 def initialize(_in, _out) @proxies = {} @browsers = [] while(true) call, block = eval _in.gets.to_s.strip return if call == "_exit_" next(close_browsers) if call == "_close_browsers_" next(clear_proxies) if call == "_clear_proxies_" unless call.nil? begin result = target(call.first).send call[1], *call[2..-1], &block _out << "[:return, #{proxify result}]\n" rescue => e _out << "[:exception, \"#{e.class.name}\", #{e.message.inspect}, #{prepend_js_stack_trace(e).inspect}]\n" end end end end
Private Instance Methods
browser(number)
click to toggle source
# File lib/culerity/celerity_server.rb, line 53 def browser(number) unless @browsers[number] new_browser(nil, number) end @browsers[number] end
clear_proxies()
click to toggle source
# File lib/culerity/celerity_server.rb, line 33 def clear_proxies @proxies = {} end
close_browsers()
click to toggle source
# File lib/culerity/celerity_server.rb, line 47 def close_browsers @browsers.each { |browser| browser.close } @browsers = [] @proxies = {} end
configure_browser(options)
click to toggle source
# File lib/culerity/celerity_server.rb, line 37 def configure_browser(options) @browser_options = options end
extract_js_strack_trace(e)
click to toggle source
# File lib/culerity/celerity_server.rb, line 82 def extract_js_strack_trace(e) if e.respond_to?(:getScriptStackTrace) e.getScriptStackTrace elsif e.respond_to?(:cause) && e.cause extract_js_strack_trace e.cause else "" end end
new_browser(options, number = nil)
click to toggle source
# File lib/culerity/celerity_server.rb, line 41 def new_browser(options, number = nil) number ||= @browsers.size @browsers[number] = Celerity::Browser.new(options || @browser_options || {}) "browser#{number}" end
prepend_js_stack_trace(exception)
click to toggle source
# File lib/culerity/celerity_server.rb, line 81 def prepend_js_stack_trace(exception) def extract_js_strack_trace(e) if e.respond_to?(:getScriptStackTrace) e.getScriptStackTrace elsif e.respond_to?(:cause) && e.cause extract_js_strack_trace e.cause else "" end end extract_js_strack_trace(exception).split("\n") + exception.backtrace end
proxify(result)
click to toggle source
# File lib/culerity/celerity_server.rb, line 70 def proxify(result) if result.is_a?(Array) "[" + result.map {|x| proxify(x) }.join(", ") + "]" elsif [Symbol, String, TrueClass, FalseClass, Fixnum, Float, NilClass].include?(result.class) result.inspect else @proxies[result.object_id] = result "Culerity::RemoteObjectProxy.new(#{result.object_id}, @io)" end end
target(object_id)
click to toggle source
# File lib/culerity/celerity_server.rb, line 60 def target(object_id) if object_id =~ /browser(\d+)/ browser($1.to_i) elsif object_id == 'celerity' self else @proxies[object_id] end end