Sha256: 9ad379f6c9b9e6970fbfabf7325b3a81cd9a6ef10befe100b3e7e1346e870874

Contents?: true

Size: 1.97 KB

Versions: 3

Compression:

Stored size: 1.97 KB

Contents

require "parslet"
require "parslet/convenience"

require_relative "asciidoc/attribute_list"
require_relative "asciidoc/base"
require_relative "asciidoc/block"
require_relative "asciidoc/citation"
require_relative "asciidoc/content"
require_relative "asciidoc/document_attributes"
require_relative "asciidoc/header"
require_relative "asciidoc/inline"
require_relative "asciidoc/list"
require_relative "asciidoc/paragraph"
require_relative "asciidoc/section"
require_relative "asciidoc/table"
require_relative "asciidoc/term"

module Coradoc
  module Parser
    class Base < Parslet::Parser
      include Coradoc::Parser::Asciidoc::AttributeList
      include Coradoc::Parser::Asciidoc::Base
      include Coradoc::Parser::Asciidoc::Block
      include Coradoc::Parser::Asciidoc::Citation
      include Coradoc::Parser::Asciidoc::Content
      include Coradoc::Parser::Asciidoc::DocumentAttributes
      include Coradoc::Parser::Asciidoc::Header
      include Coradoc::Parser::Asciidoc::Inline
      include Coradoc::Parser::Asciidoc::List
      include Coradoc::Parser::Asciidoc::Paragraph
      include Coradoc::Parser::Asciidoc::Section
      include Coradoc::Parser::Asciidoc::Table
      include Coradoc::Parser::Asciidoc::Term

      root :document
      rule(:document) do
        (
          admonition_line |
          bib_entry |
          block_image |
          term | term2 |
          citation |
          tag |
          comment_block |
          comment_line |
          block.as(:block) |
          section.as(:section) |
          include_directive |
          document_attributes |
          list |
          table.as(:table) |
          paragraph |
          header.as(:header) |
          empty_line.as(:line_break) |
          any.as(:unparsed)
        ).repeat(1).as(:document)
      end

      def self.parse(filename)
        content = File.read(filename)
        new.parse(content)
      rescue Parslet::ParseFailed => e
        puts e.parse_failure_cause.ascii_tree
      end
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
coradoc-1.1.3 lib/coradoc/parser/base.rb
coradoc-1.1.2 lib/coradoc/parser/base.rb
coradoc-1.1.1 lib/coradoc/parser/base.rb