summaryrefslogtreecommitdiff
path: root/src/library
diff options
context:
space:
mode:
authorLaurenz <laurmaedje@gmail.com>2021-05-31 12:00:13 +0200
committerLaurenz <laurmaedje@gmail.com>2021-05-31 22:33:40 +0200
commit00ac68b8451179468aa39cba0d7fbea1ee20e0a1 (patch)
tree8271cf0189dc2a99109af72ce54867fb0cf90802 /src/library
parente023bf2ac9f5796355d9485afc16781196bf212b (diff)
Fix and improve
- Set context location to resolved path during module evaluation. - Dump module diagnostics on import - Use same-file for more robustness than fs::canonicalize
Diffstat (limited to 'src/library')
-rw-r--r--src/library/lang.rs25
1 files changed, 12 insertions, 13 deletions
diff --git a/src/library/lang.rs b/src/library/lang.rs
index 9e163755..d88d23c0 100644
--- a/src/library/lang.rs
+++ b/src/library/lang.rs
@@ -16,20 +16,19 @@ use super::*;
/// - `ltr`
/// - `rtl`
pub fn lang(ctx: &mut EvalContext, args: &mut FuncArgs) -> Value {
- let iso = args.eat::<String>(ctx).map(|s| s.to_ascii_lowercase());
- let dir = args.eat_named::<Spanned<Dir>>(ctx, "dir");
-
- Value::template("lang", move |ctx| {
- if let Some(iso) = &iso {
- ctx.state.lang.dir = lang_dir(iso);
+ let iso = args.eat::<String>(ctx).map(|s| lang_dir(&s));
+ let dir = match args.eat_named::<Spanned<Dir>>(ctx, "dir") {
+ Some(dir) if dir.v.axis() == SpecAxis::Horizontal => Some(dir.v),
+ Some(dir) => {
+ ctx.diag(error!(dir.span, "must be horizontal"));
+ None
}
+ None => None,
+ };
- if let Some(dir) = dir {
- if dir.v.axis() == SpecAxis::Horizontal {
- ctx.state.lang.dir = dir.v;
- } else {
- ctx.diag(error!(dir.span, "must be horizontal"));
- }
+ Value::template("lang", move |ctx| {
+ if let Some(dir) = dir.or(iso) {
+ ctx.state.lang.dir = dir;
}
ctx.parbreak();
@@ -38,7 +37,7 @@ pub fn lang(ctx: &mut EvalContext, args: &mut FuncArgs) -> Value {
/// The default direction for the language identified by `iso`.
fn lang_dir(iso: &str) -> Dir {
- match iso {
+ match iso.to_ascii_lowercase().as_str() {
"ar" | "he" | "fa" | "ur" | "ps" | "yi" => Dir::RTL,
"en" | "fr" | "de" | _ => Dir::LTR,
}