From 6f29d97bb6f1ebd05db022a2e431bd2703bedff9 Mon Sep 17 00:00:00 2001 From: Franz Dietrich Date: Fri, 2 Jan 2026 11:53:18 +0100 Subject: [PATCH] unify comandline parsing into function --- turtle-lib-macros/src/lib.rs | 24 ++---------------------- turtle-lib/src/export.rs | 12 ++++++++++++ 2 files changed, 14 insertions(+), 22 deletions(-) diff --git a/turtle-lib-macros/src/lib.rs b/turtle-lib-macros/src/lib.rs index ce33586..98b2788 100644 --- a/turtle-lib-macros/src/lib.rs +++ b/turtle-lib-macros/src/lib.rs @@ -129,17 +129,7 @@ pub fn turtle_main(args: TokenStream, input: TokenStream) -> TokenStream { #[macroquad::main(#window_title)] async fn main() { // Parse command-line arguments for SVG export FIRST (before any graphics init) - let args: Vec = std::env::args().collect(); - let mut export_svg_path: Option = None; - - let mut i = 1; - while i < args.len() { - if args[i] == "--export-svg" && i + 1 < args.len() { - export_svg_path = Some(args[i + 1].clone()); - break; - } - i += 1; - } + let export_svg_path = turtle_lib::export::parse_svg_export_arg(); // Handle SVG export mode (execute instantly without rendering) if let Some(filename) = export_svg_path { @@ -220,17 +210,7 @@ pub fn turtle_main(args: TokenStream, input: TokenStream) -> TokenStream { #[macroquad::main(#window_title)] async fn main() { // Parse command-line arguments for SVG export FIRST (before any graphics init) - let args: Vec = std::env::args().collect(); - let mut export_svg_path: Option = None; - - let mut i = 1; - while i < args.len() { - if args[i] == "--export-svg" && i + 1 < args.len() { - export_svg_path = Some(args[i + 1].clone()); - break; - } - i += 1; - } + let export_svg_path = turtle_lib::export::parse_svg_export_arg(); // Handle SVG export mode (execute instantly without rendering) if let Some(filename) = export_svg_path { diff --git a/turtle-lib/src/export.rs b/turtle-lib/src/export.rs index 0f2a79e..98086f1 100644 --- a/turtle-lib/src/export.rs +++ b/turtle-lib/src/export.rs @@ -24,3 +24,15 @@ pub trait DrawingExporter { /// Returns an error if the export fails (e.g., file I/O error) fn export(&self, world: &TurtleWorld, filename: &str) -> Result<(), ExportError>; } + +pub fn parse_svg_export_arg() -> Option { + let args: Vec = std::env::args().collect(); + let mut i = 1; + while i < args.len() { + if args[i] == "--export-svg" && i + 1 < args.len() { + return Some(args[i + 1].clone()); + } + i += 1; + } + None +}