Skip to content

Commit e95ea12

Browse files
authored
refactor: rename SassImporter, SassLogger to BoxedImporter, BoxedLogger, etc. (#14)
1 parent 598d6a0 commit e95ea12

File tree

9 files changed

+43
-56
lines changed

9 files changed

+43
-56
lines changed

.github/workflows/publish.yml

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,9 +18,8 @@ jobs:
1818
node-version: 16
1919
- name: setup sass-embedded
2020
run: |
21-
cd scripts
2221
npm install
23-
node setup.mjs
22+
npm run setup
2423
- uses: actions-rs/toolchain@v1
2524
with:
2625
toolchain: 'stable'

Cargo.toml

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,12 @@
11
[package]
22
name = "sass-embedded"
3-
version = "0.3.0"
3+
version = "0.4.0"
44
authors = ["ahabhgk <ahabhgk@gmail.com>"]
55
edition = "2021"
66
resolver = "2"
77
license = "MIT"
88
description = "A Rust library that will communicate with Embedded Dart Sass using the Embedded Sass protocol"
9+
keywords = ["sass", "dart-sass", "sass-embedded", "scss"]
910
repository = "https://github.com/ahabhgk/sass-embedded-host-rust"
1011
documentation = "https://docs.rs/sass-embedded-host-rust"
1112
readme = "README.md"
@@ -40,3 +41,6 @@ prost-build = "0.11"
4041
[[bench]]
4142
name = "bootstrap"
4243
harness = false
44+
45+
[package.metadata.docs.rs]
46+
all-features = true

README.md

Lines changed: 2 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -10,33 +10,10 @@ let res = sass.compile_string("a {b: c}", StringOptions::default()).unwrap();
1010
println!("{:?}", res);
1111
```
1212

13-
For more details, checkout the [docs.rs](https://docs.rs/sass-embedded)
14-
15-
## Benchmark
16-
17-
[Compile bootstrap with `sass-embedded-host-rust`, `sass-embedded-host-node`, and `dart-sass`](https://github.com/ahabhgk/sass-embedded-host-rust/tree/main/benches/bootstrap)
18-
19-
```bash
20-
$ cargo bench bootstrap
21-
Benchmarking bootstrap/Host Rust: Warming up for 3.0000 s
22-
Warning: Unable to complete 10 samples in 5.0s. You may wish to increase target time to 5.6s.
23-
bootstrap/Host Rust time: [502.81 ms 507.54 ms 512.59 ms]
24-
change: [-14.057% -9.4932% -5.7950%] (p = 0.00 < 0.05)
25-
Performance has improved.
26-
Benchmarking bootstrap/Host Node: Warming up for 3.0000 s
27-
Warning: Unable to complete 10 samples in 5.0s. You may wish to increase target time to 14.7s.
28-
bootstrap/Host Node time: [1.1295 s 1.2127 s 1.3098 s]
29-
change: [+1.1844% +9.3527% +18.371%] (p = 0.05 > 0.05)
30-
No change in performance detected.
31-
Benchmarking bootstrap/Dart Sass: Warming up for 3.0000 s
32-
Warning: Unable to complete 10 samples in 5.0s. You may wish to increase target time to 24.8s.
33-
bootstrap/Dart Sass time: [2.4472 s 2.4728 s 2.4986 s]
34-
change: [-1.1681% +1.3988% +3.8141%] (p = 0.31 > 0.05)
35-
No change in performance detected.
36-
```
13+
For more details, checkout [docs.rs](https://docs.rs/sass-embedded) and [examples](https://github.com/ahabhgk/sass-embedded-host-rust/tree/main/examples).
3714

3815
## Contributing
3916

4017
1. Install the [Protocol Buffer Compiler](https://grpc.io/docs/protoc-installation/).
41-
2. Run `cd scripts && npm install && node setup.mjs`.
18+
2. Run `npm install && npm run setup`.
4219
3. Find issues and welcome PRs.

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
{
2-
"name": "sass-embedded-host-rust-scripts",
2+
"name": "sass-embedded-host-rust",
33
"version": "0.0.0",
44
"scripts": {
55
"setup": "node ./scripts/setup.mjs"

src/api.rs

Lines changed: 17 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ pub struct Options {
3434
pub load_paths: Vec<PathBuf>,
3535
/// More information:
3636
/// - [Sass documentation](https://sass-lang.com/documentation/js-api/interfaces/Options#logger)
37-
pub logger: Option<SassLogger>,
37+
pub logger: Option<BoxedLogger>,
3838
/// More information:
3939
/// - [Sass documentation](https://sass-lang.com/documentation/js-api/interfaces/Options#quietDeps)
4040
pub quiet_deps: bool,
@@ -103,9 +103,9 @@ impl OptionsBuilder {
103103
}
104104

105105
/// Sets the [Options]'s [load_paths] field.
106-
pub fn load_paths(mut self, arg: &[impl AsRef<Path>]) -> Self {
106+
pub fn load_paths<P: AsRef<Path>>(mut self, arg: impl AsRef<[P]>) -> Self {
107107
self.options.load_paths =
108-
arg.iter().map(|p| p.as_ref().to_owned()).collect();
108+
arg.as_ref().iter().map(|p| p.as_ref().to_owned()).collect();
109109
self
110110
}
111111

@@ -282,9 +282,9 @@ impl StringOptionsBuilder {
282282
}
283283

284284
/// Sets the [StringOptions]'s [load_paths] field.
285-
pub fn load_paths(mut self, arg: &[impl AsRef<Path>]) -> Self {
285+
pub fn load_paths<P: AsRef<Path>>(mut self, arg: impl AsRef<[P]>) -> Self {
286286
self.options.load_paths =
287-
arg.iter().map(|p| p.as_ref().to_owned()).collect();
287+
arg.as_ref().iter().map(|p| p.as_ref().to_owned()).collect();
288288
self
289289
}
290290

@@ -371,7 +371,7 @@ impl StringOptionsBuilder {
371371
}
372372

373373
/// A type alias for [Box<dyn Logger>].
374-
pub type SassLogger = Box<dyn Logger>;
374+
pub type BoxedLogger = Box<dyn Logger>;
375375

376376
/// More information
377377
/// - [Sass documentation](https://sass-lang.com/documentation/js-api/interfaces/Logger)
@@ -413,15 +413,21 @@ pub struct LoggerDebugOptions {
413413
pub(crate) formatted: String,
414414
}
415415

416-
/// Enum wrapper for [Box<dyn Importer>] and [Box<dyn FileImporter>].
416+
/// Enum wrapper for [BoxedImporter] and [BoxedFileImporter].
417417
#[derive(Debug)]
418418
pub enum SassImporter {
419-
/// A [Box<dyn Importer>].
420-
Importer(Box<dyn Importer>),
421-
/// A [Box<dyn FileImporter>].
422-
FileImporter(Box<dyn FileImporter>),
419+
/// A [BoxedImporter].
420+
Importer(BoxedImporter),
421+
/// A [BoxedFileImporter].
422+
FileImporter(BoxedFileImporter),
423423
}
424424

425+
/// A type alias for [Box<dyn Importer>].
426+
pub type BoxedImporter = Box<dyn Importer>;
427+
428+
/// A type alias for [Box<dyn FileImporter>].
429+
pub type BoxedFileImporter = Box<dyn FileImporter>;
430+
425431
/// More information
426432
/// - [Sass documentation](https://sass-lang.com/documentation/js-api/interfaces/Importer)
427433
pub trait Importer: Debug + Send + Sync {

src/host/logger_registry.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,15 @@
11
use crate::{
22
protocol::{outbound_message::LogEvent, LogEventType},
3-
LoggerDebugOptions, LoggerWarnOptions, SassLogger,
3+
BoxedLogger, LoggerDebugOptions, LoggerWarnOptions,
44
};
55

66
#[derive(Debug, Default)]
77
pub struct LoggerRegistry {
8-
logger: Option<SassLogger>,
8+
logger: Option<BoxedLogger>,
99
}
1010

1111
impl LoggerRegistry {
12-
pub fn register(&mut self, logger: SassLogger) {
12+
pub fn register(&mut self, logger: BoxedLogger) {
1313
self.logger = Some(logger);
1414
}
1515

src/legacy/api.rs

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -10,10 +10,10 @@ use crate::{
1010
legacy::url_to_file_path_cross_platform, CompileResult, Options,
1111
StringOptions, Syntax, Url,
1212
};
13-
pub use crate::{Logger, OutputStyle, SassLogger};
13+
pub use crate::{BoxedLogger, Logger, OutputStyle};
1414

1515
use super::{
16-
LegacyImporter, SassLegacyImporter, END_OF_LOAD_PROTOCOL,
16+
BoxedLegacyImporter, LegacyImporter, END_OF_LOAD_PROTOCOL,
1717
LEGACY_IMPORTER_PROTOCOL,
1818
};
1919

@@ -268,14 +268,14 @@ impl LegacyOptionsBuilder {
268268
/// Sets the [LegacyOptions]'s [sass_importers] field with [SassLegacyImporter]s.
269269
pub fn sass_importers(
270270
mut self,
271-
arg: impl IntoIterator<Item = impl Into<SassLegacyImporter>>,
271+
arg: impl IntoIterator<Item = impl Into<BoxedLegacyImporter>>,
272272
) -> Self {
273273
self.options.importers = Some(arg.into_iter().map(|i| i.into()).collect());
274274
self
275275
}
276276

277277
/// Adds a [SassLegacyImporter] to the [LegacyOptions]'s [sass_importers] field.
278-
pub fn sass_importer(mut self, arg: impl Into<SassLegacyImporter>) -> Self {
278+
pub fn sass_importer(mut self, arg: impl Into<BoxedLegacyImporter>) -> Self {
279279
self.options.importers =
280280
Some(if let Some(mut importers) = self.options.importers {
281281
importers.push(arg.into());
@@ -369,7 +369,7 @@ pub struct LegacyOptions {
369369
pub source_map_contents: bool,
370370
/// More information:
371371
/// - [Sass documentation](https://sass-lang.com/documentation/js-api/interfaces/LegacySharedOptions#importer)
372-
pub importers: Option<Vec<SassLegacyImporter>>,
372+
pub importers: Option<Vec<BoxedLegacyImporter>>,
373373
/// More information:
374374
/// - [Sass documentation](https://sass-lang.com/documentation/js-api/interfaces/LegacySharedOptions#charset)
375375
pub charset: bool,
@@ -381,7 +381,7 @@ pub struct LegacyOptions {
381381
pub verbose: bool,
382382
/// More information:
383383
/// - [Sass documentation](https://sass-lang.com/documentation/js-api/interfaces/LegacySharedOptions#logger)
384-
pub logger: Option<SassLogger>,
384+
pub logger: Option<BoxedLogger>,
385385
/// More information:
386386
/// - [Sass documentation](https://sass-lang.com/documentation/js-api/interfaces/LegacyFileOptions#file)
387387
pub file: Option<PathBuf>,

src/legacy/importer.rs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -34,9 +34,9 @@ pub trait LegacyImporter: Debug + Sync + Send {
3434
}
3535

3636
/// A type alias for [Box<dyn LegacyImporter>].
37-
pub type SassLegacyImporter = Box<dyn LegacyImporter>;
37+
pub type BoxedLegacyImporter = Box<dyn LegacyImporter>;
3838

39-
impl<I: 'static + LegacyImporter> From<I> for SassLegacyImporter {
39+
impl<I: 'static + LegacyImporter> From<I> for BoxedLegacyImporter {
4040
fn from(importer: I) -> Self {
4141
Box::new(importer)
4242
}
@@ -47,15 +47,15 @@ pub(crate) struct LegacyImporterWrapper {
4747
prev_stack: Mutex<Vec<PreviousUrl>>,
4848
last_contents: Mutex<Option<String>>,
4949
expecting_relative_load: Mutex<bool>,
50-
callbacks: Vec<SassLegacyImporter>,
50+
callbacks: Vec<BoxedLegacyImporter>,
5151
this: LegacyPluginThis,
5252
load_paths: Vec<PathBuf>,
5353
}
5454

5555
impl LegacyImporterWrapper {
5656
pub fn new(
5757
this: LegacyPluginThis,
58-
callbacks: Vec<SassLegacyImporter>,
58+
callbacks: Vec<BoxedLegacyImporter>,
5959
load_paths: Vec<PathBuf>,
6060
initial_prev: &str,
6161
) -> Arc<Self> {

src/lib.rs

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -31,9 +31,10 @@ mod varint;
3131
pub mod legacy;
3232

3333
pub use api::{
34-
CompileResult, FileImporter, Importer, ImporterOptions, ImporterResult,
35-
Logger, LoggerDebugOptions, LoggerWarnOptions, Options, OptionsBuilder,
36-
SassImporter, SassLogger, StringOptions, StringOptionsBuilder,
34+
BoxedFileImporter, BoxedImporter, BoxedLogger, CompileResult, FileImporter,
35+
Importer, ImporterOptions, ImporterResult, Logger, LoggerDebugOptions,
36+
LoggerWarnOptions, Options, OptionsBuilder, SassImporter, StringOptions,
37+
StringOptionsBuilder,
3738
};
3839
pub use embedded::{Embedded, Embedded as Sass};
3940
pub use error::{Exception, Result};

0 commit comments

Comments
 (0)