module Pakyow::Presenter::Renderer::Behavior::PlaceInMode

@api private

Public Class Methods

perform(view, modes) click to toggle source

@api private

# File lib/pakyow/presenter/renderer/behavior/place_in_mode.rb, line 40
def self.perform(view, modes)
  if modes.length == 1 && modes.first.to_sym == :default
    modes = view.info(:modes) || modes
  end

  modes.map!(&:to_sym)

  if view.object.is_a?(StringDoc::Node) && view.object.significant?(:mode) && !modes.include?(view.object.label(:mode))
    view.remove
  else
    view.object.each_significant_node(:mode, descend: true).select { |node|
      !modes.include?(node.label(:mode))
    }.each(&:remove)
  end
end