diff --git a/src/parser/object_parser.rs b/src/parser/object_parser.rs index be6e45b..b119d09 100644 --- a/src/parser/object_parser.rs +++ b/src/parser/object_parser.rs @@ -189,3 +189,36 @@ pub fn regular_link_description_object_set<'r, 's>( parser_with_context!(minimal_set_object)(context), ))(input) } + +#[cfg_attr(feature = "tracing", tracing::instrument(ret, level = "debug"))] +pub fn table_cell_set_object<'r, 's>( + context: Context<'r, 's>, + input: OrgSource<'s>, +) -> Res, Object<'s>> { + alt(( + map(parser_with_context!(citation)(context), Object::Citation), + map( + parser_with_context!(export_snippet)(context), + Object::ExportSnippet, + ), + map( + parser_with_context!(footnote_reference)(context), + Object::FootnoteReference, + ), + map(parser_with_context!(radio_link)(context), Object::RadioLink), + map( + parser_with_context!(regular_link)(context), + Object::RegularLink, + ), + map(parser_with_context!(plain_link)(context), Object::PlainLink), + map(parser_with_context!(angle_link)(context), Object::AngleLink), + map(parser_with_context!(org_macro)(context), Object::OrgMacro), + map( + parser_with_context!(radio_target)(context), + Object::RadioTarget, + ), + map(parser_with_context!(target)(context), Object::Target), + map(parser_with_context!(timestamp)(context), Object::Timestamp), + parser_with_context!(minimal_set_object)(context), + ))(input) +} diff --git a/src/parser/table.rs b/src/parser/table.rs index ff515a2..eb45ea8 100644 --- a/src/parser/table.rs +++ b/src/parser/table.rs @@ -12,14 +12,13 @@ use nom::multi::many1; use nom::multi::many_till; use nom::sequence::tuple; +use super::object_parser::table_cell_set_object; use super::org_source::OrgSource; use super::Context; use crate::error::Res; use crate::parser::exiting::ExitClass; use crate::parser::greater_element::TableRow; use crate::parser::lesser_element::TableCell; -use crate::parser::object::Object; -use crate::parser::object_parser::minimal_set_object; use crate::parser::parser_context::ContextElement; use crate::parser::parser_context::ExitMatcherNode; use crate::parser::parser_with_context::parser_with_context; @@ -162,14 +161,3 @@ fn org_mode_table_cell_end<'r, 's>( ) -> Res, OrgSource<'s>> { recognize(tuple((space0, alt((tag("|"), peek(line_ending))))))(input) } - -#[cfg_attr(feature = "tracing", tracing::instrument(ret, level = "debug"))] -pub fn table_cell_set_object<'r, 's>( - context: Context<'r, 's>, - input: OrgSource<'s>, -) -> Res, Object<'s>> { - not(|i| context.check_exit_matcher(i))(input)?; - - parser_with_context!(minimal_set_object)(context)(input) - // TODO: add citations, export snippets, footnote references, links, macros, radio targets, targets, and timestamps. -}