class Gollum::Filter::CriticMarkup
Render CriticMarkup
Constants
- ADDITION_PATTERN
Patterns inspired by github.com/DivineDominion/criticmarkup.tmbundle/blob/master/Syntaxes/criticmarkup.tmLanguage All patterns use multiline matching (m flag) Logic inspired by github.com/CriticMarkup/CriticMarkup-toolkit/blob/master/CLI/criticParser_CLI.py
- COMMENT_PATTERN
- DELETION_PATTERN
- HIGHLIGHT_PATTERN
- SUBSTITUTION_PATTERN
Public Instance Methods
extract(data)
click to toggle source
# File lib/gollum-lib/filter/critic_markup.rb, line 19 def extract(data) data.gsub! ADDITION_PATTERN do content = $~[:content] placeholder = generate_placeholder("#{content}#{@map.size}") # Is there a new paragraph followed by new text if content.start_with?("\n\n") && content != "\n\n" html = "\n\n<ins class='critic break'> </ins>\n\n<ins>#{content.gsub('\n', ' ')}</ins>" # Is the addition just a single new paragraph elsif content == "\n\n" html = "\n\n<ins class='critic break'> </ins>\n\n" # Is it added text followed by a new paragraph? elsif content.end_with?("\n\n") && content != "\n\n" html = "<ins>#{content.gsub('\n', ' ')}</ins>\n\n<ins class='critic break'> </ins>\n\n" else html = "<ins>#{content.gsub('\n', ' ')}</ins>" end @map[placeholder] = html placeholder end data.gsub! DELETION_PATTERN do content = $~[:content] placeholder = generate_placeholder("#{content}#{@map.size}") if content == "\n\n" html = "<del> </del>" else html = "<del>#{content.gsub('\n\n', ' ')}</del>" end @map[placeholder] = html placeholder end data.gsub! SUBSTITUTION_PATTERN do oldcontent = $~[:oldcontent] newcontent = $~[:newcontent] placeholder = generate_placeholder("#{oldcontent}#{newcontent}#{@map.size}") html = "<del>#{oldcontent}</del><ins>#{newcontent}</ins>" @map[placeholder] = html placeholder end data.gsub! HIGHLIGHT_PATTERN do content = $~[:content] comment = $~[:comment] placeholder = generate_placeholder("#{content}#{@map.size}") html = "<mark>#{content}</mark><span class='critic comment'>#{comment}</span>" @map[placeholder] = html placeholder end data.gsub! COMMENT_PATTERN do content = $~[:content] placeholder = generate_placeholder("#{content}#{@map.size}") html = "<span class='critic comment'>#{content}</span>" @map[placeholder] = html placeholder end data end
process(data)
click to toggle source
# File lib/gollum-lib/filter/critic_markup.rb, line 80 def process(data) data.gsub! process_pattern do @map[$~[:placeholder]] end data end
Private Instance Methods
generate_placeholder(content)
click to toggle source
# File lib/gollum-lib/filter/critic_markup.rb, line 93 def generate_placeholder(content) "#{open_pattern}#{Digest::SHA1.hexdigest(content)}#{close_pattern}" end
process_pattern()
click to toggle source
# File lib/gollum-lib/filter/critic_markup.rb, line 89 def process_pattern /(?<placeholder>#{open_pattern}\h{40}#{close_pattern})/ end