ConnorSkees
3decf3739c
refactor Integer to separate file
2020-05-20 22:46:26 -04:00
ConnorSkees
45a29c9697
refactor Number::to_integer
2020-05-20 22:40:21 -04:00
ConnorSkees
38ffb5fe31
don't eat first char of loud comment
2020-05-20 22:39:31 -04:00
ConnorSkees
3fcd0b8be4
replace todo with unreachable to make clearer that methods should not be used
2020-05-20 21:05:55 -04:00
ConnorSkees
de2173cc31
refactor parsing of toplevel comments
2020-05-20 21:01:07 -04:00
ConnorSkees
d39a45090a
separate media and unknown at rules
2020-05-20 20:13:53 -04:00
ConnorSkees
bea90060a8
minor cleanup
2020-05-20 00:14:55 -04:00
ConnorSkees
8520048b26
implement small int optimizations
...
This allows for numbers within 18 digits of precision (the vast
majority of numbers) to be represented by just 2 i64s rather than 2 heap
allocated BigInts. In the future these optimizations may become more
aggressive and granular, but for now `grass` is already more than an order of
magnitude faster than `dart-sass`.
2020-05-19 23:23:04 -04:00
ConnorSkees
cf987abb53
remove bimap in favor of ad hoc structure
2020-05-19 19:13:49 -04:00
ConnorSkees
eb7fe52074
minor cleanup
2020-05-19 18:28:18 -04:00
ConnorSkees
d88ac86bd1
consolidate builtin imports
2020-05-18 17:50:52 -04:00
ConnorSkees
f8b8025d7c
fix panic when missing colon in style
2020-05-17 11:09:21 -04:00
ConnorSkees
b58ed29fd0
add more span information
...
this resolves a lot of panics that occurred when there was no more input
2020-05-17 00:35:07 -04:00
ConnorSkees
6e7f1cc319
remove some panicking
2020-05-17 00:08:50 -04:00
ConnorSkees
4ee82e66be
refactor comparison ops to src/value/ops.rs
2020-05-16 22:45:32 -04:00
ConnorSkees
c07bb7ecce
refactor == and != order of operations
2020-05-16 22:43:13 -04:00
ConnorSkees
697ff3d12f
error messages for values beginnning with #
...
prior to this commit, error messages that occurred within idents
beginning with interpolation would be swallowed by error messages for
hex (largely, "Expected identifier.")
2020-05-16 19:25:11 -04:00
ConnorSkees
f3e7abdaba
allow units to begin with escape sequences
2020-05-16 18:54:42 -04:00
ConnorSkees
d4f67b5ed9
clippy
2020-05-16 18:38:37 -04:00
ConnorSkees
1fb6822259
rename register to declare
2020-05-16 18:01:06 -04:00
ConnorSkees
a3604491e9
consolidate implementations of hsl and hsla
2020-05-16 17:49:30 -04:00
ConnorSkees
b5a0931e45
consolidate implementations of rgb and rgba
2020-05-16 17:45:04 -04:00
ConnorSkees
2d0a9abb13
parse selectors that grow larger from interpolation
2020-05-16 17:28:30 -04:00
ConnorSkees
2db3398fe2
properly handle escaped newlines in quoted strings
2020-05-16 17:20:53 -04:00
ConnorSkees
09e6568c39
update rustfmt
2020-05-16 16:56:17 -04:00
ConnorSkees
dcdd2a1cb1
edge case in which @ include had no args AND no semicolon
2020-05-16 16:54:34 -04:00
ConnorSkees
223dade62b
Emit proper error for escape sequence overflow
...
Before this commit, escape sequences above std::char::MAX ('\u{10ffff}')
would overflow and cause a panic. This commit replaces an `unwrap` with
`ok_or` and a clearer error message. This message will likely change
in the future in order to better conform to the `dart-sass` implementation
which currently also fails to cleanly handle this overflow.
See https://github.com/kaj/rsass/pull/73
2020-05-16 16:22:33 -04:00
ConnorSkees
eea8bdbc25
allow escapes at the start of selectors
2020-05-16 16:15:11 -04:00
ConnorSkees
374e9f9eb4
correctly parse idents starting with interpolation
2020-05-14 00:10:24 -04:00
ConnorSkees
4b15b27119
refactor mixin args
2020-05-13 23:56:47 -04:00
ConnorSkees
0cbdc67f06
improve scoping with regard to function variables existing
2020-05-13 01:32:29 -04:00
ConnorSkees
5b69ad2659
special functions are always lowercased
2020-05-13 00:16:36 -04:00
ConnorSkees
2e9cd18a9d
document internal fn CallArgs::decrement
2020-05-06 12:19:03 -04:00
ConnorSkees
e5226e5cfe
eat_calc_args doesn't allocate its own string
2020-05-06 12:15:42 -04:00
ConnorSkees
edb9dde259
simplify Display on QuoteKind
2020-05-06 12:07:27 -04:00
ConnorSkees
1b774a9b91
simplify Unit::From<String>
2020-05-06 12:01:40 -04:00
ConnorSkees
01858ff543
use static strings inside unit conversion table
2020-05-06 11:55:49 -04:00
ConnorSkees
6729f24b17
Value::inspect returns cow
2020-05-06 11:50:35 -04:00
ConnorSkees
66f24c474d
fix build on wasm
2020-05-05 19:12:17 -04:00
ConnorSkees
648e101c49
add tests passing at the start of may
2020-05-05 19:01:40 -04:00
ConnorSkees
26df276266
Value::to_css_string returns a Cow<'static, str>
2020-05-05 11:08:34 -04:00
ConnorSkees
96e916e750
handle negative values in @for
2020-05-02 15:11:58 -04:00
ConnorSkees
4321a383f2
eat whitespace after silent comments
2020-05-02 12:49:42 -04:00
ConnorSkees
07f12b6fb4
remove unnecessary logical not
2020-05-02 12:31:53 -04:00
ConnorSkees
2e8126af13
prefer match over if let .. else ..
2020-05-02 12:25:53 -04:00
ConnorSkees
3ca48702a1
interpolated_ident_body doesn't allocate its own string
2020-05-02 11:47:49 -04:00
ConnorSkees
cf0cb01141
further optimize formatting of numbers
...
grass differs from rsass in that all numbers are bigints. this makes our
fomatting of numbers 6x slower than rsass and barely faster than
node-sass. ideally in the future, we would just use plain float
formatting. i've learned that dart-sass no longer configures precision as a cli
flag, so there is potentially some manual loop unrolling or
optimizations we could make knowing that all numbers must be a max of 10
digits. the next release of num_rational should contain an
implementation of to_f64() for BigRational, so that may solve our
problems.
2020-05-02 10:36:23 -04:00
ConnorSkees
8ff334f26a
we dont need to check that output buffer is valid utf8
2020-05-01 19:24:26 -04:00
ConnorSkees
fe92c5ed63
simplify lexing of \f and \r
2020-05-01 19:16:57 -04:00
ConnorSkees
be6ee76486
-I takes 1 arg and --precision takes a value
2020-05-01 16:06:22 -04:00