Sha256: 189fad09d910a4d4e08e860b5cadb39bbeed8ca426e79ccca3351d5784c068c9

Contents?: true

Size: 1.57 KB

Versions: 1

Compression:

Stored size: 1.57 KB

Contents

require 'caramelize/input_wiki/wiki'
require 'caramelize/database_connector'
require 'caramelize/filters/wikka_to_markdown'

module Caramelize
  module InputWiki
    class WikkaWiki < Wiki
      include DatabaseConnector

      def initialize(options = {})
        super(options)
        @options[:markup] = :wikka
        @options[:filters] << Caramelize::Wikka2Markdown
      end

      # after calling this action, titles and @revisions are expected to be filled
      def read_pages
        pages.each do |row|
          titles << row['tag']
          page = Page.new(build_properties(row))
          revisions << page
        end
        titles.uniq!
        #revisions.sort! { |a,b| a.time <=> b.time }

        revisions
      end

      def read_authors
        sql = 'SELECT name, email FROM wikka_users;'
        results = database.query(sql)
        results.each do |row|
          authors[row['name']] = OpenStruct.new(name:  row['name'],
                                                email: row['email'] )
        end
      end

      private

      def pages
        sql = 'SELECT id, tag, body, time, latest, user, note FROM wikka_pages ORDER BY time;'
        @pages ||= database.query(sql)
      end

      def build_properties(row)
        author = authors[row['user']]
        {
          id: row["id"],
          title: row["tag"],
          body: row["body"],
          markup: :wikka,
          latest: row["latest"] == "Y",
          time: row["time"],
          message: row["note"],
          author: author,
          author_name: row["user"]
        }
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
caramelize-1.0.0 lib/caramelize/input_wiki/wikkawiki.rb