Sha256: 7349b3eef4c4c5cbae43d663c6d4f22b79c170d533561486123e59bb784a6cc7

Contents?: true

Size: 1.42 KB

Versions: 12

Compression:

Stored size: 1.42 KB

Contents

# encoding: utf-8
require 'ostruct'
require 'procme'

module Infoboxer
  class Parser
    class ParsingError < RuntimeError
    end

    class << self
      def inline(text, traits = nil)
        new(context(text, traits)).inline
      end

      def paragraphs(text, traits = nil)
        new(context(text, traits)).paragraphs
      end

      def paragraph(text, traits = nil)
        paragraphs(text, traits).first
      end

      def document(text, traits = nil)
        Tree::Document.new(paragraphs(text, traits))
      end

      def fragment(text, traits = nil)
        new(context(text, traits)).long_inline
      end

      private

      def context(text, traits)
        Context.new(text, coerce_traits(traits))
      end

      def coerce_traits(traits)
        case traits
        when nil
          MediaWiki::Traits.default
        when Hash
          MediaWiki::Traits.new(traits)
        when MediaWiki::Traits
          traits
        else
          fail(ArgumentError, "Can't coerce site traits from #{traits.inspect}")
        end
      end
    end
    
    include Tree

    def initialize(context)
      @context = context
      @re = OpenStruct.new(make_regexps)
    end

    require_relative 'parser/inline'
    include Parser::Inline

    require_relative 'parser/paragraphs'
    include Parser::Paragraphs

    private

    require_relative 'parser/util'
    include Parser::Util
  end
end

require_relative 'parser/context'

Version data entries

12 entries across 12 versions & 1 rubygems

Version Path
infoboxer-0.2.7 lib/infoboxer/parser.rb
infoboxer-0.2.6 lib/infoboxer/parser.rb
infoboxer-0.2.5 lib/infoboxer/parser.rb
infoboxer-0.2.4 lib/infoboxer/parser.rb
infoboxer-0.2.3 lib/infoboxer/parser.rb
infoboxer-0.2.2 lib/infoboxer/parser.rb
infoboxer-0.2.1 lib/infoboxer/parser.rb
infoboxer-0.2.0 lib/infoboxer/parser.rb
infoboxer-0.1.2.1 lib/infoboxer/parser.rb
infoboxer-0.1.2 lib/infoboxer/parser.rb
infoboxer-0.1.1 lib/infoboxer/parser.rb
infoboxer-0.1.0 lib/infoboxer/parser.rb