Class: Banzai::Filter::GollumTagsFilter
- Inherits:
-
HTML::Pipeline::Filter
- Object
- HTML::Pipeline::Filter
- Banzai::Filter::GollumTagsFilter
- Includes:
- ActionView::Helpers::TagHelper
- Defined in:
- lib/banzai/filter/gollum_tags_filter.rb
Overview
HTML Filter for parsing Gollum’s tags in HTML. It’s only parses the following tags:
-
Link to internal pages:
- [Bug Reports]
- [How to Contribute|Contributing]
-
Link to external resources:
-
Link internal images, the special attributes will be ignored:
- [images/logo.png]
- [images/logo.png|alt=Logo]
-
Link external images, the special attributes will be ignored:
- []
- [|alt=Logo]
Based on Gollum::Filter::Tags
Note: the table of contents tag is now handled by TableOfContentsTagFilter
Context options:
:wiki [Wiki] (required) - Current wiki instance.
Constant Summary collapse
- TAGS_PATTERN =
Pattern to match tags content that should be parsed in HTML.
Gollum’s tags have been made to resemble the tags of other markups, especially MediaWiki. The basic syntax is:
- [tag]
-
Some tags will accept attributes which are separated by pipe symbols.Some attributes must precede the tag and some must follow it:
- [prefix-attribute|tag]
- [tag|suffix-attribute]
-
See github.com/gollum/gollum/wiki
Rubular: rubular.com/r/7dQnE5CUCH
- [prefix-attribute|tag]
/\[\[(.+?)\]\]/
- ALLOWED_IMAGE_EXTENSIONS =
Pattern to match allowed image extensions
/.+(jpg|png|gif|svg|bmp)\z/i
- IGNORED_ANCESTOR_TAGS =
Do not perform linking inside these tags.
%w[pre code tt].to_set
Instance Method Summary collapse
Instance Method Details
#call ⇒ Object
62 63 64 65 66 67 68 69 70 71 72 73 |
# File 'lib/banzai/filter/gollum_tags_filter.rb', line 62 def call doc.xpath('descendant-or-self::text()').each do |node| next if has_ancestor?(node, IGNORED_ANCESTOR_TAGS) next unless node.content =~ TAGS_PATTERN html = process_tag(Regexp.last_match(1)) node.replace(html) if html && html != node.content end doc end |