class

Luce::DelimiterRun

Inherits Luce::Delimiter < Reference < Object

An implementation of Delimiter which uses concepts of "left-flanking" and "right-flanking" to determine the values of openable? and closeable?.

This is primarily used when parsing emphasis and strong emphasis, but can also be used by other extensions of DelimiterSyntax.

Constructors

new(node : Text, char : Int32, syntax : DelimiterSyntax, tags : Array(DelimiterTag), is_left_flanking : Bool, is_right_flanking : Bool, is_preceded_by_punctuation : Bool, is_followed_by_punctuation : Bool, allow_intra_word : Bool)

Class methods

parse?(parser : InlineParser, run_start : Int32, run_end : Int32, syntax : DelimiterSyntax, tags : Array(DelimiterTag), node : Text, allow_intra_word : Bool = false) : DelimiterRun | Nil

Attempt to parse a delimiter run from run_start (inclusive) to run_end (exclusive).

unicode_punctuation_pattern

According to CommonMark:

A punctuation character is an ASCII punctuation character or anything in the general Unicode categories Pc, Pd, Pe, Pf, Pi, Po, or Ps.

This Regex is inspired by https://github.com/commonmark/commonmark.js/blob/1f7d09099/lib/inlines.js#L39. I don't know if there is any way to simplify it or maintain it.

unicode_whitespace

Unicode whitespace

Instance methods

active=(active : Bool) : Nil

Whether the delimiter is active

Links cannot be nested, so we must "deactivate" any pending ones. For example, take the following text:

Text [link and [more](links)](links).

Once we have parsed Text [, there is one (pending) link in the state stack. It is, by default, active. Once we parse the next possible link, [more](links), as a real link, we must deactivate the pending links (just the one, in this case).

active?

Whether the delimiter is active

Links cannot be nested, so we must "deactivate" any pending ones. For example, take the following text:

Text [link and [more](links)](links).

Once we have parsed Text [, there is one (pending) link in the state stack. It is, by default, active. Once we parse the next possible link, [more](links), as a real link, we must deactivate the pending links (just the one, in this case).

allow_intra_word?
char

The type of delimiter

For the two-character image delimiter, ![, this is !.

closable?

Whether this delimiter can close emphasis or strong emphasis.

node

The Text ndoe representing the plain text representing this delimiter

node=(node : Text)

The Text ndoe representing the plain text representing this delimiter

openable?

Whether this delimiter can open emphasis or strong emphasis.

size

The number of delimiters

syntax

The syntax which uses this delimiter to parse a tag.

tags
to_s

Returns a nicely readable and concise string representation of this object, typically intended for users.

This method should usually not be overridden. It delegates to #to_s(IO) which can be overridden for custom implementations.

Also see #inspect.