From 783dc056ee07465d5fbdf280f45f082ad5ebe968 Mon Sep 17 00:00:00 2001 From: Victor Rudolfsson Date: Thu, 20 Feb 2025 17:03:42 +1000 Subject: [PATCH] wip: Keep other children --- lib/sablon/content.rb | 23 +++++++++-------------- 1 file changed, 9 insertions(+), 14 deletions(-) diff --git a/lib/sablon/content.rb b/lib/sablon/content.rb index e383c90..53ae33d 100644 --- a/lib/sablon/content.rb +++ b/lib/sablon/content.rb @@ -100,26 +100,21 @@ def append_to(paragraph, display_node, env) # Get all merge fields for the parent paragraph merge_fields = get_merge_fields(paragraph) - bookmarks = get_bookmarks(paragraph) - if bookmarks.any? - bookmarks.each do |bookmark| - dummy_paragraph << bookmark - end - end # Find merge field this belongs to: current_field_idx = merge_fields.find_index { |child| child.any? { display_node.ancestors.include?(_1) } } # Only remove the paragraph parent if it doesn't contain any more merge fields, # otherwise leave it in place so those merge fields dont lose their parent - paragraph.remove if current_field_idx == merge_fields.length - 1 - end - end - - def get_bookmarks(node) - node.children.filter_map do |field| - next unless field.name =~ /bookmark/ - field + if current_field_idx == merge_fields.length - 1 + # Copy allowed fields over to the new paragraph, + # so we dont lose data + paragraph.children.each do |field| + next unless [field.try(:namespace).try(:prefix), field.node_name].compact.join(':').in?(inline_tags) + dummy_paragraph << field + end + paragraph.remove + end end end