From 2cfc094c6938c52b255fb57462da3ca95cc57264 Mon Sep 17 00:00:00 2001 From: Arnaud Levy <contact@arnaudlevy.com> Date: Thu, 19 May 2022 14:41:18 +0200 Subject: [PATCH] cleaner --- app/services/summernote_cleaner.rb | 11 +++++++++++ test/services/summernote_cleaner_test.rb | 13 +++++++++++-- 2 files changed, 22 insertions(+), 2 deletions(-) create mode 100644 app/services/summernote_cleaner.rb diff --git a/app/services/summernote_cleaner.rb b/app/services/summernote_cleaner.rb new file mode 100644 index 000000000..7485edc02 --- /dev/null +++ b/app/services/summernote_cleaner.rb @@ -0,0 +1,11 @@ +class SummernoteCleaner + def self.clean(text) + clean_text = text + unless text.start_with? '<p>' + chunks = clean_text.split '<p>' + chunks[0] = "<p>#{chunks[0]}</p>" + clean_text = chunks.join '<p>' + end + clean_text + end +end diff --git a/test/services/summernote_cleaner_test.rb b/test/services/summernote_cleaner_test.rb index 37fe2bc4a..25b1091d6 100644 --- a/test/services/summernote_cleaner_test.rb +++ b/test/services/summernote_cleaner_test.rb @@ -2,8 +2,17 @@ require "test_helper" class SummernoteCleanerTest < ActiveSupport::TestCase test "add p around text if missing" do - text = 'Les étudiants doivent s\'acquitter des droits universitaires annuels (170€ pour 2021/2022) ainsi que de la Contribution de la Vie Étudiante et de Campus (92€ pour 2021/2022). Ils doivent également justifier d\'une assurance responsabilité civile.<br>Plus d\'informations dans la rubrique → <a href="https://bordeauxmontaigne-iut.netlify.app/vie-etudiante/scolarite/frais-dinscription">Scolarité</a>' - assert_equal '<p>Les étudiants doivent s\'acquitter des droits universitaires annuels (170€ pour 2021/2022) ainsi que de la Contribution de la Vie Étudiante et de Campus (92€ pour 2021/2022). Ils doivent également justifier d\'une assurance responsabilité civile.<br>Plus d\'informations dans la rubrique → <a href="https://bordeauxmontaigne-iut.netlify.app/vie-etudiante/scolarite/frais-dinscription">Scolarité</a></p>', SummernoteCleaner.clean(text) + text = 'Text<br><a href="#">link</a>' + assert_equal '<p>Text<br><a href="#">link</a></p>', SummernoteCleaner.clean(text) end + test "do nothing if p is there" do + text = '<p>Text</p>' + assert_equal '<p>Text</p>', SummernoteCleaner.clean(text) + end + + test "add p before an existing p" do + text = 'Text<p>Second text</p>' + assert_equal '<p>Text</p><p>Second text</p>', SummernoteCleaner.clean(text) + end end -- GitLab