Sha256: 1b94c82708d97d7e2d691cb1db262142ec523354972599a39d408eef6bd9d078

Contents?: true

Size: 1.8 KB

Versions: 48

Compression:

Stored size: 1.8 KB

Contents

module Gollum
  class Macro

    class Series < Gollum::Macro
      def render(series_prefix = "")
      	raise "This page's name does not match the prefix '#{series_prefix}'" unless @page.name =~ /^#{series_prefix}/
      	render_links(*find_series(series_prefix))
      end

      def render_links(previous_page, next_page)
      	result = "Previous: <a href=\"#{::File.join(@wiki.base_path,previous_page.escaped_url_path)}\">#{previous_page.name}</a>" if previous_page
      	result = "#{result}#{result ? ' | ' : ''}Next: <a href=\"#{::File.join(@wiki.base_path,next_page.escaped_url_path)}\">#{next_page.name}</a>" if next_page
      	wrap_result(result)
      end

      def wrap_result(result)
      	result.nil? ? "" : "<div class=\"series\">#{result}</div>"
      end

      def find_series(series_prefix = "")
      	dir = @wiki.pages.select {|page| ::File.dirname(page.path) == ::File.dirname(@page.path)}
      	dir.select! {|page| page.name =~ /\A#{series_prefix}/ } unless series_prefix.empty?
      	dir.sort_by! {|page| page.name}
      	self_index = dir.find_index {|page| page.name == @page.name}
      	if self_index > 0
          return dir[self_index-1], dir[self_index+1]
      	else
          return nil, dir[self_index+1]
      	end
      end
    end

    class SeriesStart < Gollum::Macro::Series
      def render_links(previous_page, next_page)
        result = "Next: <a href=\"#{::File.join(@wiki.base_path,next_page.escaped_url_path)}\">#{next_page.name}</a>" if next_page
        wrap_result(result)
      end
    end

    class SeriesEnd < Gollum::Macro::Series
      def render_links(previous_page, next_page)
        result = "Previous: <a href=\"#{::File.join(@wiki.base_path,previous_page.escaped_url_path)}\">#{previous_page.name}</a>" if previous_page
        wrap_result(result)
      end
    end

  end
end

Version data entries

48 entries across 48 versions & 2 rubygems

Version Path
gitlab-gollum-lib-4.2.7.10.gitlab.2 lib/gollum-lib/macro/series.rb
gitlab-gollum-lib-4.2.7.10.gitlab.1 lib/gollum-lib/macro/series.rb
gitlab-gollum-lib-4.2.7.9 lib/gollum-lib/macro/series.rb
gollum-lib-5.0.4-java lib/gollum-lib/macro/series.rb
gollum-lib-5.0.4 lib/gollum-lib/macro/series.rb
gollum-lib-5.0.3-java lib/gollum-lib/macro/series.rb
gollum-lib-5.0.3 lib/gollum-lib/macro/series.rb
gollum-lib-5.0.2-java lib/gollum-lib/macro/series.rb
gollum-lib-5.0.2 lib/gollum-lib/macro/series.rb
gollum-lib-5.0.1-java lib/gollum-lib/macro/series.rb
gollum-lib-5.0.1 lib/gollum-lib/macro/series.rb
gollum-lib-5.0 lib/gollum-lib/macro/series.rb
gitlab-gollum-lib-4.2.7.8 lib/gollum-lib/macro/series.rb
gitlab-gollum-lib-4.2.7.7 lib/gollum-lib/macro/series.rb
gitlab-gollum-lib-4.2.7.6 lib/gollum-lib/macro/series.rb
gollum-lib-4.2.10-java lib/gollum-lib/macro/series.rb
gollum-lib-4.2.10 lib/gollum-lib/macro/series.rb
gollum-lib-4.2.9-java lib/gollum-lib/macro/series.rb
gollum-lib-4.2.9 lib/gollum-lib/macro/series.rb
gollum-lib-5.0.a.4-java lib/gollum-lib/macro/series.rb