Sha256: bddcf3904adf4cbd42530cb9ac3cabd24aeb7e700894f7cc83146edb6488c9dd
Contents?: true
Size: 1.12 KB
Versions: 4
Compression:
Stored size: 1.12 KB
Contents
module Locomotive::Wagon class SyncPagesCommand < PullPagesCommand include Locomotive::Wagon::BaseConcern def write_page(page, locale = nil) if attributes = editable_elements_attributes(page, locale) new_content = replace_editable_elements(page_filepath(page, locale), dump(attributes)) write_to_file(page_filepath(page, locale), new_content) end end private def editable_elements_attributes(page, locale) list = page.editable_elements.inject({}) do |hash, el| hash["#{el['block']}/#{el['slug']}"] = replace_asset_urls(el['content']) if el['content'] hash end list.empty? ? nil : { 'editable_elements' => list } end def replace_editable_elements(filepath, replacement) content = File.read(File.join(path, filepath)) existing = content =~ /\A.*?editable_elements:.*?\n---/m content.gsub /\A---(.*?)\n---/m do |s| if existing s.gsub(/editable_elements:\n(.*?)\n(\S)/m) { |_s| "#{replacement}#{$2}" } else s.gsub(/---\Z/) { |_s| "#{replacement}\n---" } end end end end end
Version data entries
4 entries across 4 versions & 1 rubygems