54 Commits

Author SHA1 Message Date
ConnorSkees
283a2097ff rename Value::Ident to Value::String 2020-05-22 14:35:41 -04:00
ConnorSkees
969726eb30 Revert string interning
There existed issues related to multithreaded tests that are difficult
to resolve. In the future interning may be reimplemented but in a more
limited capacity.

The motivation behind interning *values* was that it appeared checking
for named colors was responsible for much of the time lost when parsing
unquoted strings. If interning were to be reimplemented, it may make
sense to limit it solely to identifiers and style properties.
2020-05-22 14:20:31 -04:00
ConnorSkees
b15740976c remove superfluous allocations when resolving idents 2020-05-22 13:49:19 -04:00
ConnorSkees
9a6c8ce019 add string interning
this seems to improve performance by ~20% as well as significantly
decrease memory usage
2020-05-21 22:46:40 -04:00
ConnorSkees
d88ac86bd1 consolidate builtin imports 2020-05-18 17:50:52 -04:00
ConnorSkees
c07bb7ecce refactor == and != order of operations 2020-05-16 22:43:13 -04:00
ConnorSkees
1fb6822259 rename register to declare 2020-05-16 18:01:06 -04:00
ConnorSkees
0aed492123 move builtin fns to outer scope to reduce nesting 2020-04-30 19:36:34 -04:00
ConnorSkees
2eef3e9f6a store &'static str rather than String for builtin fn names 2020-04-30 15:00:57 -04:00
ConnorSkees
f2322dda4d simplify declaration of list functions 2020-04-30 14:47:07 -04:00
ConnorSkees
680790c49a replace max_args! macro with builtin method 2020-04-22 06:17:52 -04:00
ConnorSkees
3805eaab2b clippy 2020-04-21 18:22:26 -04:00
ConnorSkees
409fa3a1dd eval args to zip 2020-04-13 12:28:40 -04:00
ConnorSkees
62f9f7da4f integrate error handling with codemap 2020-04-12 19:37:12 -04:00
ConnorSkees
b7be1705a2 args and default values are lazily evaluated 2020-04-04 18:17:04 -04:00
ConnorSkees
81c85a6f86 handle builtin functions in get-function 2020-04-03 23:49:44 -04:00
ConnorSkees
faa8951ee4 remove superfluous mut 2020-04-03 16:47:55 -04:00
ConnorSkees
24176bb1f0 initial implementation of zip 2020-04-03 15:54:59 -04:00
ConnorSkees
0f5ebdebf9 add todo note about index and unwrap 2020-04-03 14:38:22 -04:00
ConnorSkees
2d7f69e3da equality does unit conversions 2020-04-03 14:34:59 -04:00
ConnorSkees
f2bb6097dc index() with maps 2020-04-03 13:43:34 -04:00
ConnorSkees
f86d613374 better handling of single length lists in join 2020-04-02 18:43:48 -04:00
ConnorSkees
e7008cd7e8 handle non list separator in join() 2020-04-02 18:32:09 -04:00
ConnorSkees
31a19b5ecb handle maps in join() 2020-04-02 18:23:57 -04:00
ConnorSkees
a9230b7877 properly emit separator in join when both are under 2 length 2020-04-02 18:19:54 -04:00
ConnorSkees
dbf699a991 handle empty list separators in join 2020-04-02 18:16:59 -04:00
ConnorSkees
8718673519 bracketed parameter in join() 2020-04-02 18:04:44 -04:00
ConnorSkees
c7ff047e81 brackets in join 2020-04-02 17:44:37 -04:00
ConnorSkees
408fe6ff6b brackets in set-nth 2020-04-02 15:31:59 -04:00
ConnorSkees
c7fdf8eef3 maps in set-nth() 2020-04-02 15:28:35 -04:00
ConnorSkees
cba2b12771 handle maps in nth() 2020-04-02 15:22:18 -04:00
ConnorSkees
225894d0e9 handle brackets in append() 2020-04-02 15:12:13 -04:00
ConnorSkees
72bc9a46e3 implement builtin function index 2020-04-02 14:22:38 -04:00
ConnorSkees
8e3e23c6cd builtin functions take args by value 2020-04-02 13:45:14 -04:00
ConnorSkees
23f7301a25 implement length for maps 2020-03-30 16:01:44 -04:00
ConnorSkees
c1ee84b6fc implement builtin function is-bracketed 2020-03-23 23:08:01 -04:00
ConnorSkees
981bf27cb8 properly parse and emit bracketed lists 2020-03-23 19:56:24 -04:00
ConnorSkees
0be8828bf0 make better use of num traits 2020-03-22 22:28:54 -04:00
ConnorSkees
415b19fc47 implement @content inside mixins 2020-03-22 15:08:13 -04:00
ConnorSkees
29011f88bb Implement builtin function join 2020-03-22 14:04:16 -04:00
ConnorSkees
b0aff089aa implement builtin function append() 2020-03-20 19:50:23 -04:00
ConnorSkees
4fdac4c5f1 implement builtin function set-nth() 2020-03-20 19:27:26 -04:00
ConnorSkees
5ce2515fb6 handle non-list to nth() 2020-03-20 12:36:31 -04:00
ConnorSkees
284bc8ea6d Implement builtin function list-separator() 2020-03-20 12:32:33 -04:00
ConnorSkees
dd1c1e5b06 implement builtin function nth 2020-03-20 12:09:08 -04:00
ConnorSkees
ef480ad1f8 length() max args check 2020-03-20 10:03:54 -04:00
ConnorSkees
dcb712e3d4 Refactor unit conversions into separate file 2020-03-19 16:24:31 -04:00
ConnorSkees
51585235c3 Remove decl! macro
This lets rustfmt work and gives better autocomplete and error messages
inside builtin functions.
2020-03-16 10:35:38 -04:00
ConnorSkees
276134eb93 prefer hashmap over btreemap where ordering is unimportant 2020-03-03 19:51:02 -05:00
ConnorSkees
23b90aa97e Use remove() rather than .get() to avoid a clone 2020-02-16 22:04:54 -05:00