From 61108b8af6287d951631af1cf755de9a7ddc5498 Mon Sep 17 00:00:00 2001 From: Charlotte Thomas Date: Mon, 9 Mar 2026 11:25:20 +0100 Subject: [PATCH 1/9] version: bump to v4.0.4-alpha --- Cargo.toml | 2 +- src/main.rs | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Cargo.toml b/Cargo.toml index 74f6dc8..f1828ac 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "mini-calc" -version = "4.0.3" +version = "4.0.4-alpha" license = "GPL-3.0-or-later" description = "A Fully-Featured Configurable (mini) Rust Calculator" homepage = "https://calc.charlotte-thomas.me" diff --git a/src/main.rs b/src/main.rs index 2dddca3..9e8da1c 100644 --- a/src/main.rs +++ b/src/main.rs @@ -31,7 +31,7 @@ mod parsing; mod utils; thread_local! {static FLOAT_MODE: RefCell = const {RefCell::new(FloatMode::Exact)}} -static VERSION: &str = "v4.0.3"; +static VERSION: &str = "v4.0.4-alpha"; /// # ShowConfig /// Displays to the user the current content of the configuration file From 0f7969619e4b6dde32a8ed4bc4ef400a1ec15d47 Mon Sep 17 00:00:00 2001 From: Charlotte Thomas Date: Mon, 9 Mar 2026 11:31:58 +0100 Subject: [PATCH 2/9] restructuring: init --- Cargo.lock | 145 ++--- Cargo.toml | 44 +- crates/calc-lib/Cargo.toml | 6 + crates/calc-lib/src/lib.rs | 14 + crates/mini-calc/Cargo.lock | 559 ++++++++++++++++++ crates/mini-calc/Cargo.toml | 41 ++ .../mini-calc/dist-workspace.toml | 0 flake.lock => crates/mini-calc/flake.lock | 0 flake.nix => crates/mini-calc/flake.nix | 0 .../mini-calc/src}/configuration/loader.rs | 0 .../mini-calc/src}/configuration/mod.rs | 0 .../mini-calc/src}/exact_math/float_mode.rs | 0 .../mini-calc/src}/exact_math/mod.rs | 0 .../mini-calc/src}/exact_math/rationals.rs | 0 .../src}/exact_math/scientific_mode.rs | 0 .../mini-calc/src}/exact_math/symbolic.rs | 0 .../mini-calc/src}/functions/add.rs | 0 .../mini-calc/src}/functions/divide.rs | 0 .../mini-calc/src}/functions/expo.rs | 0 .../mini-calc/src}/functions/function.rs | 0 .../mini-calc/src}/functions/minus.rs | 0 .../mini-calc/src}/functions/mod.rs | 0 .../mini-calc/src}/functions/mult.rs | 0 .../src}/interpreting/interpreter.rs | 0 .../mini-calc/src}/interpreting/mod.rs | 0 .../mini-calc/src}/interpreting/stdlib.rs | 0 {src => crates/mini-calc/src}/lexing/lexer.rs | 0 {src => crates/mini-calc/src}/lexing/mod.rs | 0 {src => crates/mini-calc/src}/lexing/token.rs | 0 {src => crates/mini-calc/src}/main.rs | 0 {src => crates/mini-calc/src}/parsing/ast.rs | 0 {src => crates/mini-calc/src}/parsing/mod.rs | 0 .../src}/parsing/parselets/infix_parselet.rs | 0 .../mini-calc/src}/parsing/parselets/mod.rs | 0 .../src}/parsing/parselets/prefix_parselet.rs | 0 .../mini-calc/src}/parsing/parser.rs | 0 .../mini-calc/src}/utils/integer_utils.rs | 0 .../mini-calc/src}/utils/matrix_utils.rs | 0 {src => crates/mini-calc/src}/utils/mod.rs | 0 .../mini-calc/src}/utils/plot_utils.rs | 0 40 files changed, 697 insertions(+), 112 deletions(-) create mode 100644 crates/calc-lib/Cargo.toml create mode 100644 crates/calc-lib/src/lib.rs create mode 100644 crates/mini-calc/Cargo.lock create mode 100644 crates/mini-calc/Cargo.toml rename dist-workspace.toml => crates/mini-calc/dist-workspace.toml (100%) rename flake.lock => crates/mini-calc/flake.lock (100%) rename flake.nix => crates/mini-calc/flake.nix (100%) rename {src => crates/mini-calc/src}/configuration/loader.rs (100%) rename {src => crates/mini-calc/src}/configuration/mod.rs (100%) rename {src => crates/mini-calc/src}/exact_math/float_mode.rs (100%) rename {src => crates/mini-calc/src}/exact_math/mod.rs (100%) rename {src => crates/mini-calc/src}/exact_math/rationals.rs (100%) rename {src => crates/mini-calc/src}/exact_math/scientific_mode.rs (100%) rename {src => crates/mini-calc/src}/exact_math/symbolic.rs (100%) rename {src => crates/mini-calc/src}/functions/add.rs (100%) rename {src => crates/mini-calc/src}/functions/divide.rs (100%) rename {src => crates/mini-calc/src}/functions/expo.rs (100%) rename {src => crates/mini-calc/src}/functions/function.rs (100%) rename {src => crates/mini-calc/src}/functions/minus.rs (100%) rename {src => crates/mini-calc/src}/functions/mod.rs (100%) rename {src => crates/mini-calc/src}/functions/mult.rs (100%) rename {src => crates/mini-calc/src}/interpreting/interpreter.rs (100%) rename {src => crates/mini-calc/src}/interpreting/mod.rs (100%) rename {src => crates/mini-calc/src}/interpreting/stdlib.rs (100%) rename {src => crates/mini-calc/src}/lexing/lexer.rs (100%) rename {src => crates/mini-calc/src}/lexing/mod.rs (100%) rename {src => crates/mini-calc/src}/lexing/token.rs (100%) rename {src => crates/mini-calc/src}/main.rs (100%) rename {src => crates/mini-calc/src}/parsing/ast.rs (100%) rename {src => crates/mini-calc/src}/parsing/mod.rs (100%) rename {src => crates/mini-calc/src}/parsing/parselets/infix_parselet.rs (100%) rename {src => crates/mini-calc/src}/parsing/parselets/mod.rs (100%) rename {src => crates/mini-calc/src}/parsing/parselets/prefix_parselet.rs (100%) rename {src => crates/mini-calc/src}/parsing/parser.rs (100%) rename {src => crates/mini-calc/src}/utils/integer_utils.rs (100%) rename {src => crates/mini-calc/src}/utils/matrix_utils.rs (100%) rename {src => crates/mini-calc/src}/utils/mod.rs (100%) rename {src => crates/mini-calc/src}/utils/plot_utils.rs (100%) diff --git a/Cargo.lock b/Cargo.lock index 2f754bb..3a85e72 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -13,9 +13,9 @@ dependencies = [ [[package]] name = "arrayref" -version = "0.3.7" +version = "0.3.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6b4930d2cb77ce62f89ee5d5289b4ac049559b1c45539271f5ed4fdc7db34545" +checksum = "76a2e8124351fda1ef8aaaa3bbd7ebbcb486bbcd4225aca0aa0d84bb2db8fecb" [[package]] name = "arrayvec" @@ -48,9 +48,9 @@ checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" [[package]] name = "bitflags" -version = "2.4.2" +version = "2.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ed570934406eb16438a4e976b1b4500774099c13b8cb96eec99f620f05090ddf" +checksum = "843867be96c8daad0d758b57df9392b6d8d271134fce549de6ce169ff98a92af" [[package]] name = "blake2b_simd" @@ -69,11 +69,15 @@ version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" +[[package]] +name = "calc-lib" +version = "0.1.0" + [[package]] name = "cfg-if" -version = "1.0.0" +version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" +checksum = "9330f8b2ff13f34540b44e946ef35111825727b38d33286ef986142615121801" [[package]] name = "confy" @@ -95,9 +99,9 @@ checksum = "245097e9a4535ee1e3e3931fcfcd55a796a44c643e8596ff6566d68f09b87bbc" [[package]] name = "crossbeam-utils" -version = "0.8.19" +version = "0.8.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "248e3bacc7dc6baa3b21e405ee045c3047101a49145e7e9eca583ab4c2ca5345" +checksum = "d0a5c400df2834b80a4c3327b3aad3a4c4cd4de0629063962b03235697506a28" [[package]] name = "directories" @@ -135,7 +139,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1b1d1d91c932ef41c0f2663aa8b0ca0342d444d842c06914aa0a7e352d0bada6" dependencies = [ "libc", - "redox_users 0.4.4", + "redox_users 0.4.6", "winapi", ] @@ -158,13 +162,13 @@ dependencies = [ [[package]] name = "getrandom" -version = "0.2.12" +version = "0.2.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "190092ea657667030ac6a35e305e62fc4dd69fd98ac98631e5d3a2b1575a12b5" +checksum = "ff2abc00be7fca6ebc474524697ae276ad847ad0a6b3faa4bcb027e9a4614ad0" dependencies = [ "cfg-if", "libc", - "wasi 0.11.0+wasi-snapshot-preview1", + "wasi 0.11.1+wasi-snapshot-preview1", ] [[package]] @@ -187,19 +191,17 @@ dependencies = [ [[package]] name = "libc" -version = "0.2.153" +version = "0.2.183" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c198f91728a82281a64e1f4f9eeb25d82cb32a5de251c6bd1b5154d63a8e7bd" +checksum = "b5b646652bf6661599e1da8901b3b9522896f01e736bad5f723fe7a3a27f899d" [[package]] name = "libredox" -version = "0.0.1" +version = "0.1.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "85c833ca1e66078851dba29046874e38f08b2c883700aa29a03ddd3b23814ee8" +checksum = "1744e39d1d6a9948f4f388969627434e31128196de472883b39f148769bfe30a" dependencies = [ - "bitflags 2.4.2", "libc", - "redox_syscall 0.4.1", ] [[package]] @@ -215,13 +217,13 @@ dependencies = [ [[package]] name = "memchr" -version = "2.7.1" +version = "2.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "523dc4f511e55ab87b694dc30d0f820d60906ef06413f93d4d7a1385599cc149" +checksum = "f8ca58f447f06ed17d5fc4043ce1b10dd205e060fb3ce5b979b8ed8e59ff3f79" [[package]] name = "mini-calc" -version = "4.0.3" +version = "4.0.4-alpha" dependencies = [ "ansi_term", "atty", @@ -243,7 +245,7 @@ version = "0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2c624fa1b7aab6bd2aff6e9b18565cc0363b6d45cbcd7465c9ed5e3740ebf097" dependencies = [ - "bitflags 2.4.2", + "bitflags 2.11.0", "libc", "nix", "smallstr", @@ -276,18 +278,18 @@ dependencies = [ [[package]] name = "phf" -version = "0.11.2" +version = "0.11.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ade2d8b8f33c7333b51bcf0428d37e217e9f32192ae4772156f65063b8ce03dc" +checksum = "1fd6780a80ae0c52cc120a26a1a42c1ae51b247a253e4e06113d23d2c2edd078" dependencies = [ "phf_shared", ] [[package]] name = "phf_codegen" -version = "0.11.2" +version = "0.11.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e8d39688d359e6b34654d328e262234662d16cc0f60ec8dcbe5e718709342a5a" +checksum = "aef8048c789fa5e851558d709946d6d79a8ff88c0440c587967f8e94bfb1216a" dependencies = [ "phf_generator", "phf_shared", @@ -295,9 +297,9 @@ dependencies = [ [[package]] name = "phf_generator" -version = "0.11.2" +version = "0.11.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "48e4cc64c2ad9ebe670cb8fd69dd50ae301650392e81c05f9bfcb2d5bdbc24b0" +checksum = "3c80231409c20246a13fddb31776fb942c38553c51e871f8cbd687a4cfb5843d" dependencies = [ "phf_shared", "rand", @@ -305,27 +307,27 @@ dependencies = [ [[package]] name = "phf_shared" -version = "0.11.2" +version = "0.11.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "90fcb95eef784c2ac79119d1dd819e162b5da872ce6f3c3abe1e8ca1c082f72b" +checksum = "67eabc2ef2a60eb7faa00097bd1ffdb5bd28e62bf39990626a582201b7a754e5" dependencies = [ "siphasher", ] [[package]] name = "proc-macro2" -version = "1.0.78" +version = "1.0.106" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e2422ad645d89c99f8f3e6b88a9fdeca7fabeac836b1002371c4367c8f984aae" +checksum = "8fd00f0bb2e90d81d1044c2b32617f68fcb9fa3bb7640c23e9c748e53fb30934" dependencies = [ "unicode-ident", ] [[package]] name = "quote" -version = "1.0.35" +version = "1.0.45" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "291ec9ab5efd934aaf503a6466c5d5251535d108ee747472c3977cc5acc868ef" +checksum = "41f2619966050689382d2b44f664f4bc593e129785a36d6ee376ddf37259b924" dependencies = [ "proc-macro2", ] @@ -351,15 +353,6 @@ version = "0.1.57" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "41cc0f7e4d5d4544e8861606a285bb08d3e70712ccc7d2b84d7c0ccfaf4b05ce" -[[package]] -name = "redox_syscall" -version = "0.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4722d768eff46b75989dd134e5c353f0d6296e5aaa3132e776cbdb56be7731aa" -dependencies = [ - "bitflags 1.3.2", -] - [[package]] name = "redox_users" version = "0.3.5" @@ -367,17 +360,17 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "de0737333e7a9502c789a36d7c7fa6092a49895d4faa31ca5df163857ded2e9d" dependencies = [ "getrandom 0.1.16", - "redox_syscall 0.1.57", + "redox_syscall", "rust-argon2", ] [[package]] name = "redox_users" -version = "0.4.4" +version = "0.4.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a18479200779601e498ada4e8c1e1f50e3ee19deb0259c25825a98b5603b2cb4" +checksum = "ba009ff324d1fc1b900bd1fdb31564febe58a8ccc8a6fdbb93b543d33b13ca43" dependencies = [ - "getrandom 0.2.12", + "getrandom 0.2.17", "libredox", "thiserror", ] @@ -396,18 +389,28 @@ dependencies = [ [[package]] name = "serde" -version = "1.0.196" +version = "1.0.228" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9a8e94ea7f378bd32cbbd37198a4a91436180c5bb472411e48b5ec2e2124ae9e" +dependencies = [ + "serde_core", + "serde_derive", +] + +[[package]] +name = "serde_core" +version = "1.0.228" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "870026e60fa08c69f064aa766c10f10b1d62db9ccd4d0abb206472bee0ce3b32" +checksum = "41d385c7d4ca58e59fc732af25c3983b67ac852c1a25000afe1175de458b67ad" dependencies = [ "serde_derive", ] [[package]] name = "serde_derive" -version = "1.0.196" +version = "1.0.228" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "33c85360c95e7d137454dc81d9a4ed2b8efd8fbe19cee57357b32b9771fccb67" +checksum = "d540f220d3187173da220f885ab66608367b6574e925011a9353e4badda91d79" dependencies = [ "proc-macro2", "quote", @@ -416,9 +419,9 @@ dependencies = [ [[package]] name = "siphasher" -version = "0.3.11" +version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38b58827f4464d87d377d175e90bf58eb00fd8716ff0a62f80356b5e61555d0d" +checksum = "b2aa850e253778c88a04c3d7323b043aeda9d3e30d5971937c1855769763678e" [[package]] name = "smallstr" @@ -431,15 +434,15 @@ dependencies = [ [[package]] name = "smallvec" -version = "1.13.1" +version = "1.15.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e6ecd384b10a64542d77071bd64bd7b231f4ed5940fba55e98c3de13824cf3d7" +checksum = "67b1b7a3b5fe4f1376887184045fcf45c69e92af734b7aaddc05fb777b6fbd03" [[package]] name = "syn" -version = "2.0.48" +version = "2.0.117" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0f3531638e407dfc0814761abb7c00a5b54992b849452a0646b7f65c9f770f3f" +checksum = "e665b8803e7b1d2a727f4023456bbbbe74da67099c585258af0ad9c5013b9b99" dependencies = [ "proc-macro2", "quote", @@ -461,18 +464,18 @@ dependencies = [ [[package]] name = "thiserror" -version = "1.0.56" +version = "1.0.69" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d54378c645627613241d077a3a79db965db602882668f9136ac42af9ecb730ad" +checksum = "b6aaf5339b578ea85b50e080feb250a3e8ae8cfcdff9a461c9ec2904bc923f52" dependencies = [ "thiserror-impl", ] [[package]] name = "thiserror-impl" -version = "1.0.56" +version = "1.0.69" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fa0faa943b50f3db30a20aa7e265dbc66076993efed8463e8de414e5d06d3471" +checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1" dependencies = [ "proc-macro2", "quote", @@ -481,9 +484,9 @@ dependencies = [ [[package]] name = "tinyvec" -version = "1.6.0" +version = "1.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87cc5ceb3875bb20c2890005a4e226a4651264a5c75edb2421b52861a0a0cb50" +checksum = "bfa5fdc3bce6191a1dbc8c02d5c8bffcf557bafa17c124c5264a458f1b0613fa" dependencies = [ "tinyvec_macros", ] @@ -505,24 +508,24 @@ dependencies = [ [[package]] name = "unicode-ident" -version = "1.0.12" +version = "1.0.24" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b" +checksum = "e6e4313cd5fcd3dad5cafa179702e2b244f760991f45397d14d4ebf38247da75" [[package]] name = "unicode-normalization" -version = "0.1.22" +version = "0.1.25" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c5713f0fc4b5db668a2ac63cdb7bb4469d8c9fed047b1d0292cc7b0ce2ba921" +checksum = "5fd4f6878c9cb28d874b009da9e8d183b5abc80117c40bbd187a1fde336be6e8" dependencies = [ "tinyvec", ] [[package]] name = "unicode-width" -version = "0.1.11" +version = "0.1.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e51733f11c9c4f72aa0c160008246859e340b00807569a0da0e7a1079b27ba85" +checksum = "7dd6e30e90baa6f72411720665d41d89b9a3d039dc45b8faea1ddd07f617f6af" [[package]] name = "wasi" @@ -532,9 +535,9 @@ checksum = "cccddf32554fecc6acb585f82a32a72e28b48f8c4c1883ddfeeeaa96f7d8e519" [[package]] name = "wasi" -version = "0.11.0+wasi-snapshot-preview1" +version = "0.11.1+wasi-snapshot-preview1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" +checksum = "ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b" [[package]] name = "winapi" diff --git a/Cargo.toml b/Cargo.toml index f1828ac..bdb96d6 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,41 +1,3 @@ -[package] -name = "mini-calc" -version = "4.0.4-alpha" -license = "GPL-3.0-or-later" -description = "A Fully-Featured Configurable (mini) Rust Calculator" -homepage = "https://calc.charlotte-thomas.me" -repository = "https://github.com/vanilla-extract/calc" -readme = "README.md" -edition = "2021" -exclude = [ - "docs/*", - "manual/*", - "manual.pdf" -] - - -[dependencies] -ansi_term = "0.12.1" -linefeed = "0.6" -confy = "0.5.1" -gnuplot = "0.0.39" -serde = { version = "1.0.192", features = ["derive"] } -atty = "0.2" - - - -[package.metadata.deb] -name = "mini-calc" -maintainer = "Charlotte Thomas" -copyright = "GPLv3" -license-file = "LICENSE" - -[package.metadata.generate-rpm] -name = "mini-calc" -license = "GPLv3" -assets = [{source="target/release/mini-calc", dest="/usr/bin/mini-calc", mode = "755"}] - -# The profile that 'cargo dist' will build with -[profile.dist] -inherits = "release" -lto = "thin" +[workspace] +resolver = "2" +members = ["crates/mini-calc", "crates/calc-lib"] diff --git a/crates/calc-lib/Cargo.toml b/crates/calc-lib/Cargo.toml new file mode 100644 index 0000000..984f1d3 --- /dev/null +++ b/crates/calc-lib/Cargo.toml @@ -0,0 +1,6 @@ +[package] +name = "calc-lib" +version = "0.1.0" +edition = "2024" + +[dependencies] diff --git a/crates/calc-lib/src/lib.rs b/crates/calc-lib/src/lib.rs new file mode 100644 index 0000000..b93cf3f --- /dev/null +++ b/crates/calc-lib/src/lib.rs @@ -0,0 +1,14 @@ +pub fn add(left: u64, right: u64) -> u64 { + left + right +} + +#[cfg(test)] +mod tests { + use super::*; + + #[test] + fn it_works() { + let result = add(2, 2); + assert_eq!(result, 4); + } +} diff --git a/crates/mini-calc/Cargo.lock b/crates/mini-calc/Cargo.lock new file mode 100644 index 0000000..2f754bb --- /dev/null +++ b/crates/mini-calc/Cargo.lock @@ -0,0 +1,559 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 4 + +[[package]] +name = "ansi_term" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d52a9bb7ec0cf484c551830a7ce27bd20d67eac647e1befb56b0be4ee39a55d2" +dependencies = [ + "winapi", +] + +[[package]] +name = "arrayref" +version = "0.3.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6b4930d2cb77ce62f89ee5d5289b4ac049559b1c45539271f5ed4fdc7db34545" + +[[package]] +name = "arrayvec" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "23b62fc65de8e4e7f52534fb52b0f3ed04746ae267519eef2a83941e8085068b" + +[[package]] +name = "atty" +version = "0.2.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d9b39be18770d11421cdb1b9947a45dd3f37e93092cbf377614828a319d5fee8" +dependencies = [ + "hermit-abi", + "libc", + "winapi", +] + +[[package]] +name = "base64" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9e1b586273c5702936fe7b7d6896644d8be71e6314cfe09d3167c95f712589e8" + +[[package]] +name = "bitflags" +version = "1.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" + +[[package]] +name = "bitflags" +version = "2.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed570934406eb16438a4e976b1b4500774099c13b8cb96eec99f620f05090ddf" + +[[package]] +name = "blake2b_simd" +version = "0.5.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "afa748e348ad3be8263be728124b24a24f268266f6f5d58af9d75f6a40b5c587" +dependencies = [ + "arrayref", + "arrayvec", + "constant_time_eq", +] + +[[package]] +name = "byteorder" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" + +[[package]] +name = "cfg-if" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" + +[[package]] +name = "confy" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e37668cb35145dcfaa1931a5f37fde375eeae8068b4c0d2f289da28a270b2d2c" +dependencies = [ + "directories", + "serde", + "thiserror", + "toml", +] + +[[package]] +name = "constant_time_eq" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "245097e9a4535ee1e3e3931fcfcd55a796a44c643e8596ff6566d68f09b87bbc" + +[[package]] +name = "crossbeam-utils" +version = "0.8.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "248e3bacc7dc6baa3b21e405ee045c3047101a49145e7e9eca583ab4c2ca5345" + +[[package]] +name = "directories" +version = "4.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f51c5d4ddabd36886dd3e1438cb358cdcb0d7c499cb99cb4ac2e38e18b5cb210" +dependencies = [ + "dirs-sys", +] + +[[package]] +name = "dirs" +version = "1.0.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3fd78930633bd1c6e35c4b42b1df7b0cbc6bc191146e512bb3bedf243fcc3901" +dependencies = [ + "libc", + "redox_users 0.3.5", + "winapi", +] + +[[package]] +name = "dirs" +version = "4.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ca3aa72a6f96ea37bbc5aa912f6788242832f75369bdfdadcb0e38423f100059" +dependencies = [ + "dirs-sys", +] + +[[package]] +name = "dirs-sys" +version = "0.3.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1b1d1d91c932ef41c0f2663aa8b0ca0342d444d842c06914aa0a7e352d0bada6" +dependencies = [ + "libc", + "redox_users 0.4.4", + "winapi", +] + +[[package]] +name = "fnv" +version = "1.0.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" + +[[package]] +name = "getrandom" +version = "0.1.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8fc3cb4d91f53b50155bdcfd23f6a4c39ae1969c2ae85982b135750cccaf5fce" +dependencies = [ + "cfg-if", + "libc", + "wasi 0.9.0+wasi-snapshot-preview1", +] + +[[package]] +name = "getrandom" +version = "0.2.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "190092ea657667030ac6a35e305e62fc4dd69fd98ac98631e5d3a2b1575a12b5" +dependencies = [ + "cfg-if", + "libc", + "wasi 0.11.0+wasi-snapshot-preview1", +] + +[[package]] +name = "gnuplot" +version = "0.0.39" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2529467b8aef62bdf0c97dc984ca33244b84f8b5eb9517328f24bbb9afa0fb31" +dependencies = [ + "byteorder", +] + +[[package]] +name = "hermit-abi" +version = "0.1.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "62b467343b94ba476dcb2500d242dadbb39557df889310ac77c5d99100aaac33" +dependencies = [ + "libc", +] + +[[package]] +name = "libc" +version = "0.2.153" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c198f91728a82281a64e1f4f9eeb25d82cb32a5de251c6bd1b5154d63a8e7bd" + +[[package]] +name = "libredox" +version = "0.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85c833ca1e66078851dba29046874e38f08b2c883700aa29a03ddd3b23814ee8" +dependencies = [ + "bitflags 2.4.2", + "libc", + "redox_syscall 0.4.1", +] + +[[package]] +name = "linefeed" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "28715d08e35c6c074f9ae6b2e6a2420bac75d050c66ecd669d7d5b98e2caa036" +dependencies = [ + "dirs 1.0.5", + "mortal", + "winapi", +] + +[[package]] +name = "memchr" +version = "2.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "523dc4f511e55ab87b694dc30d0f820d60906ef06413f93d4d7a1385599cc149" + +[[package]] +name = "mini-calc" +version = "4.0.3" +dependencies = [ + "ansi_term", + "atty", + "confy", + "gnuplot", + "linefeed", + "serde", +] + +[[package]] +name = "minimal-lexical" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a" + +[[package]] +name = "mortal" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2c624fa1b7aab6bd2aff6e9b18565cc0363b6d45cbcd7465c9ed5e3740ebf097" +dependencies = [ + "bitflags 2.4.2", + "libc", + "nix", + "smallstr", + "terminfo", + "unicode-normalization", + "unicode-width", + "winapi", +] + +[[package]] +name = "nix" +version = "0.26.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "598beaf3cc6fdd9a5dfb1630c2800c7acd31df7aaf0f565796fba2b53ca1af1b" +dependencies = [ + "bitflags 1.3.2", + "cfg-if", + "libc", +] + +[[package]] +name = "nom" +version = "7.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d273983c5a657a70a3e8f2a01329822f3b8c8172b73826411a55751e404a0a4a" +dependencies = [ + "memchr", + "minimal-lexical", +] + +[[package]] +name = "phf" +version = "0.11.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ade2d8b8f33c7333b51bcf0428d37e217e9f32192ae4772156f65063b8ce03dc" +dependencies = [ + "phf_shared", +] + +[[package]] +name = "phf_codegen" +version = "0.11.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e8d39688d359e6b34654d328e262234662d16cc0f60ec8dcbe5e718709342a5a" +dependencies = [ + "phf_generator", + "phf_shared", +] + +[[package]] +name = "phf_generator" +version = "0.11.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "48e4cc64c2ad9ebe670cb8fd69dd50ae301650392e81c05f9bfcb2d5bdbc24b0" +dependencies = [ + "phf_shared", + "rand", +] + +[[package]] +name = "phf_shared" +version = "0.11.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "90fcb95eef784c2ac79119d1dd819e162b5da872ce6f3c3abe1e8ca1c082f72b" +dependencies = [ + "siphasher", +] + +[[package]] +name = "proc-macro2" +version = "1.0.78" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e2422ad645d89c99f8f3e6b88a9fdeca7fabeac836b1002371c4367c8f984aae" +dependencies = [ + "unicode-ident", +] + +[[package]] +name = "quote" +version = "1.0.35" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "291ec9ab5efd934aaf503a6466c5d5251535d108ee747472c3977cc5acc868ef" +dependencies = [ + "proc-macro2", +] + +[[package]] +name = "rand" +version = "0.8.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" +dependencies = [ + "rand_core", +] + +[[package]] +name = "rand_core" +version = "0.6.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" + +[[package]] +name = "redox_syscall" +version = "0.1.57" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "41cc0f7e4d5d4544e8861606a285bb08d3e70712ccc7d2b84d7c0ccfaf4b05ce" + +[[package]] +name = "redox_syscall" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4722d768eff46b75989dd134e5c353f0d6296e5aaa3132e776cbdb56be7731aa" +dependencies = [ + "bitflags 1.3.2", +] + +[[package]] +name = "redox_users" +version = "0.3.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "de0737333e7a9502c789a36d7c7fa6092a49895d4faa31ca5df163857ded2e9d" +dependencies = [ + "getrandom 0.1.16", + "redox_syscall 0.1.57", + "rust-argon2", +] + +[[package]] +name = "redox_users" +version = "0.4.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a18479200779601e498ada4e8c1e1f50e3ee19deb0259c25825a98b5603b2cb4" +dependencies = [ + "getrandom 0.2.12", + "libredox", + "thiserror", +] + +[[package]] +name = "rust-argon2" +version = "0.8.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4b18820d944b33caa75a71378964ac46f58517c92b6ae5f762636247c09e78fb" +dependencies = [ + "base64", + "blake2b_simd", + "constant_time_eq", + "crossbeam-utils", +] + +[[package]] +name = "serde" +version = "1.0.196" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "870026e60fa08c69f064aa766c10f10b1d62db9ccd4d0abb206472bee0ce3b32" +dependencies = [ + "serde_derive", +] + +[[package]] +name = "serde_derive" +version = "1.0.196" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "33c85360c95e7d137454dc81d9a4ed2b8efd8fbe19cee57357b32b9771fccb67" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "siphasher" +version = "0.3.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "38b58827f4464d87d377d175e90bf58eb00fd8716ff0a62f80356b5e61555d0d" + +[[package]] +name = "smallstr" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e922794d168678729ffc7e07182721a14219c65814e66e91b839a272fe5ae4f" +dependencies = [ + "smallvec", +] + +[[package]] +name = "smallvec" +version = "1.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6ecd384b10a64542d77071bd64bd7b231f4ed5940fba55e98c3de13824cf3d7" + +[[package]] +name = "syn" +version = "2.0.48" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0f3531638e407dfc0814761abb7c00a5b54992b849452a0646b7f65c9f770f3f" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "terminfo" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "666cd3a6681775d22b200409aad3b089c5b99fb11ecdd8a204d9d62f8148498f" +dependencies = [ + "dirs 4.0.0", + "fnv", + "nom", + "phf", + "phf_codegen", +] + +[[package]] +name = "thiserror" +version = "1.0.56" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d54378c645627613241d077a3a79db965db602882668f9136ac42af9ecb730ad" +dependencies = [ + "thiserror-impl", +] + +[[package]] +name = "thiserror-impl" +version = "1.0.56" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fa0faa943b50f3db30a20aa7e265dbc66076993efed8463e8de414e5d06d3471" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "tinyvec" +version = "1.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "87cc5ceb3875bb20c2890005a4e226a4651264a5c75edb2421b52861a0a0cb50" +dependencies = [ + "tinyvec_macros", +] + +[[package]] +name = "tinyvec_macros" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" + +[[package]] +name = "toml" +version = "0.5.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f4f7f0dd8d50a853a531c426359045b1998f04219d88799810762cd4ad314234" +dependencies = [ + "serde", +] + +[[package]] +name = "unicode-ident" +version = "1.0.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b" + +[[package]] +name = "unicode-normalization" +version = "0.1.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c5713f0fc4b5db668a2ac63cdb7bb4469d8c9fed047b1d0292cc7b0ce2ba921" +dependencies = [ + "tinyvec", +] + +[[package]] +name = "unicode-width" +version = "0.1.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e51733f11c9c4f72aa0c160008246859e340b00807569a0da0e7a1079b27ba85" + +[[package]] +name = "wasi" +version = "0.9.0+wasi-snapshot-preview1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cccddf32554fecc6acb585f82a32a72e28b48f8c4c1883ddfeeeaa96f7d8e519" + +[[package]] +name = "wasi" +version = "0.11.0+wasi-snapshot-preview1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" + +[[package]] +name = "winapi" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419" +dependencies = [ + "winapi-i686-pc-windows-gnu", + "winapi-x86_64-pc-windows-gnu", +] + +[[package]] +name = "winapi-i686-pc-windows-gnu" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" + +[[package]] +name = "winapi-x86_64-pc-windows-gnu" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" diff --git a/crates/mini-calc/Cargo.toml b/crates/mini-calc/Cargo.toml new file mode 100644 index 0000000..f1828ac --- /dev/null +++ b/crates/mini-calc/Cargo.toml @@ -0,0 +1,41 @@ +[package] +name = "mini-calc" +version = "4.0.4-alpha" +license = "GPL-3.0-or-later" +description = "A Fully-Featured Configurable (mini) Rust Calculator" +homepage = "https://calc.charlotte-thomas.me" +repository = "https://github.com/vanilla-extract/calc" +readme = "README.md" +edition = "2021" +exclude = [ + "docs/*", + "manual/*", + "manual.pdf" +] + + +[dependencies] +ansi_term = "0.12.1" +linefeed = "0.6" +confy = "0.5.1" +gnuplot = "0.0.39" +serde = { version = "1.0.192", features = ["derive"] } +atty = "0.2" + + + +[package.metadata.deb] +name = "mini-calc" +maintainer = "Charlotte Thomas" +copyright = "GPLv3" +license-file = "LICENSE" + +[package.metadata.generate-rpm] +name = "mini-calc" +license = "GPLv3" +assets = [{source="target/release/mini-calc", dest="/usr/bin/mini-calc", mode = "755"}] + +# The profile that 'cargo dist' will build with +[profile.dist] +inherits = "release" +lto = "thin" diff --git a/dist-workspace.toml b/crates/mini-calc/dist-workspace.toml similarity index 100% rename from dist-workspace.toml rename to crates/mini-calc/dist-workspace.toml diff --git a/flake.lock b/crates/mini-calc/flake.lock similarity index 100% rename from flake.lock rename to crates/mini-calc/flake.lock diff --git a/flake.nix b/crates/mini-calc/flake.nix similarity index 100% rename from flake.nix rename to crates/mini-calc/flake.nix diff --git a/src/configuration/loader.rs b/crates/mini-calc/src/configuration/loader.rs similarity index 100% rename from src/configuration/loader.rs rename to crates/mini-calc/src/configuration/loader.rs diff --git a/src/configuration/mod.rs b/crates/mini-calc/src/configuration/mod.rs similarity index 100% rename from src/configuration/mod.rs rename to crates/mini-calc/src/configuration/mod.rs diff --git a/src/exact_math/float_mode.rs b/crates/mini-calc/src/exact_math/float_mode.rs similarity index 100% rename from src/exact_math/float_mode.rs rename to crates/mini-calc/src/exact_math/float_mode.rs diff --git a/src/exact_math/mod.rs b/crates/mini-calc/src/exact_math/mod.rs similarity index 100% rename from src/exact_math/mod.rs rename to crates/mini-calc/src/exact_math/mod.rs diff --git a/src/exact_math/rationals.rs b/crates/mini-calc/src/exact_math/rationals.rs similarity index 100% rename from src/exact_math/rationals.rs rename to crates/mini-calc/src/exact_math/rationals.rs diff --git a/src/exact_math/scientific_mode.rs b/crates/mini-calc/src/exact_math/scientific_mode.rs similarity index 100% rename from src/exact_math/scientific_mode.rs rename to crates/mini-calc/src/exact_math/scientific_mode.rs diff --git a/src/exact_math/symbolic.rs b/crates/mini-calc/src/exact_math/symbolic.rs similarity index 100% rename from src/exact_math/symbolic.rs rename to crates/mini-calc/src/exact_math/symbolic.rs diff --git a/src/functions/add.rs b/crates/mini-calc/src/functions/add.rs similarity index 100% rename from src/functions/add.rs rename to crates/mini-calc/src/functions/add.rs diff --git a/src/functions/divide.rs b/crates/mini-calc/src/functions/divide.rs similarity index 100% rename from src/functions/divide.rs rename to crates/mini-calc/src/functions/divide.rs diff --git a/src/functions/expo.rs b/crates/mini-calc/src/functions/expo.rs similarity index 100% rename from src/functions/expo.rs rename to crates/mini-calc/src/functions/expo.rs diff --git a/src/functions/function.rs b/crates/mini-calc/src/functions/function.rs similarity index 100% rename from src/functions/function.rs rename to crates/mini-calc/src/functions/function.rs diff --git a/src/functions/minus.rs b/crates/mini-calc/src/functions/minus.rs similarity index 100% rename from src/functions/minus.rs rename to crates/mini-calc/src/functions/minus.rs diff --git a/src/functions/mod.rs b/crates/mini-calc/src/functions/mod.rs similarity index 100% rename from src/functions/mod.rs rename to crates/mini-calc/src/functions/mod.rs diff --git a/src/functions/mult.rs b/crates/mini-calc/src/functions/mult.rs similarity index 100% rename from src/functions/mult.rs rename to crates/mini-calc/src/functions/mult.rs diff --git a/src/interpreting/interpreter.rs b/crates/mini-calc/src/interpreting/interpreter.rs similarity index 100% rename from src/interpreting/interpreter.rs rename to crates/mini-calc/src/interpreting/interpreter.rs diff --git a/src/interpreting/mod.rs b/crates/mini-calc/src/interpreting/mod.rs similarity index 100% rename from src/interpreting/mod.rs rename to crates/mini-calc/src/interpreting/mod.rs diff --git a/src/interpreting/stdlib.rs b/crates/mini-calc/src/interpreting/stdlib.rs similarity index 100% rename from src/interpreting/stdlib.rs rename to crates/mini-calc/src/interpreting/stdlib.rs diff --git a/src/lexing/lexer.rs b/crates/mini-calc/src/lexing/lexer.rs similarity index 100% rename from src/lexing/lexer.rs rename to crates/mini-calc/src/lexing/lexer.rs diff --git a/src/lexing/mod.rs b/crates/mini-calc/src/lexing/mod.rs similarity index 100% rename from src/lexing/mod.rs rename to crates/mini-calc/src/lexing/mod.rs diff --git a/src/lexing/token.rs b/crates/mini-calc/src/lexing/token.rs similarity index 100% rename from src/lexing/token.rs rename to crates/mini-calc/src/lexing/token.rs diff --git a/src/main.rs b/crates/mini-calc/src/main.rs similarity index 100% rename from src/main.rs rename to crates/mini-calc/src/main.rs diff --git a/src/parsing/ast.rs b/crates/mini-calc/src/parsing/ast.rs similarity index 100% rename from src/parsing/ast.rs rename to crates/mini-calc/src/parsing/ast.rs diff --git a/src/parsing/mod.rs b/crates/mini-calc/src/parsing/mod.rs similarity index 100% rename from src/parsing/mod.rs rename to crates/mini-calc/src/parsing/mod.rs diff --git a/src/parsing/parselets/infix_parselet.rs b/crates/mini-calc/src/parsing/parselets/infix_parselet.rs similarity index 100% rename from src/parsing/parselets/infix_parselet.rs rename to crates/mini-calc/src/parsing/parselets/infix_parselet.rs diff --git a/src/parsing/parselets/mod.rs b/crates/mini-calc/src/parsing/parselets/mod.rs similarity index 100% rename from src/parsing/parselets/mod.rs rename to crates/mini-calc/src/parsing/parselets/mod.rs diff --git a/src/parsing/parselets/prefix_parselet.rs b/crates/mini-calc/src/parsing/parselets/prefix_parselet.rs similarity index 100% rename from src/parsing/parselets/prefix_parselet.rs rename to crates/mini-calc/src/parsing/parselets/prefix_parselet.rs diff --git a/src/parsing/parser.rs b/crates/mini-calc/src/parsing/parser.rs similarity index 100% rename from src/parsing/parser.rs rename to crates/mini-calc/src/parsing/parser.rs diff --git a/src/utils/integer_utils.rs b/crates/mini-calc/src/utils/integer_utils.rs similarity index 100% rename from src/utils/integer_utils.rs rename to crates/mini-calc/src/utils/integer_utils.rs diff --git a/src/utils/matrix_utils.rs b/crates/mini-calc/src/utils/matrix_utils.rs similarity index 100% rename from src/utils/matrix_utils.rs rename to crates/mini-calc/src/utils/matrix_utils.rs diff --git a/src/utils/mod.rs b/crates/mini-calc/src/utils/mod.rs similarity index 100% rename from src/utils/mod.rs rename to crates/mini-calc/src/utils/mod.rs diff --git a/src/utils/plot_utils.rs b/crates/mini-calc/src/utils/plot_utils.rs similarity index 100% rename from src/utils/plot_utils.rs rename to crates/mini-calc/src/utils/plot_utils.rs From 8a8669899589850d92b0ad0caf75378170707137 Mon Sep 17 00:00:00 2001 From: Charlotte Thomas Date: Mon, 9 Mar 2026 11:38:53 +0100 Subject: [PATCH 3/9] restructuring: Cargo.toml --- Cargo.toml | 21 ++++++++++++++++++++ crates/calc-lib/Cargo.toml | 9 +++++++-- crates/mini-calc/Cargo.toml | 39 ++++++++----------------------------- 3 files changed, 36 insertions(+), 33 deletions(-) diff --git a/Cargo.toml b/Cargo.toml index bdb96d6..ac1e1b7 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,3 +1,24 @@ [workspace] resolver = "2" members = ["crates/mini-calc", "crates/calc-lib"] + +[workspace.package] +version = "4.0.4-alpha" +license = "GPL-3.0-or-later" +description = "A Fully-Featured Configurable (mini) Rust Calculator" +homepage = "https://calc.charlotte-thomas.me" +repository = "https://github.com/vanilla-extract/calc" +readme = "README.md" +edition = "2021" +exclude = [ + "docs/*", + "manual/*", + "manual.pdf" +] + +[dependencies] +calc-lib = { path = "crates/calc-lib", version = "4.0.4-alpha" } + +[profile.dist] +inherits = "release" +lto = "thin" diff --git a/crates/calc-lib/Cargo.toml b/crates/calc-lib/Cargo.toml index 984f1d3..54dc6f3 100644 --- a/crates/calc-lib/Cargo.toml +++ b/crates/calc-lib/Cargo.toml @@ -1,6 +1,11 @@ [package] name = "calc-lib" -version = "0.1.0" -edition = "2024" +version = { workspace = true } +license = { workspace = true } +description = { workspace = true } +homepage = { workspace = true } +repository = { workspace = true } +readme = { workspace = true } +edition = { workspace = true } [dependencies] diff --git a/crates/mini-calc/Cargo.toml b/crates/mini-calc/Cargo.toml index f1828ac..a2f9123 100644 --- a/crates/mini-calc/Cargo.toml +++ b/crates/mini-calc/Cargo.toml @@ -1,18 +1,12 @@ [package] name = "mini-calc" -version = "4.0.4-alpha" -license = "GPL-3.0-or-later" -description = "A Fully-Featured Configurable (mini) Rust Calculator" -homepage = "https://calc.charlotte-thomas.me" -repository = "https://github.com/vanilla-extract/calc" -readme = "README.md" -edition = "2021" -exclude = [ - "docs/*", - "manual/*", - "manual.pdf" -] - +version = { workspace = true } +license = { workspace = true } +description = { workspace = true } +homepage = { workspace = true } +repository = { workspace = true } +readme = { workspace = true } +edition = { workspace = true } [dependencies] ansi_term = "0.12.1" @@ -21,21 +15,4 @@ confy = "0.5.1" gnuplot = "0.0.39" serde = { version = "1.0.192", features = ["derive"] } atty = "0.2" - - - -[package.metadata.deb] -name = "mini-calc" -maintainer = "Charlotte Thomas" -copyright = "GPLv3" -license-file = "LICENSE" - -[package.metadata.generate-rpm] -name = "mini-calc" -license = "GPLv3" -assets = [{source="target/release/mini-calc", dest="/usr/bin/mini-calc", mode = "755"}] - -# The profile that 'cargo dist' will build with -[profile.dist] -inherits = "release" -lto = "thin" +calc-lib = {workspace = true} From da273793efca67b2e4d9cc851cb5af9d37804826 Mon Sep 17 00:00:00 2001 From: Charlotte Thomas Date: Mon, 9 Mar 2026 11:40:04 +0100 Subject: [PATCH 4/9] re: Cargo.toml --- Cargo.toml | 2 +- crates/calc-lib/Cargo.toml | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/Cargo.toml b/Cargo.toml index ac1e1b7..9c9c507 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -16,7 +16,7 @@ exclude = [ "manual.pdf" ] -[dependencies] +[workspace.dependencies] calc-lib = { path = "crates/calc-lib", version = "4.0.4-alpha" } [profile.dist] diff --git a/crates/calc-lib/Cargo.toml b/crates/calc-lib/Cargo.toml index 54dc6f3..78ceae7 100644 --- a/crates/calc-lib/Cargo.toml +++ b/crates/calc-lib/Cargo.toml @@ -9,3 +9,4 @@ readme = { workspace = true } edition = { workspace = true } [dependencies] +serde = { version = "1.0.192", features = ["derive"] } From aab2245ca6f065bf4ed24157968c2a291703d8e8 Mon Sep 17 00:00:00 2001 From: Charlotte Thomas Date: Mon, 9 Mar 2026 11:40:40 +0100 Subject: [PATCH 5/9] lock: rebuilding lock --- Cargo.lock | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/Cargo.lock b/Cargo.lock index 3a85e72..d28e66f 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -71,7 +71,10 @@ checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" [[package]] name = "calc-lib" -version = "0.1.0" +version = "4.0.4-alpha" +dependencies = [ + "serde", +] [[package]] name = "cfg-if" @@ -227,6 +230,7 @@ version = "4.0.4-alpha" dependencies = [ "ansi_term", "atty", + "calc-lib", "confy", "gnuplot", "linefeed", From 562ed100e9a33a9295f59867451fb10f9516f6ff Mon Sep 17 00:00:00 2001 From: Charlotte Thomas Date: Mon, 9 Mar 2026 11:55:32 +0100 Subject: [PATCH 6/9] restructuring: put everything in calc-lib --- Cargo.lock | 2 ++ crates/calc-lib/Cargo.toml | 2 ++ .../src/configuration/loader.rs | 0 .../src/configuration/mod.rs | 0 .../src/exact_math/float_mode.rs | 0 .../src/exact_math/mod.rs | 0 .../src/exact_math/rationals.rs | 0 .../src/exact_math/scientific_mode.rs | 0 .../src/exact_math/symbolic.rs | 0 .../src/functions/add.rs | 0 .../src/functions/divide.rs | 0 .../src/functions/expo.rs | 0 .../src/functions/function.rs | 0 .../src/functions/minus.rs | 0 .../src/functions/mod.rs | 0 .../src/functions/mult.rs | 0 .../src/lexing/lexer.rs | 0 .../{mini-calc => calc-lib}/src/lexing/mod.rs | 0 .../src/lexing/token.rs | 0 crates/calc-lib/src/lib.rs | 22 +++++++++---------- .../src/parsing/ast.rs | 0 .../src/parsing/mod.rs | 0 .../src/parsing/parselets/infix_parselet.rs | 0 .../src/parsing/parselets/mod.rs | 0 .../src/parsing/parselets/prefix_parselet.rs | 0 .../src/parsing/parser.rs | 0 .../src/utils/integer_utils.rs | 0 .../src/utils/matrix_utils.rs | 0 .../{mini-calc => calc-lib}/src/utils/mod.rs | 0 .../src/utils/plot_utils.rs | 0 crates/mini-calc/Cargo.toml | 2 +- crates/mini-calc/src/main.rs | 11 +--------- 32 files changed, 16 insertions(+), 23 deletions(-) rename crates/{mini-calc => calc-lib}/src/configuration/loader.rs (100%) rename crates/{mini-calc => calc-lib}/src/configuration/mod.rs (100%) rename crates/{mini-calc => calc-lib}/src/exact_math/float_mode.rs (100%) rename crates/{mini-calc => calc-lib}/src/exact_math/mod.rs (100%) rename crates/{mini-calc => calc-lib}/src/exact_math/rationals.rs (100%) rename crates/{mini-calc => calc-lib}/src/exact_math/scientific_mode.rs (100%) rename crates/{mini-calc => calc-lib}/src/exact_math/symbolic.rs (100%) rename crates/{mini-calc => calc-lib}/src/functions/add.rs (100%) rename crates/{mini-calc => calc-lib}/src/functions/divide.rs (100%) rename crates/{mini-calc => calc-lib}/src/functions/expo.rs (100%) rename crates/{mini-calc => calc-lib}/src/functions/function.rs (100%) rename crates/{mini-calc => calc-lib}/src/functions/minus.rs (100%) rename crates/{mini-calc => calc-lib}/src/functions/mod.rs (100%) rename crates/{mini-calc => calc-lib}/src/functions/mult.rs (100%) rename crates/{mini-calc => calc-lib}/src/lexing/lexer.rs (100%) rename crates/{mini-calc => calc-lib}/src/lexing/mod.rs (100%) rename crates/{mini-calc => calc-lib}/src/lexing/token.rs (100%) rename crates/{mini-calc => calc-lib}/src/parsing/ast.rs (100%) rename crates/{mini-calc => calc-lib}/src/parsing/mod.rs (100%) rename crates/{mini-calc => calc-lib}/src/parsing/parselets/infix_parselet.rs (100%) rename crates/{mini-calc => calc-lib}/src/parsing/parselets/mod.rs (100%) rename crates/{mini-calc => calc-lib}/src/parsing/parselets/prefix_parselet.rs (100%) rename crates/{mini-calc => calc-lib}/src/parsing/parser.rs (100%) rename crates/{mini-calc => calc-lib}/src/utils/integer_utils.rs (100%) rename crates/{mini-calc => calc-lib}/src/utils/matrix_utils.rs (100%) rename crates/{mini-calc => calc-lib}/src/utils/mod.rs (100%) rename crates/{mini-calc => calc-lib}/src/utils/plot_utils.rs (100%) diff --git a/Cargo.lock b/Cargo.lock index d28e66f..74d17a4 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -73,6 +73,8 @@ checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" name = "calc-lib" version = "4.0.4-alpha" dependencies = [ + "ansi_term", + "confy", "serde", ] diff --git a/crates/calc-lib/Cargo.toml b/crates/calc-lib/Cargo.toml index 78ceae7..95ddf05 100644 --- a/crates/calc-lib/Cargo.toml +++ b/crates/calc-lib/Cargo.toml @@ -10,3 +10,5 @@ edition = { workspace = true } [dependencies] serde = { version = "1.0.192", features = ["derive"] } +confy = "0.5.1" +ansi_term = "0.12.1" diff --git a/crates/mini-calc/src/configuration/loader.rs b/crates/calc-lib/src/configuration/loader.rs similarity index 100% rename from crates/mini-calc/src/configuration/loader.rs rename to crates/calc-lib/src/configuration/loader.rs diff --git a/crates/mini-calc/src/configuration/mod.rs b/crates/calc-lib/src/configuration/mod.rs similarity index 100% rename from crates/mini-calc/src/configuration/mod.rs rename to crates/calc-lib/src/configuration/mod.rs diff --git a/crates/mini-calc/src/exact_math/float_mode.rs b/crates/calc-lib/src/exact_math/float_mode.rs similarity index 100% rename from crates/mini-calc/src/exact_math/float_mode.rs rename to crates/calc-lib/src/exact_math/float_mode.rs diff --git a/crates/mini-calc/src/exact_math/mod.rs b/crates/calc-lib/src/exact_math/mod.rs similarity index 100% rename from crates/mini-calc/src/exact_math/mod.rs rename to crates/calc-lib/src/exact_math/mod.rs diff --git a/crates/mini-calc/src/exact_math/rationals.rs b/crates/calc-lib/src/exact_math/rationals.rs similarity index 100% rename from crates/mini-calc/src/exact_math/rationals.rs rename to crates/calc-lib/src/exact_math/rationals.rs diff --git a/crates/mini-calc/src/exact_math/scientific_mode.rs b/crates/calc-lib/src/exact_math/scientific_mode.rs similarity index 100% rename from crates/mini-calc/src/exact_math/scientific_mode.rs rename to crates/calc-lib/src/exact_math/scientific_mode.rs diff --git a/crates/mini-calc/src/exact_math/symbolic.rs b/crates/calc-lib/src/exact_math/symbolic.rs similarity index 100% rename from crates/mini-calc/src/exact_math/symbolic.rs rename to crates/calc-lib/src/exact_math/symbolic.rs diff --git a/crates/mini-calc/src/functions/add.rs b/crates/calc-lib/src/functions/add.rs similarity index 100% rename from crates/mini-calc/src/functions/add.rs rename to crates/calc-lib/src/functions/add.rs diff --git a/crates/mini-calc/src/functions/divide.rs b/crates/calc-lib/src/functions/divide.rs similarity index 100% rename from crates/mini-calc/src/functions/divide.rs rename to crates/calc-lib/src/functions/divide.rs diff --git a/crates/mini-calc/src/functions/expo.rs b/crates/calc-lib/src/functions/expo.rs similarity index 100% rename from crates/mini-calc/src/functions/expo.rs rename to crates/calc-lib/src/functions/expo.rs diff --git a/crates/mini-calc/src/functions/function.rs b/crates/calc-lib/src/functions/function.rs similarity index 100% rename from crates/mini-calc/src/functions/function.rs rename to crates/calc-lib/src/functions/function.rs diff --git a/crates/mini-calc/src/functions/minus.rs b/crates/calc-lib/src/functions/minus.rs similarity index 100% rename from crates/mini-calc/src/functions/minus.rs rename to crates/calc-lib/src/functions/minus.rs diff --git a/crates/mini-calc/src/functions/mod.rs b/crates/calc-lib/src/functions/mod.rs similarity index 100% rename from crates/mini-calc/src/functions/mod.rs rename to crates/calc-lib/src/functions/mod.rs diff --git a/crates/mini-calc/src/functions/mult.rs b/crates/calc-lib/src/functions/mult.rs similarity index 100% rename from crates/mini-calc/src/functions/mult.rs rename to crates/calc-lib/src/functions/mult.rs diff --git a/crates/mini-calc/src/lexing/lexer.rs b/crates/calc-lib/src/lexing/lexer.rs similarity index 100% rename from crates/mini-calc/src/lexing/lexer.rs rename to crates/calc-lib/src/lexing/lexer.rs diff --git a/crates/mini-calc/src/lexing/mod.rs b/crates/calc-lib/src/lexing/mod.rs similarity index 100% rename from crates/mini-calc/src/lexing/mod.rs rename to crates/calc-lib/src/lexing/mod.rs diff --git a/crates/mini-calc/src/lexing/token.rs b/crates/calc-lib/src/lexing/token.rs similarity index 100% rename from crates/mini-calc/src/lexing/token.rs rename to crates/calc-lib/src/lexing/token.rs diff --git a/crates/calc-lib/src/lib.rs b/crates/calc-lib/src/lib.rs index b93cf3f..4851ecf 100644 --- a/crates/calc-lib/src/lib.rs +++ b/crates/calc-lib/src/lib.rs @@ -1,14 +1,12 @@ -pub fn add(left: u64, right: u64) -> u64 { - left + right -} +use std::cell::RefCell; -#[cfg(test)] -mod tests { - use super::*; +use crate::exact_math::float_mode::FloatMode; - #[test] - fn it_works() { - let result = add(2, 2); - assert_eq!(result, 4); - } -} +mod configuration; +mod exact_math; +mod functions; +mod lexing; +mod parsing; +mod utils; +static VERSION: &str = "v4.0.4-alpha"; +thread_local! {static FLOAT_MODE: RefCell = const {RefCell::new(FloatMode::Exact)}} diff --git a/crates/mini-calc/src/parsing/ast.rs b/crates/calc-lib/src/parsing/ast.rs similarity index 100% rename from crates/mini-calc/src/parsing/ast.rs rename to crates/calc-lib/src/parsing/ast.rs diff --git a/crates/mini-calc/src/parsing/mod.rs b/crates/calc-lib/src/parsing/mod.rs similarity index 100% rename from crates/mini-calc/src/parsing/mod.rs rename to crates/calc-lib/src/parsing/mod.rs diff --git a/crates/mini-calc/src/parsing/parselets/infix_parselet.rs b/crates/calc-lib/src/parsing/parselets/infix_parselet.rs similarity index 100% rename from crates/mini-calc/src/parsing/parselets/infix_parselet.rs rename to crates/calc-lib/src/parsing/parselets/infix_parselet.rs diff --git a/crates/mini-calc/src/parsing/parselets/mod.rs b/crates/calc-lib/src/parsing/parselets/mod.rs similarity index 100% rename from crates/mini-calc/src/parsing/parselets/mod.rs rename to crates/calc-lib/src/parsing/parselets/mod.rs diff --git a/crates/mini-calc/src/parsing/parselets/prefix_parselet.rs b/crates/calc-lib/src/parsing/parselets/prefix_parselet.rs similarity index 100% rename from crates/mini-calc/src/parsing/parselets/prefix_parselet.rs rename to crates/calc-lib/src/parsing/parselets/prefix_parselet.rs diff --git a/crates/mini-calc/src/parsing/parser.rs b/crates/calc-lib/src/parsing/parser.rs similarity index 100% rename from crates/mini-calc/src/parsing/parser.rs rename to crates/calc-lib/src/parsing/parser.rs diff --git a/crates/mini-calc/src/utils/integer_utils.rs b/crates/calc-lib/src/utils/integer_utils.rs similarity index 100% rename from crates/mini-calc/src/utils/integer_utils.rs rename to crates/calc-lib/src/utils/integer_utils.rs diff --git a/crates/mini-calc/src/utils/matrix_utils.rs b/crates/calc-lib/src/utils/matrix_utils.rs similarity index 100% rename from crates/mini-calc/src/utils/matrix_utils.rs rename to crates/calc-lib/src/utils/matrix_utils.rs diff --git a/crates/mini-calc/src/utils/mod.rs b/crates/calc-lib/src/utils/mod.rs similarity index 100% rename from crates/mini-calc/src/utils/mod.rs rename to crates/calc-lib/src/utils/mod.rs diff --git a/crates/mini-calc/src/utils/plot_utils.rs b/crates/calc-lib/src/utils/plot_utils.rs similarity index 100% rename from crates/mini-calc/src/utils/plot_utils.rs rename to crates/calc-lib/src/utils/plot_utils.rs diff --git a/crates/mini-calc/Cargo.toml b/crates/mini-calc/Cargo.toml index a2f9123..54ac3f5 100644 --- a/crates/mini-calc/Cargo.toml +++ b/crates/mini-calc/Cargo.toml @@ -11,8 +11,8 @@ edition = { workspace = true } [dependencies] ansi_term = "0.12.1" linefeed = "0.6" -confy = "0.5.1" gnuplot = "0.0.39" +confy = "0.5.1" serde = { version = "1.0.192", features = ["derive"] } atty = "0.2" calc-lib = {workspace = true} diff --git a/crates/mini-calc/src/main.rs b/crates/mini-calc/src/main.rs index 9e8da1c..2bea814 100644 --- a/crates/mini-calc/src/main.rs +++ b/crates/mini-calc/src/main.rs @@ -7,8 +7,8 @@ use std::str::SplitWhitespace; use std::sync::Arc; use ansi_term::Color; +use calc_lib::exact_math::float_mode::FloatMode; use configuration::loader::Config; -use exact_math::float_mode::FloatMode; use linefeed::{Completer, Completion, Interface, ReadResult, Terminal}; use crate::configuration::loader::{ @@ -22,16 +22,7 @@ use atty::Stream; use std::io::BufRead; use std::{fs, io}; -mod configuration; -mod exact_math; -mod functions; mod interpreting; -mod lexing; -mod parsing; -mod utils; - -thread_local! {static FLOAT_MODE: RefCell = const {RefCell::new(FloatMode::Exact)}} -static VERSION: &str = "v4.0.4-alpha"; /// # ShowConfig /// Displays to the user the current content of the configuration file From bcc71e6cf4acb974e4730b83accec81014c1963e Mon Sep 17 00:00:00 2001 From: Charlotte Thomas Date: Mon, 9 Mar 2026 12:03:30 +0100 Subject: [PATCH 7/9] restructuring: complete the move --- crates/calc-lib/src/lexing/mod.rs | 4 +-- crates/calc-lib/src/lib.rs | 16 +++++------ crates/calc-lib/src/parsing/mod.rs | 4 +-- .../mini-calc/src/interpreting/interpreter.rs | 28 +++++++++---------- crates/mini-calc/src/interpreting/stdlib.rs | 18 ++++++------ crates/mini-calc/src/main.rs | 28 ++++++++++--------- 6 files changed, 50 insertions(+), 48 deletions(-) diff --git a/crates/calc-lib/src/lexing/mod.rs b/crates/calc-lib/src/lexing/mod.rs index 2ce1165..e12719b 100644 --- a/crates/calc-lib/src/lexing/mod.rs +++ b/crates/calc-lib/src/lexing/mod.rs @@ -1,2 +1,2 @@ -pub(crate) mod lexer; -pub(crate) mod token; +pub mod lexer; +pub mod token; diff --git a/crates/calc-lib/src/lib.rs b/crates/calc-lib/src/lib.rs index 4851ecf..f4b38c4 100644 --- a/crates/calc-lib/src/lib.rs +++ b/crates/calc-lib/src/lib.rs @@ -2,11 +2,11 @@ use std::cell::RefCell; use crate::exact_math::float_mode::FloatMode; -mod configuration; -mod exact_math; -mod functions; -mod lexing; -mod parsing; -mod utils; -static VERSION: &str = "v4.0.4-alpha"; -thread_local! {static FLOAT_MODE: RefCell = const {RefCell::new(FloatMode::Exact)}} +pub mod configuration; +pub mod exact_math; +pub mod functions; +pub mod lexing; +pub mod parsing; +pub mod utils; +pub static VERSION: &str = "v4.0.4-alpha"; +thread_local! {pub static FLOAT_MODE: RefCell = const {RefCell::new(FloatMode::Exact)}} diff --git a/crates/calc-lib/src/parsing/mod.rs b/crates/calc-lib/src/parsing/mod.rs index 7075da6..6214703 100644 --- a/crates/calc-lib/src/parsing/mod.rs +++ b/crates/calc-lib/src/parsing/mod.rs @@ -1,3 +1,3 @@ -pub(crate) mod ast; +pub mod ast; pub mod parselets; -pub(crate) mod parser; +pub mod parser; diff --git a/crates/mini-calc/src/interpreting/interpreter.rs b/crates/mini-calc/src/interpreting/interpreter.rs index a663726..eba5e5c 100644 --- a/crates/mini-calc/src/interpreting/interpreter.rs +++ b/crates/mini-calc/src/interpreting/interpreter.rs @@ -1,14 +1,14 @@ -use crate::exact_math::float_mode::FloatMode; -use crate::exact_math::rationals::Rationals; -use crate::functions::add::add; -use crate::functions::divide::divide; -use crate::functions::expo::expo; -use crate::functions::function::*; -use crate::functions::minus::minus; -use crate::functions::mult::mult; use crate::interpreting::stdlib::exec; -use crate::parsing::ast::{Ast, Functions, Parameters, Ram}; -use crate::FLOAT_MODE; +use calc_lib::exact_math::float_mode::FloatMode; +use calc_lib::exact_math::rationals::Rationals; +use calc_lib::functions::add::add; +use calc_lib::functions::divide::divide; +use calc_lib::functions::expo::expo; +use calc_lib::functions::function::*; +use calc_lib::functions::minus::minus; +use calc_lib::functions::mult::mult; +use calc_lib::parsing::ast::{Ast, Functions, Parameters, Ram}; +use calc_lib::FLOAT_MODE; /// # Interpreter /// Interprets the Ast, and gives the result @@ -174,9 +174,9 @@ pub fn interpret(ast: &Ast, mut ram: &mut Ram, mut function: &mut Functions) -> mod test { use std::collections::HashMap; - use crate::exact_math::rationals::Rationals; - use crate::interpreting::interpreter::interpret; - use crate::parsing::ast::{Ast, Parameters}; + use calc_lib::exact_math::rationals::Rationals; + use calc_lib::interpreting::interpreter::interpret; + use calc_lib::parsing::ast::{Ast, Parameters}; #[test] fn test_interpreter_int() { @@ -253,7 +253,7 @@ mod test { let mut ram: HashMap = HashMap::new(); let mut function: HashMap, Ast)> = HashMap::new(); let expected = - Parameters::Rational(crate::exact_math::rationals::Rationals { under: 1, over: 1 }); + Parameters::Rational(calc_lib::exact_math::rationals::Rationals { under: 1, over: 1 }); let ast = Ast::Node { value: Parameters::DivideOperation, left: Box::from(Ast::new(Parameters::Int(1))), diff --git a/crates/mini-calc/src/interpreting/stdlib.rs b/crates/mini-calc/src/interpreting/stdlib.rs index cf1e7f6..84bf533 100644 --- a/crates/mini-calc/src/interpreting/stdlib.rs +++ b/crates/mini-calc/src/interpreting/stdlib.rs @@ -4,20 +4,20 @@ use std::slice::from_ref; use gnuplot::{AxesCommon, Figure}; -use crate::configuration::loader::{load, load_config, Config}; -use crate::functions::divide::divide; -use crate::functions::minus::minus; use crate::interpreting::interpreter::interpret; -use crate::parsing::ast::{self}; -use crate::parsing::ast::{ +use calc_lib::configuration::loader::{load, load_config, Config}; +use calc_lib::functions::divide::divide; +use calc_lib::functions::minus::minus; +use calc_lib::parsing::ast::{self}; +use calc_lib::parsing::ast::{ Ast, Parameters::{self, *}, }; -use crate::utils::matrix_utils::{lup_decompose, lup_determinant, lup_invert, transpose}; -use crate::utils::plot_utils::computes_lines; +use calc_lib::utils::matrix_utils::{lup_decompose, lup_determinant, lup_invert, transpose}; +use calc_lib::utils::plot_utils::computes_lines; -use crate::functions::add::add as other_add; -use crate::functions::mult::mult; +use calc_lib::functions::add::add as other_add; +use calc_lib::functions::mult::mult; type Ram<'a> = Option<&'a mut ast::Ram>; type Functions<'a> = Option<&'a mut ast::Functions>; diff --git a/crates/mini-calc/src/main.rs b/crates/mini-calc/src/main.rs index 2bea814..da22224 100644 --- a/crates/mini-calc/src/main.rs +++ b/crates/mini-calc/src/main.rs @@ -1,4 +1,3 @@ -use std::cell::RefCell; use std::collections::HashMap; use std::env::{self, Args}; use std::f64::consts::{E, PI}; @@ -7,18 +6,19 @@ use std::str::SplitWhitespace; use std::sync::Arc; use ansi_term::Color; -use calc_lib::exact_math::float_mode::FloatMode; -use configuration::loader::Config; -use linefeed::{Completer, Completion, Interface, ReadResult, Terminal}; - -use crate::configuration::loader::{ +use atty::Stream; +use calc_lib::configuration::loader::Config; +use calc_lib::configuration::loader::{ load, load_config, write_config, write_default_config, Greeting, Loaded, Prompt, }; -use crate::interpreting::interpreter::interpret; -use crate::lexing::lexer::lex; -use crate::parsing::ast::{Ast, Parameters}; -use crate::parsing::parser::{init_calc_parser, CalcParser}; -use atty::Stream; +use calc_lib::exact_math::float_mode::FloatMode; +use calc_lib::lexing::lexer::lex; +use calc_lib::parsing::ast::{Ast, Parameters}; +use calc_lib::parsing::parser::{init_calc_parser, CalcParser}; +use calc_lib::FLOAT_MODE; +use calc_lib::VERSION; +use interpreting::interpreter::interpret; +use linefeed::{Completer, Completion, Interface, ReadResult, Terminal}; use std::io::BufRead; use std::{fs, io}; @@ -440,7 +440,8 @@ fn main() { } }; let lexed = lex(code.clone()); - let parser: &mut CalcParser = &mut parsing::parser::init_calc_parser(&lexed); + let parser: &mut CalcParser = + &mut calc_lib::parsing::parser::init_calc_parser(&lexed); let parsed = parser.parse(); if verbose { println!("Lexing of line: {}", &code); @@ -524,7 +525,8 @@ fn main() { } } else { let lexed = lex(verb.to_string()); - let parser: &mut CalcParser = &mut parsing::parser::init_calc_parser(&lexed); + let parser: &mut CalcParser = + &mut calc_lib::parsing::parser::init_calc_parser(&lexed); let parsed = parser.parse(); if verbose { println!("Lexing of line: {verb}"); From e232f9688feb4f6f051663464ba4fe9e5587c00b Mon Sep 17 00:00:00 2001 From: Charlotte Thomas Date: Mon, 9 Mar 2026 12:08:30 +0100 Subject: [PATCH 8/9] restructuring: correcting test --- crates/calc-lib/src/parsing/ast.rs | 19 ++++++++++--------- .../mini-calc/src/interpreting/interpreter.rs | 2 +- 2 files changed, 11 insertions(+), 10 deletions(-) diff --git a/crates/calc-lib/src/parsing/ast.rs b/crates/calc-lib/src/parsing/ast.rs index 87abe06..9f46dd9 100644 --- a/crates/calc-lib/src/parsing/ast.rs +++ b/crates/calc-lib/src/parsing/ast.rs @@ -617,19 +617,20 @@ impl Parameters { } } +impl Ast { + pub fn new(p: Parameters) -> Self { + Ast::Node { + value: p, + left: Box::from(Ast::Nil), + right: Box::from(Ast::Nil), + } + } +} + #[cfg(test)] mod test { use crate::parsing::ast::{Ast, Parameters}; - impl Ast { - pub fn new(p: Parameters) -> Self { - Ast::Node { - value: p, - left: Box::from(Ast::Nil), - right: Box::from(Ast::Nil), - } - } - } #[test] pub fn test_new() { let expected = Ast::Node { diff --git a/crates/mini-calc/src/interpreting/interpreter.rs b/crates/mini-calc/src/interpreting/interpreter.rs index eba5e5c..fb01058 100644 --- a/crates/mini-calc/src/interpreting/interpreter.rs +++ b/crates/mini-calc/src/interpreting/interpreter.rs @@ -174,8 +174,8 @@ pub fn interpret(ast: &Ast, mut ram: &mut Ram, mut function: &mut Functions) -> mod test { use std::collections::HashMap; + use crate::interpreting::interpreter::interpret; use calc_lib::exact_math::rationals::Rationals; - use calc_lib::interpreting::interpreter::interpret; use calc_lib::parsing::ast::{Ast, Parameters}; #[test] From d5d95f2b7d6f00b1486aaad0abd4619826de2d8b Mon Sep 17 00:00:00 2001 From: Charlotte Thomas Date: Mon, 9 Mar 2026 12:11:14 +0100 Subject: [PATCH 9/9] dist: generate file --- dist-workspace.toml | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) create mode 100644 dist-workspace.toml diff --git a/dist-workspace.toml b/dist-workspace.toml new file mode 100644 index 0000000..77d8776 --- /dev/null +++ b/dist-workspace.toml @@ -0,0 +1,17 @@ +[workspace] +members = ["cargo:."] + +# Config for 'dist' +[dist] +# The preferred dist version to use in CI (Cargo.toml SemVer syntax) +cargo-dist-version = "0.30.3" +# CI backends to support +ci = "github" +# The installers to generate for each app +installers = ["shell"] +# Target platforms to build apps for (Rust target-triple syntax) +targets = ["aarch64-apple-darwin", "aarch64-unknown-linux-gnu", "x86_64-apple-darwin", "x86_64-unknown-linux-gnu", "x86_64-unknown-linux-musl", "x86_64-pc-windows-msvc"] +# Path that installers should place binaries in +install-path = "CARGO_HOME" +# Whether to install an updater program +install-updater = false