Sha256: d338f96fbaf33f044090b600716231c4b5b09c0c70bdc29e69e54fa56f736285

Contents?: true

Size: 1.8 KB

Versions: 2

Compression:

Stored size: 1.8 KB

Contents

#Encoding: UTF-8

module Caramelize
  class GollumOutput
    
    def supported_markup 
      [:markdown, :textile]
    end
    
    # Initialize a new gollum-wiki-repository at the given path.
    def initialize wiki_path
      # TODO use sanitized name as wiki-repository-title
      repo = Grit::Repo.init(wiki_path) unless File.exists?(wiki_path)
      @gollum = Gollum::Wiki.new(wiki_path)
    end
    
    # Commit the given page into the gollum-wiki-repository.
    # Make sure the target markup is correct before calling this method.
    def commit_revision(page, markup) 
      message = page.message.empty? ? "Edit in page #{page.title}" : page.message
        
      if page.author
        author = page.author
      else
        author = Author.new
        author.name = page.author_name
        author.email = "mail@example.com"
      end
      
      commit = {:message => message,
               :name => author.name,
               :email => author.email,
               :authored_date => page.time,
               :committed_date => page.time
      }
      
      gollum_page = @gollum.page(page.title)
      if gollum_page
        @gollum.update_page(gollum_page, gollum_page.name, gollum_page.format, page.body, commit)
      else
        @gollum.write_page(page.title, markup, page.body, commit)
      end
    end
    
    # Commit all revisions of the given history into this gollum-wiki-repository.
    def commit_history(revisions, options={})
      options[:markup] = :markdown if options[:markup].nil? # target markup
      revisions.each_with_index do |page, index|
        if options[:verbosity] == :normal || options[:verbosity] == :verbose
          puts "(#{index+1}/#{revisions.count}) #{page.time}  #{page.title}" 
        end
        
        commit_revision(page, options[:markup])
      end
    end
    
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
caramelize-0.1.1 lib/caramelize/gollum_output.rb
caramelize-0.1.0 lib/caramelize/gollum_output.rb