Class: HTML::Pipeline::CustomLinksFilter
- Defined in:
- lib/html/pipeline/custom_links_filter.rb
Constant Summary collapse
- LF_REGEXP =
/\[\[\[([ '\.:\-\p{Word}]+)\]\]\]/
- WP_REGEXP =
/\[\[([ '\.+:!\-\(\)\p{Word}]+)\]\]/
- LF_TITLE =
"Lien du wiki interne LinuxFr.org"
- WP_TITLE =
"Définition Wikipédia"
- IGNORE_PARENTS =
Don’t look for links in text nodes that are children of these elements
%w(pre code a).to_set
Instance Attribute Summary
Attributes inherited from Filter
Instance Method Summary collapse
Methods inherited from Filter
#base_url, call, #current_user, #doc, #has_ancestor?, #html, #initialize, #needs, #parse_html, #repository, to_document, to_html, #validate
Constructor Details
This class inherits a constructor from HTML::Pipeline::Filter
Instance Method Details
#call ⇒ Object
18 19 20 21 22 23 24 25 26 27 28 29 30 |
# File 'lib/html/pipeline/custom_links_filter.rb', line 18 def call doc.search('text()').each do |node| content = node.to_html next if !content.include?('[[') next if has_ancestor?(node, IGNORE_PARENTS) html = content html = process_internal_wiki_links html html = process_wikipedia_links html next if html == content node.replace(html) end doc end |
#process_internal_wiki_links(text) ⇒ Object
32 33 34 35 36 37 38 39 |
# File 'lib/html/pipeline/custom_links_filter.rb', line 32 def process_internal_wiki_links(text) base_url = "//#{context[:host]}/wiki" text.gsub(LF_REGEXP) do word = $1 slug = word.parameterize "<a href=\"#{base_url}/#{slug}\" title=\"#{LF_TITLE}\">#{word}</a>" end end |
#process_wikipedia_links(text) ⇒ Object
41 42 43 44 45 46 47 48 |
# File 'lib/html/pipeline/custom_links_filter.rb', line 41 def process_wikipedia_links(text) text.gsub(WP_REGEXP) do word = $1 parts = word.split(":") parts.shift if %w(de en es eo wikt).include?(parts.first) "<a href=\"http://fr.wikipedia.org/wiki/#{word}\" title=\"#{WP_TITLE}\")>#{parts.join ':'}</a>" end end |