diff --git a/flake.lock b/flake.lock index aae8aa6..4b129f7 100644 --- a/flake.lock +++ b/flake.lock @@ -2,12 +2,12 @@ "nodes": { "nixpkgs": { "locked": { - "lastModified": 1721379653, - "narHash": "sha256-8MUgifkJ7lkZs3u99UDZMB4kbOxvMEXQZ31FO3SopZ0=", - "rev": "1d9c2c9b3e71b9ee663d11c5d298727dace8d374", - "revCount": 655136, + "lastModified": 1722813957, + "narHash": "sha256-IAoYyYnED7P8zrBFMnmp7ydaJfwTnwcnqxUElC1I26Y=", + "rev": "cb9a96f23c491c081b38eab96d22fa958043c9fa", + "revCount": 662544, "type": "tarball", - "url": "https://api.flakehub.com/f/pinned/NixOS/nixpkgs/0.1.655136%2Brev-1d9c2c9b3e71b9ee663d11c5d298727dace8d374/0190cd4f-c0eb-72cb-834b-ac854aa282dc/source.tar.gz" + "url": "https://api.flakehub.com/f/pinned/NixOS/nixpkgs/0.1.662544%2Brev-cb9a96f23c491c081b38eab96d22fa958043c9fa/0191261c-f106-7d9e-a0c0-f57924d24f7d/source.tar.gz" }, "original": { "type": "tarball", @@ -27,11 +27,11 @@ ] }, "locked": { - "lastModified": 1721355572, - "narHash": "sha256-I4TQ2guV9jTmZsXeWt5HMojcaqNZHII4zu0xIKZEovM=", + "lastModified": 1723170066, + "narHash": "sha256-SFkQfOA+8AIYJsPlQtxNP+z5jRLfz91z/aOrV94pPmw=", "owner": "oxalica", "repo": "rust-overlay", - "rev": "d5bc7b1b21cf937fb8ff108ae006f6776bdb163d", + "rev": "fecfe4d7c96fea2982c7907997b387a6b52c1093", "type": "github" }, "original": { diff --git a/src/app/formats.rs b/src/app/formats.rs index 1e8b43f..09949c4 100644 --- a/src/app/formats.rs +++ b/src/app/formats.rs @@ -121,6 +121,9 @@ fn read_mp3>(path: P) -> Result { } mod ape_ext { + use regex::Regex; + use std::sync::LazyLock; + pub fn read_string(item: &ape::Item) -> Option { match item.value { ape::ItemValue::Text(ref s) => Some(s.clone()), @@ -139,11 +142,12 @@ mod ape_ext { } } + static X_OF_Y_REGEX: LazyLock = LazyLock::new(|| Regex::new(r#"^\d+"#).unwrap()); + pub fn read_x_of_y(item: &ape::Item) -> Option { match item.value { ape::ItemValue::Text(ref s) => { - let format = regex::Regex::new(r#"^\d+"#).unwrap(); - if let Some(m) = format.find(s) { + if let Some(m) = X_OF_Y_REGEX.find(s) { s[m.start()..m.end()].parse().ok() } else { None