Skip to content

Commit

Permalink
fix short title in csl-json
Browse files Browse the repository at this point in the history
  • Loading branch information
PgBiel committed Oct 1, 2024
1 parent d9c7a1e commit 3c2080a
Show file tree
Hide file tree
Showing 2 changed files with 35 additions and 9 deletions.
41 changes: 32 additions & 9 deletions src/csl/taxonomy.rs
Original file line number Diff line number Diff line change
Expand Up @@ -679,21 +679,44 @@ impl EntryLike for Entry {
}
}

#[cfg(feature = "csl-json")]
fn resolve_csl_json_variable(
item: &citationberg::json::Item,
variable: StandardVariable,
) -> Option<Cow<'_, ChunkedString>> {
match item.0.get(&variable.to_string())? {
csl_json::Value::String(s) => {
Some(Cow::Owned(StringChunk::normal(s.clone()).into()))
}
csl_json::Value::Number(n) => {
Some(Cow::Owned(StringChunk::normal(n.to_string()).into()))
}
_ => None,
}
}

#[cfg(feature = "csl-json")]
impl EntryLike for citationberg::json::Item {
fn resolve_standard_variable(
&self,
_: LongShortForm,
form: LongShortForm,
variable: StandardVariable,
) -> Option<Cow<'_, ChunkedString>> {
match self.0.get(&variable.to_string())? {
csl_json::Value::String(s) => {
Some(Cow::Owned(StringChunk::normal(s.clone()).into()))
}
csl_json::Value::Number(n) => {
Some(Cow::Owned(StringChunk::normal(n.to_string()).into()))
}
_ => None,
match variable {
StandardVariable::Title => match form {
LongShortForm::Short => {
// Per citeproc tests, a 'title-short' without 'title' is
// valid and should be used when the short form is
// selected.
resolve_csl_json_variable(self, StandardVariable::TitleShort).or_else(
|| resolve_csl_json_variable(self, StandardVariable::Title),
)
}
LongShortForm::Long => {
resolve_csl_json_variable(self, StandardVariable::Title)
}
},
_ => resolve_csl_json_variable(self, variable),
}
}

Expand Down
3 changes: 3 additions & 0 deletions tests/citeproc-pass.txt
Original file line number Diff line number Diff line change
Expand Up @@ -128,8 +128,11 @@ disambiguate_YearSuffixMacroSameYearExplicit
disambiguate_YearSuffixMacroSameYearImplicit
disambiguate_YearSuffixWithEtAlSubsequent
flipflop_OrphanQuote
form_TitleShort
form_TitleShortNoLong
form_TitleTestNoLongFalse
fullstyles_APA
group_ShortOutputOnly
group_SuppressValueWithEmptySubgroup
integration_CitationSort
integration_CitationSortTwice
Expand Down

0 comments on commit 3c2080a

Please sign in to comment.