From 1aa7aa936ba4ebd4dc517fdd3ec9aff25a8ff974 Mon Sep 17 00:00:00 2001 From: echarp Date: Tue, 6 Jun 2017 23:08:10 +0200 Subject: [PATCH] Attempt to improve the markdown digest --- app/helpers/digest_helper.rb | 8 ++++++++ app/helpers/events_helper.rb | 5 ++++- app/views/digests/markdown.html.haml | 2 +- app/views/events/show.text.haml | 2 +- 4 files changed, 14 insertions(+), 3 deletions(-) create mode 100644 app/helpers/digest_helper.rb diff --git a/app/helpers/digest_helper.rb b/app/helpers/digest_helper.rb new file mode 100644 index 00000000..2474d266 --- /dev/null +++ b/app/helpers/digest_helper.rb @@ -0,0 +1,8 @@ +# Helper for the digest/markdown views +module DigestHelper + # Important mechanism, to ensure the digest will not have the same footnote + # link multiple times + def renumber_footnotes(id, description) + description.gsub(/\[(\d)*\]/, "[#{id}_\\1]") + end +end diff --git a/app/helpers/events_helper.rb b/app/helpers/events_helper.rb index 9f1bed9d..39063451 100644 --- a/app/helpers/events_helper.rb +++ b/app/helpers/events_helper.rb @@ -56,6 +56,8 @@ module EventsHelper item.class.human_attribute_name(label).rjust(12) + " #{value}" end + # Using kramdown, let's parse the html and render it as markdown text + # No idea why, but also needs to remove extraneous quote encoding :( def to_markdown(description, line_width = -1) desc = sanitize description, tags: %w[p br h1 h2 h3 h4 table tr th td ul ol li a strong @@ -64,8 +66,9 @@ module EventsHelper result = Kramdown::Document.new(desc, input: :html, line_width: line_width) .to_kramdown # Remove extraneous line feeds + return if result.nil? || result.blank? result.gsub(/\n\n+/, ' -').tr('\\', '').html_safe +').gsub(/(\w)\\'/, '\1\'') end end diff --git a/app/views/digests/markdown.html.haml b/app/views/digests/markdown.html.haml index e02e9c29..6d188894 100644 --- a/app/views/digests/markdown.html.haml +++ b/app/views/digests/markdown.html.haml @@ -8,7 +8,7 @@ - @events.sort_by(&:start_time).each do |event| [#{event.region.region.try(:code) || event.region.try(:code)} #{event.city}] [#{event.title}](#{event_url event}) - #{display_date event} \----- - = to_markdown event.description, -1 + = renumber_footnotes event.id, to_markdown(event.description) \ * #{[event.place_name, event.full_address].compact.join ', '} - if event.url.present? diff --git a/app/views/events/show.text.haml b/app/views/events/show.text.haml index 02d2326d..04642ea9 100644 --- a/app/views/events/show.text.haml +++ b/app/views/events/show.text.haml @@ -15,5 +15,5 @@ = display_attr @event, :repeat = display_attr @event, :rule, t(@event.rule, scope: 'activerecord.attributes.event.rule_values') \ -= to_markdown @event.description, 78 += raw to_markdown @event.description, 78 ==============================================================================