module GraphicsElements class GraphicsElementsPresenter def present(graphics_elements) GraphicsElementsData.new( graphics_elements: sort(graphics_elements), ) end private def sort(graphics_elements) graphics_elements.sort_by(&:appears_at) end class GraphicsElementsData < Struct.new( :graphics_elements, keyword_init: true) end end end