use crate::ast::Node;
use crate::tokens::{HASH, LBRACKET};
use winnow::Result as PResult;
use winnow::prelude::*;
use winnow::token::take_till;
pub fn parse_text<T>(input: &mut &str) -> PResult<Node<T>> {
let text = take_till(1.., |c| c == LBRACKET || c == '`' || c == HASH).parse_next(input)?;
Ok(Node::Text(text.to_string()))
}
#[test]
fn test_parse_text() {
let mut input = "これはテストです。[リンク]";
let result: Node<()> = parse_text(&mut input).unwrap();
assert_eq!(result, Node::Text("これはテストです。".to_string()));
assert_eq!(input, "[リンク]");
}
#[test]
fn test_parse_text_with_bare_dollar() {
let mut input = "price is $100";
let result: Node<()> = parse_text(&mut input).unwrap();
assert_eq!(result, Node::Text("price is $100".to_string()));
assert_eq!(input, "");
}