aboutsummaryrefslogtreecommitdiffstats
path: root/src/content/text.rs
diff options
context:
space:
mode:
authorLibravatar Titus Wormer <tituswormer@gmail.com>2022-08-15 11:40:40 +0200
committerLibravatar Titus Wormer <tituswormer@gmail.com>2022-08-15 11:40:40 +0200
commitee967aa634b5f8e9d30329d587538f1371a5da95 (patch)
treecdc1461c822e440b24428eb8d431881e216ab8bd /src/content/text.rs
parent13135666fac476f3cd6f059147f496533b304097 (diff)
downloadmarkdown-rs-ee967aa634b5f8e9d30329d587538f1371a5da95.tar.gz
markdown-rs-ee967aa634b5f8e9d30329d587538f1371a5da95.tar.bz2
markdown-rs-ee967aa634b5f8e9d30329d587538f1371a5da95.zip
Refactor to move `content` to `construct`
Diffstat (limited to 'src/content/text.rs')
-rw-r--r--src/content/text.rs173
1 files changed, 0 insertions, 173 deletions
diff --git a/src/content/text.rs b/src/content/text.rs
deleted file mode 100644
index 5c13dba..0000000
--- a/src/content/text.rs
+++ /dev/null
@@ -1,173 +0,0 @@
-//! The text content type.
-//!
-//! **Text** contains phrasing content such as
-//! [attention][crate::construct::attention] (emphasis, strong),
-//! [code (text)][crate::construct::code_text], and actual text.
-//!
-//! The constructs found in text are:
-//!
-//! * [Attention][crate::construct::attention]
-//! * [Autolink][crate::construct::autolink]
-//! * [Character escape][crate::construct::character_escape]
-//! * [Character reference][crate::construct::character_reference]
-//! * [Code (text)][crate::construct::code_text]
-//! * [Hard break (escape)][crate::construct::hard_break_escape]
-//! * [HTML (text)][crate::construct::html_text]
-//! * [Label start (image)][crate::construct::label_start_image]
-//! * [Label start (link)][crate::construct::label_start_link]
-//! * [Label end][crate::construct::label_end]
-//!
-//! > 👉 **Note**: for performance reasons, hard break (trailing) is formed by
-//! > [whitespace][crate::construct::partial_whitespace].
-
-use crate::construct::partial_whitespace::resolve_whitespace;
-use crate::resolve::Name as ResolveName;
-use crate::state::{Name as StateName, State};
-use crate::tokenizer::Tokenizer;
-
-/// Characters that can start something in text.
-const MARKERS: [u8; 9] = [
- b'!', // `label_start_image`
- b'&', // `character_reference`
- b'*', // `attention`
- b'<', // `autolink`, `html_text`
- b'[', // `label_start_link`
- b'\\', // `character_escape`, `hard_break_escape`
- b']', // `label_end`
- b'_', // `attention`
- b'`', // `code_text`
-];
-
-/// Start of text.
-///
-/// ```markdown
-/// > | abc
-/// ^
-/// ```
-pub fn start(tokenizer: &mut Tokenizer) -> State {
- tokenizer.register_resolver(ResolveName::Text);
- tokenizer.tokenize_state.markers = &MARKERS;
- State::Retry(StateName::TextBefore)
-}
-
-/// Before text.
-///
-/// ```markdown
-/// > | abc
-/// ^
-/// ```
-pub fn before(tokenizer: &mut Tokenizer) -> State {
- match tokenizer.current {
- None => State::Ok,
- Some(b'!') => {
- tokenizer.attempt(
- State::Next(StateName::TextBefore),
- State::Next(StateName::TextBeforeData),
- );
- State::Retry(StateName::LabelStartImageStart)
- }
- Some(b'&') => {
- tokenizer.attempt(
- State::Next(StateName::TextBefore),
- State::Next(StateName::TextBeforeData),
- );
- State::Retry(StateName::CharacterReferenceStart)
- }
- Some(b'*' | b'_') => {
- tokenizer.attempt(
- State::Next(StateName::TextBefore),
- State::Next(StateName::TextBeforeData),
- );
- State::Retry(StateName::AttentionStart)
- }
- // `autolink`, `html_text` (order does not matter)
- Some(b'<') => {
- tokenizer.attempt(
- State::Next(StateName::TextBefore),
- State::Next(StateName::TextBeforeHtml),
- );
- State::Retry(StateName::AutolinkStart)
- }
- Some(b'[') => {
- tokenizer.attempt(
- State::Next(StateName::TextBefore),
- State::Next(StateName::TextBeforeData),
- );
- State::Retry(StateName::LabelStartLinkStart)
- }
- Some(b'\\') => {
- tokenizer.attempt(
- State::Next(StateName::TextBefore),
- State::Next(StateName::TextBeforeHardBreakEscape),
- );
- State::Retry(StateName::CharacterEscapeStart)
- }
- Some(b']') => {
- tokenizer.attempt(
- State::Next(StateName::TextBefore),
- State::Next(StateName::TextBeforeData),
- );
- State::Retry(StateName::LabelEndStart)
- }
- Some(b'`') => {
- tokenizer.attempt(
- State::Next(StateName::TextBefore),
- State::Next(StateName::TextBeforeData),
- );
- State::Retry(StateName::CodeTextStart)
- }
- _ => State::Retry(StateName::TextBeforeData),
- }
-}
-
-/// Before html (text).
-///
-/// At `<`, which wasn’t an autolink.
-///
-/// ```markdown
-/// > | a <b>
-/// ^
-/// ```
-pub fn before_html(tokenizer: &mut Tokenizer) -> State {
- tokenizer.attempt(
- State::Next(StateName::TextBefore),
- State::Next(StateName::TextBeforeData),
- );
- State::Retry(StateName::HtmlTextStart)
-}
-
-/// Before hard break escape.
-///
-/// At `\`, which wasn’t a character escape.
-///
-/// ```markdown
-/// > | a \␊
-/// ^
-/// ```
-pub fn before_hard_break_escape(tokenizer: &mut Tokenizer) -> State {
- tokenizer.attempt(
- State::Next(StateName::TextBefore),
- State::Next(StateName::TextBeforeData),
- );
- State::Retry(StateName::HardBreakEscapeStart)
-}
-
-/// Before data.
-///
-/// ```markdown
-/// > | a
-/// ^
-/// ```
-pub fn before_data(tokenizer: &mut Tokenizer) -> State {
- tokenizer.attempt(State::Next(StateName::TextBefore), State::Nok);
- State::Retry(StateName::DataStart)
-}
-
-/// Resolve whitespace.
-pub fn resolve(tokenizer: &mut Tokenizer) {
- resolve_whitespace(
- tokenizer,
- tokenizer.parse_state.constructs.hard_break_trailing,
- true,
- );
-}