lib/alchemy/upgrader/tasks/cells_upgrader.rb in alchemy_cms-4.6.3 vs lib/alchemy/upgrader/tasks/cells_upgrader.rb in alchemy_cms-4.6.4

- old
+ new

@@ -70,16 +70,17 @@ Rails.root.join('config', 'alchemy', 'cells.yml') end def convert_cell_config puts '-- Converting cells into unique fixed nestable elements.' + fixed_element_name_finder = FixedElementNameFinder.new YAML.load_file(cells_config_file).each do |cell| append_to_file Rails.root.join('config', 'alchemy', 'elements.yml') do <<-CELL.strip_heredoc - - name: #{cell['name']} + - name: #{fixed_element_name_finder.call(cell['name'])} fixed: true unique: true nestable_elements: [#{cell['elements'].join(', ')}] CELL end @@ -126,11 +127,28 @@ def update_render_cell_calls puts "-- Update render_cell calls" Dir.glob("#{alchemy_views_folder}/**/*").each do |view| next if File.directory?(view) - gsub_file(view, /render_cell[\(\s]?([:'"]?[a-z_]+['"]?)\)?/, 'render_elements(only: \1, fixed: true)') - gsub_file(view, /render_elements[\(\s](.*):?from_cell:?\s?(=>)?\s?(['"][a-z_]+['"])\)?/, 'render_elements(\1only: \3, fixed: true)') + # <%= render_cell 'test' %> + # <%= render_cell('test') %> + # <%= render_cell("test", options: true) %> + content = File.binread(view) + content.gsub!(/render_cell([\s(]+)(['":])(\w+)([^\w])(.*?)/) do + element_name = CellNameMigrator.call($3) + "render_elements#{$1}only: #{$2}#{element_name}#{$4}, fixed: true#{$5}" + end + + # <%= render_elements from_cell: 'page_intro' %> + # <%= render_elements testing: 'blubb', from_cell: :page_intro %> + # <%= render_elements from_cell: "page_intro", testing: 'blubb' %> + # <%= render_elements(from_cell: "page_intro", testing: 'blubb') %> + # <%= render_elements(testing: 'blubb', from_cell: "page_intro") %> + content.gsub!(/render_elements(.*?)from_cell[:\s=>]+([:'"])(\w+)(['"]?)(.*)/) do + element_name = CellNameMigrator.call($3) + "render_elements#{$1}only: #{$2}#{element_name}#{$4}, fixed: true#{$5}" + end + File.open(view, "wb") { |file| file.write(content) } end end def elements_view_folder Rails.root.join('app', 'views', 'alchemy', 'elements')