Sha256: 8f81d497c8ff719e779f32fb72484e0c69378786868205347109739b186d615c

Contents?: true

Size: 1.74 KB

Versions: 1

Compression:

Stored size: 1.74 KB

Contents

require 'nora_mark'
require 'rake/tasklib'

module NoraMark
  class RakeTask < ::Rake::TaskLib
    attr_accessor :lang, :page_number_digits
    def initialize(lang: 'en')
      @preprocessors = []
      @transformers = []
      yield self if block_given?
      @lang ||= lang
      @page_number_digits ||= 5
      define
    end

    def add_preprocessor(&block)
      @preprocessors << block;
    end

    def add_transformer(&block)
      @transformers << block;
    end

    def define
      desc "rule for *-nora.txt to *-nora_xxx.html. Use *-nora-transform.rb on same directory as transformer"
      rule( /-((nora)|(arti))_[0-9]{#{page_number_digits}}\.xhtml/ =>
            proc {|task_name|
              task_name.sub(/^(.+?-((nora)|(arti)))_[0-9]{#{page_number_digits}}\.xhtml/, '\1.txt')
            }) do
        |t|

        dir =  File.dirname File.expand_path(t.source)
        transformer_name = File.join dir, File.basename(t.source, '.txt') + '-transform.rb'
        nora =
          NoraMark::Document.parse(
                                   File.open(t.source),
                                   :lang => @lang.to_s,
                                   :sequence_format => "%0#{page_number_digits}d",
                                   :document_name=>t.name.sub(/_[0-9]{#{page_number_digits}}\.xhtml/, '')) do
          |doc|
          @preprocessors.each do
            |prepro|
            doc.preprocessor(&prepro)
          end
          @transformers.each do
            |transformer|
            doc.add_transformer(&transformer)
          end
          if File.exist? transformer_name
            doc.add_transformer(text: File.open(transformer_name).read)
          end
        end
        nora.html.write_as_files
      end
      
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
nora_mark-0.2beta15 lib/nora_mark/rake_task.rb