From 9875d98ae51da395813c27093ef1d4b04b8bac3f Mon Sep 17 00:00:00 2001 From: Julian Rubisch Date: Wed, 21 Jul 2021 07:07:32 +0200 Subject: [PATCH] Extract Update class definition --- lib/stimulus_reflex.rb | 1 + .../broadcasters/selector_broadcaster.rb | 14 +---------- .../selector_broadcaster/update.rb | 23 +++++++++++++++++++ 3 files changed, 25 insertions(+), 13 deletions(-) create mode 100644 lib/stimulus_reflex/broadcasters/selector_broadcaster/update.rb diff --git a/lib/stimulus_reflex.rb b/lib/stimulus_reflex.rb index fd2beeb9a..df51e7e7d 100644 --- a/lib/stimulus_reflex.rb +++ b/lib/stimulus_reflex.rb @@ -24,6 +24,7 @@ require "stimulus_reflex/broadcasters/nothing_broadcaster" require "stimulus_reflex/broadcasters/page_broadcaster" require "stimulus_reflex/broadcasters/selector_broadcaster" +require "stimulus_reflex/broadcasters/selector_broadcaster/update" require "stimulus_reflex/policies/reflex_invocation_policy" require "stimulus_reflex/utils/colorize" require "stimulus_reflex/utils/logger" diff --git a/lib/stimulus_reflex/broadcasters/selector_broadcaster.rb b/lib/stimulus_reflex/broadcasters/selector_broadcaster.rb index a226ede59..6e7b8622a 100644 --- a/lib/stimulus_reflex/broadcasters/selector_broadcaster.rb +++ b/lib/stimulus_reflex/broadcasters/selector_broadcaster.rb @@ -64,20 +64,8 @@ def to_s def create_update_collection(selectors, html) updates = selectors.is_a?(Hash) ? selectors : {selectors => html} updates.map do |key, value| - Update.new(key, value, reflex) + StimulusReflex::SelectorBroadcaster::Update.new(key, value, reflex) end end - - StimulusReflex::SelectorBroadcaster::Update = Struct.new(:key, :value, :reflex) do - def selector - @selector ||= identifiable?(key) ? dom_id(key) : key.to_s - end - - def html - html = reflex.render(key) if key.is_a?(ActiveRecord::Base) && value.nil? - html = reflex.render_collection(key) if key.is_a?(ActiveRecord::Relation) && value.nil? - html || value - end - end.include(CableReady::Identifiable) end end diff --git a/lib/stimulus_reflex/broadcasters/selector_broadcaster/update.rb b/lib/stimulus_reflex/broadcasters/selector_broadcaster/update.rb new file mode 100644 index 000000000..681ae93b0 --- /dev/null +++ b/lib/stimulus_reflex/broadcasters/selector_broadcaster/update.rb @@ -0,0 +1,23 @@ +module StimulusReflex + module SelectorBroadcaster + class Update + include CableReady::Identifiable + + def initialize(key, value, reflex) + @key = key + @value = value + @reflex = reflex + end + + def selector + @selector ||= identifiable?(@key) ? dom_id(@key) : @key.to_s + end + + def html + html = @reflex.render(@key) if @key.is_a?(ActiveRecord::Base) && @value.nil? + html = @reflex.render_collection(@key) if @key.is_a?(ActiveRecord::Relation) && @value.nil? + html || @value + end + end + end +end