require "hypernova/blank_renderer" require "hypernova/plugin_helper" class Hypernova::BatchRenderer include Hypernova::PluginHelper def initialize(jobs) @jobs = jobs end # Sample response argument: # { # "DeathStarLaserComponent.js" => { # "duration" => 17, # "error" => nil, # "html" => "

Hello World

", # "statusCode" => 200, # "success" => true, # }, # "IonCannon.js" => { # "duration" => 7, # "error" => { # "stack" => [ # "no_plans", # "not_enough_resources", # ], # }, # "html" => blank_html_rendered_by_blank_renderer, # "statusCode" => 500, # "success" => false, # }, # } # Example of what is returned by this method: # { # "DeathStarLaserComponent.js" => "

Hello World

", # "IonCannon.js" =>

Feel my power!

, # } def render(response) fmt_response = response.each_with_object({}) do |array, hash| name_of_component = array[0] hash[name_of_component] = ensure_has_html(name_of_component, array[1]) end after_response(fmt_response, response).each_with_object({}) do |(name, result), hash| hash[name] = result['html'] end end # Example of what is returned by this method: # { # "DeathStarLaserComponent.js" =>
I am blank
, # "IonCannon.js" =>
I am blank
, # } def render_blank hash = {} jobs.each { |name_of_component, job| hash[name_of_component] = render_blank_html(job) } hash end private attr_reader :jobs def ensure_has_html(name_of_component, result) result['html'] = render_blank_html(jobs[name_of_component]) if result['html'].nil? result end def render_blank_html(job) Hypernova::BlankRenderer.new(job).render end end