Class: Markly::Merge::Backend::Parser

Inherits:
TreeHaver::Base::Parser
  • Object
show all
Defined in:
lib/markly/merge/backend.rb

Overview

Markly parser wrapper

Instance Method Summary collapse

Constructor Details

#initializeParser

Create a new RBS parser instance

Raises:

  • (TreeHaver::NotAvailable)

    if rbs gem is not available



106
107
108
109
# File 'lib/markly/merge/backend.rb', line 106

def initialize
  super()
  raise TreeHaver::NotAvailable, "markly gem not available" unless Backend.available?
end

Instance Method Details

#language=(lang) ⇒ void

This method returns an undefined value.

Set the language for this parser

Parameters:

  • lang (Language, Symbol)

    RBS language (should be :rbs or Language instance)



115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
# File 'lib/markly/merge/backend.rb', line 115

def language=(lang)
  case lang
  when Language
    @language = lang
  when Symbol, String
    if lang.to_sym == :markdown
      @language = Language.markdown
    else
      raise ArgumentError,
        "Markly backend only supports Markdown parsing. Got: #{lang.inspect}"
    end
  else
    raise ArgumentError,
      "Expected Backend::Language or :markdown, got #{lang.class}"
  end
end

#parse(source) ⇒ Tree

Parse Markdown source code

Parameters:

  • source (String)

    Markdown source to parse

Returns:

  • (Tree)

    Parsed tree



136
137
138
139
140
141
142
143
144
# File 'lib/markly/merge/backend.rb', line 136

def parse(source)
  raise "Language not set" unless language
  Backend.available? or raise "Markly not available"

  flags = language.flags || ::Markly::DEFAULT
  exts = language.extensions || [:table]
  doc = ::Markly.parse(source, flags: flags, extensions: exts)
  Tree.new(doc, source)
end