170 Commits

Author SHA1 Message Date
ConnorSkees
08f7dba00d implement integer division to an extent 2020-03-31 02:31:14 -04:00
ConnorSkees
8a600a4f07 implement number minus ident 2020-03-31 01:52:52 -04:00
ConnorSkees
90b940fd7d properly omit negative for values that round to zero 2020-03-31 01:38:57 -04:00
ConnorSkees
e5b7043480 do not print null values inside list 2020-03-31 00:27:00 -04:00
ConnorSkees
beff60ad31 clippy 2020-03-30 17:06:23 -04:00
ConnorSkees
4b1dc39705 handle map-merge key overlaps 2020-03-30 16:33:43 -04:00
ConnorSkees
23f7301a25 implement length for maps 2020-03-30 16:01:44 -04:00
ConnorSkees
eb478b632d initial implementation of maps 2020-03-30 15:44:06 -04:00
ConnorSkees
2ce639e9be implement > < >= <= 2020-03-30 10:42:13 -04:00
ConnorSkees
57a704172f properly handle silent comments in styles 2020-03-30 02:21:41 -04:00
ConnorSkees
ae0ce9894c variables do not include interpolation 2020-03-30 01:48:37 -04:00
ConnorSkees
9c690140ec allow non-ascii characters in idents 2020-03-30 01:24:50 -04:00
ConnorSkees
1e5dc99793 Revert "properly handle unicode characters in identifiers"
This reverts commit dea0610f9b12a8531ae63eee993c0c6d6546bb72.

This was not properly tested, and results in a number of breakages.
2020-03-30 01:00:17 -04:00
ConnorSkees
dea0610f9b properly handle unicode characters in identifiers 2020-03-30 00:55:14 -04:00
ConnorSkees
6608fe3f2f allow negative numbers multiplication 2020-03-30 00:38:46 -04:00
ConnorSkees
5bbf10b05f allow idents to begin with hyphen 2020-03-29 22:17:56 -04:00
ConnorSkees
07505399da remove the lexer 2020-03-29 19:42:27 -04:00
ConnorSkees
f15ab57573 refactor @if/@else if/@else 2020-03-24 22:13:38 -04:00
ConnorSkees
6d2d9bcb4a escape all symbols and whitespace 2020-03-24 13:36:39 -04:00
ConnorSkees
c29088b558 allow trailing commas 2020-03-24 00:17:18 -04:00
ConnorSkees
0ded248e1e allow comma separated bracketed list in function args 2020-03-23 23:52:15 -04:00
ConnorSkees
430747d06b handle empty bracketed lists 2020-03-23 23:19:13 -04:00
ConnorSkees
dc0d7c4e89 properly emit more variants of character escape 2020-03-23 22:26:52 -04:00
ConnorSkees
981bf27cb8 properly parse and emit bracketed lists 2020-03-23 19:56:24 -04:00
ConnorSkees
4b529a1236 proper error messages in (mixin|function)-exists 2020-03-23 15:22:16 -04:00
ConnorSkees
e6f2c26bc6 type-of(!important) returns 'string' 2020-03-23 15:13:19 -04:00
ConnorSkees
f4f9a79b2b handle large integers in builtin string functions 2020-03-23 14:03:47 -04:00
ConnorSkees
98a99684b7 refactor quote normalization 2020-03-23 12:12:08 -04:00
ConnorSkees
0be8828bf0 make better use of num traits 2020-03-22 22:28:54 -04:00
ConnorSkees
0e0b01f595 unquoted, empty strings are null 2020-03-22 18:36:21 -04:00
ConnorSkees
f9730b9ec5 HACK: somewhat handle unicode escapes 2020-03-22 13:45:41 -04:00
ConnorSkees
90fb2e6112 reduce usage of std::process::exit 2020-03-21 14:33:27 -04:00
ConnorSkees
7d12bc8142 implement unary ops + and - 2020-03-21 12:14:02 -04:00
ConnorSkees
e746bc7bda Allow utf-8 characters in idents 2020-03-20 23:53:26 -04:00
ConnorSkees
a64dcaf394 properly bubble up parsing errors 2020-03-20 23:34:23 -04:00
ConnorSkees
1a481000b6 better error message for missing closing paren 2020-03-20 23:21:40 -04:00
ConnorSkees
87462490ac Handle empty lists () 2020-03-20 20:01:57 -04:00
ConnorSkees
dd1c1e5b06 implement builtin function nth 2020-03-20 12:09:08 -04:00
ConnorSkees
fb84361fae parse comma separated lists (somewhat) properly 2020-03-20 10:59:16 -04:00
ConnorSkees
8a811dae9e Properly parse spaced lists 2020-03-19 21:40:36 -04:00
ConnorSkees
dcb712e3d4 Refactor unit conversions into separate file 2020-03-19 16:24:31 -04:00
ConnorSkees
0ad5e554b3 Add and subtract lists 2020-03-19 14:20:16 -04:00
ConnorSkees
d470074611 Improve chaining ops 2020-03-19 08:36:11 -04:00
ConnorSkees
9bbdf762ce clippy 2020-03-18 20:11:14 -04:00
ConnorSkees
103781e420 ident equality ignores quotekind 2020-03-18 17:23:38 -04:00
ConnorSkees
9630343676 Implement modulo 2020-03-18 11:39:58 -04:00
ConnorSkees
0fe97993f4 Properly handle trailing zeroes
This fixes an edge case in which there were trailing zeros that resulted
from the decimal having a non-zero part outside the precision range.

E.g. if precision were 10, `0.00000000000000000001` would be printed as `0.0000000000`.

This issue occured often when doing unit conversions between cm and in
(and similarly between dpcm and dpi).
2020-03-18 10:34:17 -04:00
ConnorSkees
efaa33088b Implement unit conversions in numeric subtraction 2020-03-18 10:14:35 -04:00
ConnorSkees
b3b5163113 Implement unit conversions in numeric addition 2020-03-18 10:08:40 -04:00
ConnorSkees
061694bd63 Initial implementation of !global (some issues remain) 2020-03-17 20:13:53 -04:00