Dimensions: a file whose dimensions carry options this version doesn't know still opens; commands still refuse unknown options

This commit is contained in:
bflatastic
2026-10-16 01:36:24 +07:00
parent 8aea665c4e
commit 7217dcd121
16 changed files with 63 additions and 10 deletions
+1 -3
View File
@@ -46,9 +46,7 @@ fn error(s: impl ToString) -> EngineError {
fn options(s: &Session, p: &Value) -> Result<DimensionOptions> {
let default = s.tool_options_of("dimension");
let value = p.get("options").cloned().unwrap_or_else(|| default.get("style").cloned().unwrap_or(json!({})));
let o: DimensionOptions = serde_json::from_value(value).map_err(error)?;
o.validate().map_err(error)?;
Ok(o)
DimensionOptions::from_params(value).map_err(error)
}
fn point(p: &Value, key: &str) -> Result<Point> {
+1 -2
View File
@@ -455,8 +455,7 @@ impl Session {
}
if tool.unwrap_or(self.tool_id()) == "dimension" {
if let Some(style) = values.get("style") {
let options: vectorcraft_doc::dimension::DimensionOptions = serde_json::from_value(style.clone()).map_err(|e| e.to_string())?;
options.validate()?;
vectorcraft_doc::dimension::DimensionOptions::from_params(style.clone())?;
}
if let Some(mode) = values.get("mode")
&& !mode.as_str().is_some_and(|m| ["linear", "angular", "radial", "radius", "diameter"].contains(&m))