class Luce::BlockParser

Overview

Maintains the internal state needed to parse a series of lines into blocks of Markdown suitable for further inline parsing.

Defined in:

luce/block_parser.cr

Constructors

Instance Method Summary

Constructor Detail

def self.new(lines : Array(String), document : Document) #

Instance Method Detail

def advance : Nil #

def block_syntaxes : Array(Luce::BlockSyntax) #

The enabled block syntaxes

To turn a series of lines into blocks, each of these will be tried in turn. Order matters here.


def current : String #

Return the current line


def document : Document #

The Markdown document this parser is parsing


def done? : Bool #

def encountered_blank_line : Bool #

Whether the parser has encountered a blank line between two block-level elements.


def encountered_blank_line=(encountered_blank_line : Bool) #

Whether the parser has encountered a blank line between two block-level elements.


def lines : Array(String) #

def matches?(regex : Regex) : Bool #

Return if the current line matches the given regex or not.


def matches_next?(regex : Regex) : Bool #

Return if the next line matches the given regex or not.


def next : String | Nil #

Return the line after the current one or nil if there is none.


def parse_lines : Array(Node) #

def peek(lines_ahead : Int32) : String | Nil #

Return the line that is lines_ahead lines ahead of the current one, or nil if there is none.

Note that #peek(0) is equivalent to #current, and #peek(1) is equivalent to #next.


def standard_block_syntaxes : Array(Luce::BlockSyntax) #

The collection of built-in block parsers