From aac7fdc4c391b318efbdee17381ac83783b2fbbb Mon Sep 17 00:00:00 2001 From: Norbert Preining Date: Mon, 11 Oct 2021 03:02:08 +0000 Subject: CTAN sync 202110110302 --- support/texlab/src/citation/ris.rs | 24 ++++++++++++++---------- 1 file changed, 14 insertions(+), 10 deletions(-) (limited to 'support/texlab/src/citation/ris.rs') diff --git a/support/texlab/src/citation/ris.rs b/support/texlab/src/citation/ris.rs index 5b666160a3..041fb654a0 100644 --- a/support/texlab/src/citation/ris.rs +++ b/support/texlab/src/citation/ris.rs @@ -1,13 +1,11 @@ // Ported from: https://github.com/michel-kraemer/citeproc-java/tree/master/citeproc-java/templates // Michel Kraemer // Apache License 2.0 -use citeproc_io::{Date, DateOrRange, Name, NumericValue, Reference}; +use citeproc_io::{unicode::is_latin_cyrillic, Date, DateOrRange, Name, NumberLike, Reference}; use csl::*; use fnv::FnvHashMap; use serde::{Deserialize, Serialize}; -use super::name; - #[derive(Debug, PartialEq, Eq, Clone, Copy, Serialize, Deserialize)] #[serde(rename_all = "UPPERCASE")] pub enum RisType { @@ -303,7 +301,7 @@ impl Into for RisReference { let csl_type = self.ty.expect("RIS type is missing").csl(); let mut date: FnvHashMap = FnvHashMap::default(); let mut name: FnvHashMap> = FnvHashMap::default(); - let mut number: FnvHashMap = FnvHashMap::default(); + let mut number: FnvHashMap = FnvHashMap::default(); let mut ordinary: FnvHashMap = FnvHashMap::default(); if let Some(access_date) = self.access_date { @@ -389,7 +387,7 @@ impl Into for RisReference { (Some(start_page), Some(end_page)) => { number.insert( NumberVariable::Page, - NumericValue::Str(format!("{}-{}", start_page, end_page)), + NumberLike::Str(format!("{}-{}", start_page, end_page).into()), ); } (Some(page), None) | (None, Some(page)) => { @@ -434,24 +432,30 @@ impl Into for RisReference { } } -fn parse_number(value: String) -> NumericValue { +fn parse_number(value: String) -> NumberLike { match value.parse() { - Ok(value) => NumericValue::num(value), - Err(_) => NumericValue::Str(value), + Ok(value) => NumberLike::Num(value), + Err(_) => NumberLike::Str(value.into()), } } fn parse_authors(authors: Vec) -> Vec { authors .into_iter() - .flat_map(|author| name::parse(&author)) + .map(|author| Name::Literal { + is_latin_cyrillic: is_latin_cyrillic(&author), + literal: author.into(), + }) .collect() } fn parse_date_or_range(value: String) -> DateOrRange { parse_date(&value) .map(DateOrRange::Single) - .unwrap_or_else(|| DateOrRange::Literal(value)) + .unwrap_or_else(|| DateOrRange::Literal { + literal: value.into(), + circa: false, + }) } fn parse_date(value: &str) -> Option { -- cgit v1.2.3