use ::std::str::FromStr;
use crate::token::{AssociationToken, EndBlockToken, EndStatementToken, IdentifierToken, KeywordToken, LiteralToken, OperatorToken, ParenthesisCloseToken, ParenthesisOpenToken, StartBlockToken, Tokens, UnlexableToken};
use crate::util::numtype::f64eq;
use crate::common::error::MsgResult;
use crate::token::tokens::separators::{CommaToken, EllipsisToken, PeriodToken, NewlineToken};
pub fn association(txt: &str) -> MsgResult<Tokens> {
Ok(Tokens::Association(AssociationToken::from_str(txt)?))
}
pub fn identifier(txt: &str) -> MsgResult<Tokens> {
Ok(Tokens::Identifier(IdentifierToken::from_str(txt)?))
}
pub fn keyword(txt: &str) -> MsgResult<Tokens> {
Ok(Tokens::Keyword(KeywordToken::from_str(txt)?))
}
pub fn literal_text(txt: impl Into<String>) -> Tokens {
Tokens::Literal(LiteralToken::Text(txt.into()))
}
pub fn literal_bool(b: bool) -> Tokens {
Tokens::Literal(LiteralToken::Boolean(b))
}
pub fn literal_int(nr: i64) -> Tokens {
Tokens::Literal(LiteralToken::Int(nr))
}
pub fn literal_real(nr: impl Into<f64eq>) -> Tokens {
Tokens::Literal(LiteralToken::Real(nr.into()))
}
pub fn operator(txt: &str) -> MsgResult<Tokens> {
Ok(Tokens::Operator(OperatorToken::from_str(&txt)?))
}
pub fn parenthesis_open() -> Tokens {
Tokens::ParenthesisOpen(ParenthesisOpenToken::new())
}
pub fn parenthesis_close() -> Tokens {
Tokens::ParenthesisClose(ParenthesisCloseToken::new())
}
pub fn start_block() -> Tokens {
Tokens::StartBlock(StartBlockToken::new())
}
pub fn end_block() -> Tokens {
Tokens::EndBlock(EndBlockToken::new2())
}
pub fn comma() -> Tokens {
Tokens::Comma(CommaToken::new())
}
pub fn ellipsis() -> Tokens {
Tokens::Ellipsis(EllipsisToken::new())
}
pub fn period() -> Tokens {
Tokens::Period(PeriodToken::new())
}
pub fn newline() -> Tokens {
Tokens::Newline(NewlineToken::new())
}
pub fn unlexable(txt: impl Into<String>) -> Tokens {
Tokens::Unlexable(UnlexableToken::new(txt.into()))
}