Sha256: dcfda0dbb23a277ce9e61c36a2ecfb3a9ad244b551b39c08a6cebcaf869d0fa1

Contents?: true

Size: 1.48 KB

Versions: 3

Compression:

Stored size: 1.48 KB

Contents

require 'active_support/inflector'
require 'github/markup'
require 'html/pipeline'
require 'pathname'
require "vimwiki_markdown/vimwiki_link"

class VimwikiMarkdown::WikiBody

  def initialize(options)
    @options = options
  end

  def to_s
    @markdown_body = get_wiki_markdown_contents
    fixlinks
    github_markup = GitHub::Markup.render('README.markdown', markdown_body)
    pipeline = HTML::Pipeline.new [
      HTML::Pipeline::SyntaxHighlightFilter,
      HTML::Pipeline::TableOfContentsFilter
    ]
    result = pipeline.call(github_markup)
    result[:output].to_s
  end


  private

  attr_reader :options, :markdown_body

  def get_wiki_markdown_contents
    file = File.open(options.input_file, "r")
    file.read
  end

  def fixlinks
    convert_wiki_style_links_with_title_bar!
    convert_wiki_style_links!
    convert_markdown_local_links!
  end

  def convert_wiki_style_links_with_title_bar!
    wiki_bar = /\[\[(?<source>.*)\|(?<title>.*)\]\]/
    @markdown_body.gsub!(wiki_bar) do
      source = Regexp.last_match[:source]
      title = Regexp.last_match[:title]
      "[#{title}](#{source})"
    end
  end

  def convert_wiki_style_links!
    @markdown_body.gsub!(/\[\[(.*?)\]\]/) do
      link= Regexp.last_match[1]
      "[#{link}](#{link})"
    end
  end

  def convert_markdown_local_links!
    @markdown_body = @markdown_body.gsub(/\[.*?\]\(.*?\)/) do |match|
      VimwikiMarkdown::VimwikiLink.new(match, options.input_file, options.extension, options.root_path).to_s
    end
  end

end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
vimwiki_markdown-0.2.5 lib/vimwiki_markdown/wiki_body.rb
vimwiki_markdown-0.2.4 lib/vimwiki_markdown/wiki_body.rb
vimwiki_markdown-0.2.3 lib/vimwiki_markdown/wiki_body.rb