From 9a5aaf2a8d6767ce5f2fda41d0e545ac3590f00a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Michael=20F=C3=A4rber?= <01mf02@gmail.com> Date: Tue, 23 Jul 2024 21:32:24 +0200 Subject: [PATCH] Make `Module` generic over type of file paths. --- jaq-syn/src/parse.rs | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/jaq-syn/src/parse.rs b/jaq-syn/src/parse.rs index d2ab9adee..fd79f7d00 100644 --- a/jaq-syn/src/parse.rs +++ b/jaq-syn/src/parse.rs @@ -677,13 +677,21 @@ impl<'s, 't> Parser<'s, 't> { /// def iter: .[]; /// ~~~ #[derive(Debug, Default)] -pub struct Module { +pub struct Module { #[allow(dead_code)] meta: Option>, - pub(crate) mods: Vec<(S, Option)>, + pub(crate) mods: Vec<(P, Option)>, pub(crate) body: B, } +impl Module { + pub(crate) fn map_paths(self, mut f: impl FnMut(P) -> P2) -> Module { + let Module { meta, mods, body } = self; + let mods = mods.into_iter().map(|(path, as_)| (f(path), as_)).collect(); + Module { meta, mods, body } + } +} + /// jq definition, consisting of a name, optional arguments, and a body. /// /// Examples: