Class: Gollum::Markup
- Inherits:
-
Object
- Object
- Gollum::Markup
- Includes:
- Helpers
- Defined in:
- lib/gollum-lib/markup.rb,
lib/gollum-lib/markups.rb
Instance Attribute Summary collapse
-
#dir ⇒ Object
readonly
Returns the value of attribute dir.
-
#encoding ⇒ Object
readonly
Returns the value of attribute encoding.
-
#format ⇒ Object
readonly
Returns the value of attribute format.
-
#historical ⇒ Object
readonly
Returns the value of attribute historical.
-
#include_levels ⇒ Object
readonly
Returns the value of attribute include_levels.
-
#metadata ⇒ Object
Returns the value of attribute metadata.
-
#name ⇒ Object
readonly
Returns the value of attribute name.
-
#page ⇒ Object
readonly
Returns the value of attribute page.
-
#parent_page ⇒ Object
readonly
Returns the value of attribute parent_page.
-
#sub_page ⇒ Object
readonly
Returns the value of attribute sub_page.
-
#toc ⇒ Object
Returns the value of attribute toc.
-
#wiki ⇒ Object
readonly
Returns the value of attribute wiki.
Class Method Summary collapse
- .extensions ⇒ Object
-
.formats ⇒ Object
Only use the formats that are specified in config.rb.
-
.register(ext, name, options = {}, &block) ⇒ Object
Register a file format.
- .to_xml_opts ⇒ Object
Instance Method Summary collapse
-
#check_cache(type, id) ⇒ Object
Hook for getting the formatted value of extracted tag data.
-
#initialize(page) ⇒ Markup
constructor
Initialize a new Markup object.
-
#process_chain(data, filter_chain) {|Nokogiri::HTML::DocumentFragment.parse(data)| ... } ⇒ Object
Process the filter chain.
-
#render(no_follow = false, encoding = nil, include_levels = 10, &block) ⇒ Object
Render the content with Gollum wiki syntax on top of the file’s own markup language.
-
#reverse_links? ⇒ Boolean
Whether or not this markup’s format uses reversed-order links ([description | url] rather than [url | description]).
-
#skip_filter?(filter) ⇒ Boolean
Whether or not a particular filter should be skipped for this format.
-
#update_cache(type, id, data) ⇒ Object
Hook for caching the formatted value of extracted tag data.
Methods included from Helpers
#path_to_link_text, #trim_leading_slashes
Constructor Details
#initialize(page) ⇒ Markup
Initialize a new Markup object.
page - The Gollum::Page.
Returns a new Gollum::Markup object, ready for rendering.
87 88 89 90 91 92 93 94 95 96 97 98 |
# File 'lib/gollum-lib/markup.rb', line 87 def initialize(page) @wiki = page.wiki @name = page.filename @data = page.text_data @version = page.version.id if page.version @format = page.format @sub_page = page.sub_page @parent_page = page.parent_page @page = page @dir = ::File.dirname("/#{@page.url_path}") @metadata = nil end |
Instance Attribute Details
#dir ⇒ Object (readonly)
Returns the value of attribute dir.
79 80 81 |
# File 'lib/gollum-lib/markup.rb', line 79 def dir @dir end |
#encoding ⇒ Object (readonly)
Returns the value of attribute encoding.
71 72 73 |
# File 'lib/gollum-lib/markup.rb', line 71 def encoding @encoding end |
#format ⇒ Object (readonly)
Returns the value of attribute format.
72 73 74 |
# File 'lib/gollum-lib/markup.rb', line 72 def format @format end |
#historical ⇒ Object (readonly)
Returns the value of attribute historical.
80 81 82 |
# File 'lib/gollum-lib/markup.rb', line 80 def historical @historical end |
#include_levels ⇒ Object (readonly)
Returns the value of attribute include_levels.
78 79 80 |
# File 'lib/gollum-lib/markup.rb', line 78 def include_levels @include_levels end |
#metadata ⇒ Object
Returns the value of attribute metadata.
70 71 72 |
# File 'lib/gollum-lib/markup.rb', line 70 def @metadata end |
#name ⇒ Object (readonly)
Returns the value of attribute name.
77 78 79 |
# File 'lib/gollum-lib/markup.rb', line 77 def name @name end |
#page ⇒ Object (readonly)
Returns the value of attribute page.
74 75 76 |
# File 'lib/gollum-lib/markup.rb', line 74 def page @page end |
#parent_page ⇒ Object (readonly)
Returns the value of attribute parent_page.
75 76 77 |
# File 'lib/gollum-lib/markup.rb', line 75 def parent_page @parent_page end |
#sub_page ⇒ Object (readonly)
Returns the value of attribute sub_page.
76 77 78 |
# File 'lib/gollum-lib/markup.rb', line 76 def sub_page @sub_page end |
#toc ⇒ Object
Returns the value of attribute toc.
69 70 71 |
# File 'lib/gollum-lib/markup.rb', line 69 def toc @toc end |
#wiki ⇒ Object (readonly)
Returns the value of attribute wiki.
73 74 75 |
# File 'lib/gollum-lib/markup.rb', line 73 def wiki @wiki end |
Class Method Details
.extensions ⇒ Object
38 39 40 |
# File 'lib/gollum-lib/markup.rb', line 38 def extensions @extensions end |
.formats ⇒ Object
Only use the formats that are specified in config.rb
30 31 32 33 34 35 36 |
# File 'lib/gollum-lib/markup.rb', line 30 def formats if defined? Gollum::Page::FORMAT_NAMES @formats.select { |_, value| Gollum::Page::FORMAT_NAMES.values.include? value[:name] } else @formats end end |
.register(ext, name, options = {}, &block) ⇒ Object
Register a file format
ext - The file extension name - The name of the markup type options - Hash of options:
extensions - Array of valid file extensions, for instance ['md']
enabled - Whether the markup is enabled
If given a block, that block will be registered with GitHub::Markup to render any matching pages
52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 |
# File 'lib/gollum-lib/markup.rb', line 52 def register(ext, name, = {}, &block) if [:regexp] then STDERR.puts <<-EOS Warning: attempted to register a markup (name: #{name.to_s}) by passing the deprecated :regexp option. Please pass an Array of valid file extensions (:extensions => ['ext1', 'ext2']) instead. EOS end new_extension = .fetch(:extensions, [ext.to_s]) @formats[ext] = { :name => name, :extensions => new_extension, :reverse_links => .fetch(:reverse_links, false), :skip_filters => .fetch(:skip_filters, nil), :enabled => .fetch(:enabled, true) } @extensions.concat(new_extension) end |
.to_xml_opts ⇒ Object
25 26 27 |
# File 'lib/gollum-lib/markup.rb', line 25 def to_xml_opts { :save_with => Nokogiri::XML::Node::SaveOptions::DEFAULT_XHTML ^ 1, :indent => 0, :encoding => 'UTF-8' } end |
Instance Method Details
#check_cache(type, id) ⇒ Object
Hook for getting the formatted value of extracted tag data.
type - Symbol value identifying what type of data is being extracted. id - String SHA1 hash of original extracted tag data.
Returns the String cached formatted data, or nil.
171 172 |
# File 'lib/gollum-lib/markup.rb', line 171 def check_cache(type, id) end |
#process_chain(data, filter_chain) {|Nokogiri::HTML::DocumentFragment.parse(data)| ... } ⇒ Object
Process the filter chain
data - the data to send through the chain filter_chain - the chain to process
Returns the formatted data
122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 |
# File 'lib/gollum-lib/markup.rb', line 122 def process_chain(data, filter_chain) # First we extract the data through the chain... filter_chain.each do |filter| data = filter.extract(data) end # Since the last 'extract' action in our chain *should* be the markup # to HTML converter, we now have HTML which we can parse and yield, for # anyone who wants it yield Nokogiri::HTML::DocumentFragment.parse(data) if block_given? # Then we process the data through the chain *backwards* filter_chain.reverse.each do |filter| data = filter.process(data) end data end |
#render(no_follow = false, encoding = nil, include_levels = 10, &block) ⇒ Object
Render the content with Gollum wiki syntax on top of the file’s own markup language. Takes an optional block that will be executed after the markup rendering step in the filter chain.
no_follow - Boolean that determines if rel=“nofollow” is added to all
<a> tags.
encoding - Encoding Constant or String.
Returns the formatted String content.
150 151 152 153 154 155 156 157 158 159 160 161 162 163 |
# File 'lib/gollum-lib/markup.rb', line 150 def render(no_follow = false, encoding = nil, include_levels = 10, &block) @historical = no_follow @encoding = encoding @include_levels = include_levels data = @data.dup filter_chain = @wiki.filter_chain.reject {|filter| skip_filter?(filter)} filter_chain.map! do |filter_sym| Gollum::Filter.const_get(filter_sym).new(self) end process_chain(data, filter_chain, &block) end |
#reverse_links? ⇒ Boolean
Whether or not this markup’s format uses reversed-order links ([description | url] rather than [url | description]). Defaults to false.
101 102 103 |
# File 'lib/gollum-lib/markup.rb', line 101 def reverse_links? self.class.formats[@format][:reverse_links] end |
#skip_filter?(filter) ⇒ Boolean
Whether or not a particular filter should be skipped for this format.
106 107 108 109 110 111 112 113 114 |
# File 'lib/gollum-lib/markup.rb', line 106 def skip_filter?(filter) if self.class.formats[@format][:skip_filters].respond_to?(:include?) self.class.formats[@format][:skip_filters].include?(filter) elsif self.class.formats[@format][:skip_filters].respond_to?(:call) self.class.formats[@format][:skip_filters].call(filter) else false end end |
#update_cache(type, id, data) ⇒ Object
Hook for caching the formatted value of extracted tag data.
type - Symbol value identifying what type of data is being extracted. id - String SHA1 hash of original extracted tag data. data - The String formatted value to be cached.
Returns nothing.
181 182 |
# File 'lib/gollum-lib/markup.rb', line 181 def update_cache(type, id, data) end |