From d5298ba34f02f2e795adb00188b63f54ed726af9 Mon Sep 17 00:00:00 2001 From: Yiffy Dev Date: Fri, 1 Nov 2024 05:33:23 +0500 Subject: [PATCH] docs: a reminder about lepty-scoping feature flag --- README.md | 18 ++++++++++++------ examples/use-styles/Cargo.lock | 11 ++++++----- examples/use-styles/src/main.rs | 2 -- release.toml | 6 +++++- sabry_intrnl/src/scoper/mod.rs | 4 ++-- sabry_procmacro_impl/src/impls/mod.rs | 7 ++++++- 6 files changed, 31 insertions(+), 17 deletions(-) diff --git a/README.md b/README.md index ea5625f..9895b02 100644 --- a/README.md +++ b/README.md @@ -273,7 +273,7 @@ fn component() -> impl IntoView { } } ``` -... and have "cls1" on both `h1` and `p` auto-assigned. Isn't this cool? +... and have "cls1" on both `h1` and `p` auto-assigned. Isn't that cool? So, if you're on leptos, and don't mind to take this approach, I'd highly recommend turning the *lepty-scoping* feature on: @@ -327,6 +327,7 @@ fn component() -> impl IntoView { That will perform *much* better: - All scope members - like `scope::breadcumbs` - wont contain repeating scope hash, just the original class/id selector + - So instead of scope members (which [aren't](https://github.com/yiffyrusdev/sabry/issues/2) autocompleted for sass-in-the-rust yet) you could just write bare selectors, as you do, for example, with svelte: `
  • ` - You will not encounter [the catch](#scoping) with nested tagname selectors Also, this isn't really exclusive leptos-supporting feature. It just changes scoping behavour. @@ -631,15 +632,20 @@ So you still can get the scoped variant of `cls1-dark` class: `scope::_dark(scop This isn't very handy, also isn't strict enough, and is a high-priority subject to change. wip. +#### Scope member naming rules + +Not any valid CSS selector is a valid rust identifier. In general this section should not be needed, as you should receive autocompletion from the editor. *However* it doesn't seem to work properly. Check the [wip](#wip) section out. + ## WIP *(sorted by my own priority)*, "dones" are excluded -- [] Crates of styled components - currently the only way to create them seems to be const styly. - - [] CSS support -- [] Currently the crate causes "dependency inheritance" infection. We cant get rid of it, however should be doable to at least get rid of flag inheritance -- [] There are some strange parsing errors, seems like a bug, however very hard to reproduce. Have to investigate. Maybe do more tests. -- [] Experience with cargo-leptos is fine, and we do use it, however its a bit "raughy". Need to do something about it. +- [ ] Somehow achieve the autocompletion for scopes. The problem is explained in details [here](https://github.com/yiffyrusdev/sabry/issues/2) +- [ ] Crates of styled components - currently the only way to create them seems to be const styly. + - [ ] CSS support +- [ ] Currently the crate causes "dependency inheritance" infection. We cant get rid of it, however should be doable to at least get rid of flag inheritance +- [ ] There are some strange parsing errors, seems like a bug, however very hard to reproduce. Have to investigate. Maybe do more tests. +- [ ] Experience with cargo-leptos is fine, and we do use it, however its a bit "raughy". Need to do something about it. ## Contributions diff --git a/examples/use-styles/Cargo.lock b/examples/use-styles/Cargo.lock index 8bc46bd..d0d46c5 100644 --- a/examples/use-styles/Cargo.lock +++ b/examples/use-styles/Cargo.lock @@ -994,7 +994,7 @@ checksum = "f3cb5ba0dc43242ce17de99c180e96db90b235b8a9fdc9543c96d2209116bd9f" [[package]] name = "sabry" -version = "0.0.1" +version = "0.0.1-alpha.2" dependencies = [ "sabry_build", "sabry_intrnl", @@ -1003,7 +1003,7 @@ dependencies = [ [[package]] name = "sabry_build" -version = "0.0.1" +version = "0.0.1-alpha.2" dependencies = [ "proc-macro2", "sabry_intrnl", @@ -1015,10 +1015,11 @@ dependencies = [ [[package]] name = "sabry_intrnl" -version = "0.0.1" +version = "0.0.1-alpha.2" dependencies = [ "base64", "blake3", + "cfg-if", "const_format", "grass", "lightningcss", @@ -1034,14 +1035,14 @@ dependencies = [ [[package]] name = "sabry_procmacro" -version = "0.0.1" +version = "0.0.1-alpha.2" dependencies = [ "sabry_procmacro_impl", ] [[package]] name = "sabry_procmacro_impl" -version = "0.0.1" +version = "0.0.1-alpha.2" dependencies = [ "proc-macro2", "quote", diff --git a/examples/use-styles/src/main.rs b/examples/use-styles/src/main.rs index 6472b0e..0f69f52 100644 --- a/examples/use-styles/src/main.rs +++ b/examples/use-styles/src/main.rs @@ -11,8 +11,6 @@ styly!(pub const bundlemod { } }); -styly!(pub const filemod:sass "src/main.sass"); - fn main(){ println!("someth class codemod styles: {}", bundlemod::someth); println!("someth class filemod styles: {}", filemod::someth); diff --git a/release.toml b/release.toml index d60c78b..edd975f 100644 --- a/release.toml +++ b/release.toml @@ -4,5 +4,9 @@ sign-tag = true target = "x86_64-unknown-linux-gnu" pre-release-replacements = [ - {file="README.md", search='sabry = {\s?version = "[0-9a-z\-\.]*"(?.*)\s?}', replace='sabry = { version = "{{version}}" $rest}'}, + {file="README.md", search='sabry = {\s?version = "[0-9a-z\-\.]*"', replace='sabry = { version = "{{version}}"'}, +] + +pre-release-hook = [ + "/bin/echo $NEW_VERSION" ] diff --git a/sabry_intrnl/src/scoper/mod.rs b/sabry_intrnl/src/scoper/mod.rs index 0d82a7d..659fc7f 100644 --- a/sabry_intrnl/src/scoper/mod.rs +++ b/sabry_intrnl/src/scoper/mod.rs @@ -226,7 +226,7 @@ impl HashedSelector { Some(format!("{} {}", hash.as_str(), a.ident)) } } - }, + } // As we dont want to use two HTML props for a single ID, // ID scoping is done with id modification ScopedSelector::Id(a) => { @@ -237,7 +237,7 @@ impl HashedSelector { Some(format!("{}-{}", hash.as_str(), a.ident)) } } - }, + } ScopedSelector::Tag(_) => None, } } diff --git a/sabry_procmacro_impl/src/impls/mod.rs b/sabry_procmacro_impl/src/impls/mod.rs index a6876d8..f86a7ae 100644 --- a/sabry_procmacro_impl/src/impls/mod.rs +++ b/sabry_procmacro_impl/src/impls/mod.rs @@ -57,7 +57,12 @@ impl Parse for ArbitraryStyleBlock { let iofile = match fs::read(&fullpath) { Ok(bf) => bf, - Err(_) => return Err(syn::Error::new(path_tok.span(), format!("Could not read file at {fullpath:?}"))) + Err(_) => { + return Err(syn::Error::new( + path_tok.span(), + format!("Could not read file at {fullpath:?}"), + )) + } }; let code = String::from_utf8_lossy(&iofile).to_string();