mirror of
https://github.com/storytold/vectorcraft.git
synced 2026-10-29 12:17:14 -06:00
Dimensions: a file whose dimensions carry options this version doesn't know still opens; commands still refuse unknown options
This commit is contained in:
@@ -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> {
|
||||
|
||||
@@ -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))
|
||||
|
||||
Reference in New Issue
Block a user