feat: splitting
This commit is contained in:
@@ -71,7 +71,7 @@ use serde::Serialize;
|
||||
use crate::assessment::AssessmentFile;
|
||||
use crate::catalog::Catalog;
|
||||
use crate::classical::Analysis;
|
||||
use crate::course::{CourseFile, ReadingRole, Reference};
|
||||
use crate::course::{CourseFile, ReadingRole};
|
||||
use crate::irt::Fit;
|
||||
use crate::item::Citation;
|
||||
use crate::responses::{Response, ResponseSet};
|
||||
@@ -797,9 +797,9 @@ fn item_readings(course: &CourseFile, citations: &[Citation]) -> Vec<ItemReading
|
||||
|
||||
let (label, title, url) = match reference {
|
||||
Some((key, reference)) => (
|
||||
reference.label.as_deref().unwrap_or(key).to_string(),
|
||||
reference.label_or(key).to_string(),
|
||||
Some(reference.title.clone()),
|
||||
resolve_citation_url(citation, reference),
|
||||
citation.href(reference),
|
||||
),
|
||||
None => (citation.display(), None, citation.url.clone()),
|
||||
};
|
||||
@@ -821,20 +821,6 @@ fn item_readings(course: &CourseFile, citations: &[Citation]) -> Vec<ItemReading
|
||||
out
|
||||
}
|
||||
|
||||
/// A citation's own URL, else the reference's `base_url` joined with its `path`.
|
||||
fn resolve_citation_url(citation: &Citation, reference: &Reference) -> Option<String> {
|
||||
if let Some(url) = &citation.url {
|
||||
return Some(url.clone());
|
||||
}
|
||||
let path = citation.path.as_deref()?;
|
||||
let base = reference.base_url.as_deref()?;
|
||||
Some(match (base.ends_with('/'), path.starts_with('/')) {
|
||||
(true, true) => format!("{base}{}", &path[1..]),
|
||||
(false, false) => format!("{base}/{path}"),
|
||||
_ => format!("{base}{path}"),
|
||||
})
|
||||
}
|
||||
|
||||
/// Ranks the lectures behind a student's missed questions.
|
||||
///
|
||||
/// A lecture earns its place by how many distinct objectives went wrong in it,
|
||||
|
||||
Reference in New Issue
Block a user