Sha256: 5f67670d96d8a139ede602d07312616d88a15a6ebfe1789f2d3e5c699cbb7de2

Contents?: true

Size: 1.35 KB

Versions: 3

Compression:

Stored size: 1.35 KB

Contents

# -*- encoding: utf-8 -*-
require "arti_mark/version"
require "arti_mark/command_lexer"
require "arti_mark/base_parser"
require 'arti_mark/common_block_parser'
require "arti_mark/paragraph_parser"
require "arti_mark/div_parser"
require "arti_mark/article_parser"
require "arti_mark/section_parser"
require "arti_mark/head_parser"
require "arti_mark/block_image_parser"
require "arti_mark/list_parser"
require "arti_mark/ordered_list_parser"
require "arti_mark/unordered_list_parser"
require "arti_mark/definition_list_parser"
require "arti_mark/universal_block_parser"
require 'arti_mark/syntax'

require 'arti_mark/html/generator'
require 'arti_mark/parser'

module ArtiMark
  class Document
    def initialize(param = {})
      @preprocessors = [
                        Proc.new { |text| text.gsub(/\r?\n(\r?\n)+/, "\n\n") },
                        Proc.new { |text| text.strip.gsub(/ /, ' ') } # convert Japanese full-width spece to normal space
                       ]
      @generator = Html::Generator.new(param)
    end 

    def preprocessor(&block)
      @preprocessors << block
    end

    def convert(text)
      @preprocessors.each {
        |pr|
        text = pr.call(text)
      }
      @parser = Parser.new(text)
      if (!@parser.parse)
        puts @parser.show_error
        exit -1
      end
      @generator.convert(@parser.result)

    end

  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
arti_mark-0.1.beta3 lib/arti_mark.rb
arti_mark-0.1.beta2 lib/arti_mark.rb
arti_mark-0.1.beta1 lib/arti_mark.rb