From ee967aa634b5f8e9d30329d587538f1371a5da95 Mon Sep 17 00:00:00 2001 From: Titus Wormer Date: Mon, 15 Aug 2022 11:40:40 +0200 Subject: Refactor to move `content` to `construct` --- src/content/string.rs | 76 --------------------------------------------------- 1 file changed, 76 deletions(-) delete mode 100644 src/content/string.rs (limited to 'src/content/string.rs') diff --git a/src/content/string.rs b/src/content/string.rs deleted file mode 100644 index ec4fce2..0000000 --- a/src/content/string.rs +++ /dev/null @@ -1,76 +0,0 @@ -//! The string content type. -//! -//! **String** is a limited [text][] like content type which only allows -//! character escapes and character references. -//! It exists in things such as identifiers (media references, definitions), -//! titles, URLs, code (fenced) info and meta parts. -//! -//! The constructs found in string are: -//! -//! * [Character escape][crate::construct::character_escape] -//! * [Character reference][crate::construct::character_reference] -//! -//! [text]: crate::content::text - -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 string. -const MARKERS: [u8; 2] = [b'&', b'\\']; - -/// Start of string. -/// -/// ````markdown -/// > | ```js -/// ^ -/// ```` -pub fn start(tokenizer: &mut Tokenizer) -> State { - tokenizer.register_resolver(ResolveName::String); - tokenizer.tokenize_state.markers = &MARKERS; - State::Retry(StateName::StringBefore) -} - -/// Before string. -/// -/// ````markdown -/// > | ```js -/// ^ -/// ```` -pub fn before(tokenizer: &mut Tokenizer) -> State { - match tokenizer.current { - None => State::Ok, - Some(b'&') => { - tokenizer.attempt( - State::Next(StateName::StringBefore), - State::Next(StateName::StringBeforeData), - ); - State::Retry(StateName::CharacterReferenceStart) - } - Some(b'\\') => { - tokenizer.attempt( - State::Next(StateName::StringBefore), - State::Next(StateName::StringBeforeData), - ); - State::Retry(StateName::CharacterEscapeStart) - } - _ => State::Retry(StateName::StringBeforeData), - } -} - -/// At data. -/// -/// ````markdown -/// > | ```js -/// ^ -/// ```` -pub fn before_data(tokenizer: &mut Tokenizer) -> State { - tokenizer.attempt(State::Next(StateName::StringBefore), State::Nok); - State::Retry(StateName::DataStart) -} - -/// Resolve whitespace in string. -pub fn resolve(tokenizer: &mut Tokenizer) { - resolve_whitespace(tokenizer, false, false); -} -- cgit