Allow affiliating keywords with regular keywords.
This commit is contained in:
parent
e3d38cfbe2
commit
1bcd1895c0
@ -7,3 +7,9 @@
|
|||||||
#+name: cat
|
#+name: cat
|
||||||
#+foo: dog
|
#+foo: dog
|
||||||
[[file:lorem/ipsum.png]]
|
[[file:lorem/ipsum.png]]
|
||||||
|
|
||||||
|
#+name: cat
|
||||||
|
#+foo: dog
|
||||||
|
|
||||||
|
|
||||||
|
foo
|
||||||
|
@ -87,6 +87,7 @@ fn _element<'r, 's>(
|
|||||||
map(fixed_width_area_matcher, Element::FixedWidthArea),
|
map(fixed_width_area_matcher, Element::FixedWidthArea),
|
||||||
map(horizontal_rule_matcher, Element::HorizontalRule),
|
map(horizontal_rule_matcher, Element::HorizontalRule),
|
||||||
map(latex_environment_matcher, Element::LatexEnvironment),
|
map(latex_environment_matcher, Element::LatexEnvironment),
|
||||||
|
map(keyword_matcher, Element::Keyword),
|
||||||
))(remaining)
|
))(remaining)
|
||||||
{
|
{
|
||||||
the_ok @ Ok(_) => the_ok,
|
the_ok @ Ok(_) => the_ok,
|
||||||
@ -96,12 +97,12 @@ fn _element<'r, 's>(
|
|||||||
the_ok @ Ok(_) => the_ok,
|
the_ok @ Ok(_) => the_ok,
|
||||||
Err(_) => {
|
Err(_) => {
|
||||||
affiliated_keywords.clear();
|
affiliated_keywords.clear();
|
||||||
map(keyword_matcher, Element::Keyword)(input)
|
map(affiliated_keyword_matcher, Element::Keyword)(input)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
affiliated_keywords.clear();
|
affiliated_keywords.clear();
|
||||||
map(keyword_matcher, Element::Keyword)(input)
|
map(affiliated_keyword_matcher, Element::Keyword)(input)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}?;
|
}?;
|
||||||
|
@ -60,7 +60,6 @@ pub fn affiliated_keyword<'r, 's>(
|
|||||||
input: OrgSource<'s>,
|
input: OrgSource<'s>,
|
||||||
) -> Res<OrgSource<'s>, Keyword<'s>> {
|
) -> Res<OrgSource<'s>, Keyword<'s>> {
|
||||||
start_of_line(input)?;
|
start_of_line(input)?;
|
||||||
// org-element-dual-keywords
|
|
||||||
|
|
||||||
// TODO: When key is a member of org-element-parsed-keywords, value can contain the standard set objects, excluding footnote references.
|
// TODO: When key is a member of org-element-parsed-keywords, value can contain the standard set objects, excluding footnote references.
|
||||||
let (remaining, rule) = recognize(tuple((
|
let (remaining, rule) = recognize(tuple((
|
||||||
@ -84,7 +83,7 @@ fn affiliated_key<'s>(input: OrgSource<'s>) -> Res<OrgSource<'s>, OrgSource<'s>>
|
|||||||
alt((
|
alt((
|
||||||
recognize(tuple((dual_affiliated_key, tag("["), optval, tag("]")))),
|
recognize(tuple((dual_affiliated_key, tag("["), optval, tag("]")))),
|
||||||
plain_affiliated_key,
|
plain_affiliated_key,
|
||||||
export_keyword
|
export_keyword,
|
||||||
))(input)
|
))(input)
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -148,7 +147,7 @@ fn _optval_end<'s>(
|
|||||||
unreachable!("Exceeded optval bracket depth.")
|
unreachable!("Exceeded optval bracket depth.")
|
||||||
}
|
}
|
||||||
if current_depth == 0 {
|
if current_depth == 0 {
|
||||||
let close_bracket = tag::<&str, OrgSource<'_>, CustomError<OrgSource<'_>>>("]")(input);
|
let close_bracket = tag::<_, _, CustomError<_>>("]")(input);
|
||||||
if close_bracket.is_ok() {
|
if close_bracket.is_ok() {
|
||||||
return close_bracket;
|
return close_bracket;
|
||||||
}
|
}
|
||||||
@ -158,5 +157,8 @@ fn _optval_end<'s>(
|
|||||||
|
|
||||||
#[cfg_attr(feature = "tracing", tracing::instrument(ret, level = "debug"))]
|
#[cfg_attr(feature = "tracing", tracing::instrument(ret, level = "debug"))]
|
||||||
fn export_keyword<'s>(input: OrgSource<'s>) -> Res<OrgSource<'s>, OrgSource<'s>> {
|
fn export_keyword<'s>(input: OrgSource<'s>) -> Res<OrgSource<'s>, OrgSource<'s>> {
|
||||||
recognize(tuple((tag_no_case("attr_"), take_while1(|c: char| c.is_alphanumeric() || "-_".contains(c)))))(input)
|
recognize(tuple((
|
||||||
|
tag_no_case("attr_"),
|
||||||
|
take_while1(|c: char| c.is_alphanumeric() || "-_".contains(c)),
|
||||||
|
)))(input)
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user