Commit graph

322 commits

Author SHA1 Message Date
Tiffany Bennett
0041d12b1e Prevent weird decompositions like Pa m -> A tesla 2016-08-25 22:41:16 -04:00
Tiffany Bennett
685e5149d1 Use more deterministic data structures 2016-08-25 22:32:38 -04:00
Tiffany Bennett
755c853cc7 Change lookup order for -s vs prefixes 2016-08-25 21:59:42 -04:00
Tiffany Bennett
eb185656dd Canonicalize to longer version of prefix 2016-08-25 21:57:53 -04:00
Tiffany Bennett
4049a8c922 Fix panic in query tokenizer 2016-08-25 15:54:15 -04:00
Tiffany Bennett
628d9e0ae6 Show symbols instead of internal token names 2016-08-25 15:50:15 -04:00
Tiffany Bennett
e366ec430e Remove vestigial tokens 2016-08-25 15:48:12 -04:00
Tiffany Bennett
d89fbc767f Fix typo "Carot" token 2016-08-25 15:30:03 -04:00
Tiffany Bennett
f019bc8bea Hopefully fix parser bugs for good this time
Temperature is now parsed as part of parse_mul, and an additional
regression test has been added to cover the bug that this fixed.
2016-08-25 15:27:16 -04:00
Tiffany Bennett
5d972ffce3 Add some more suffix operator tests 2016-08-24 22:05:22 -04:00
Tiffany Bennett
ebb2f5995d Make / lower precedence than *, add |
| has higher precedence than *
2016-08-24 21:56:55 -04:00
Tiffany Bennett
f4ba7f4884 Show base units in definition listings 2016-08-24 21:17:57 -04:00
Tiffany Bennett
888313e7e2 Fix parser bug with terms after a suffix operator 2016-08-24 21:07:36 -04:00
Tiffany Bennett
353f82804d Add units for query 2016-08-24 17:24:58 -04:00
Tiffany Bennett
6180935d63 Canonicalize user input units 2016-08-24 15:25:35 -04:00
Tiffany Bennett
262ee80a7c Add unit list conversions
e.g. megasecond -> hour;min;sec
2016-08-24 15:04:13 -04:00
Tiffany Bennett
3f32bc30a7 Separate expressions from top-level queries 2016-08-24 13:46:30 -04:00
Tiffany Bennett
52c19f6920 Detect reciprocal conversions better
Detect squared units and inverted units in conformance errors as well.
2016-08-24 12:56:42 -04:00
Tiffany Bennett
0a5704b039 Improve showing definitions
Recursively resolves "alias" units, actually shows value in terms of
base units.
2016-08-24 12:36:17 -04:00
Tiffany Bennett
cd05875490 Add ℃ and ℉ keywords 2016-08-24 12:25:46 -04:00
Tiffany Bennett
b2a87e8dc6 Add some basic unit tests 2016-08-22 19:20:49 -04:00
Tiffany Bennett
b4f3d02539 Fix associativity of addition and subtraction 2016-08-22 17:11:02 -04:00
Tiffany Bennett
7158fe81e1 Remove vestigial frink definition parser 2016-08-22 15:03:26 -04:00
Tiffany Bennett
2d84daf064 Add dedicated date patterns file, improve dates
There is now a dedicated lexer for date literals, which handles ISO 8601
dates (with the T) properly now.

Parsing of date patterns is handled in date.rs now, instead of in unit_defs.rs.
2016-08-22 14:53:33 -04:00
Tiffany Bennett
b75e67f86c Compile in definitions.units by default
This makes the default compilation of rink invoke the secondary
licensing clause, which results in the binaries being under the GPL.

You can still use your own definitions.units - it will only use the
built in one if it can't find another.
2016-08-22 12:03:00 -04:00
Tiffany Bennett
3181e24e29 Switch to MPL 2016-08-22 10:46:22 -04:00
Tiffany Bennett
1e26f13bee Fix unevenly spaced = in definition output 2016-08-21 22:35:21 -04:00
Tiffany Bennett
7169be2ef9 Fix regression with printing dimensionless values 2016-08-21 22:31:24 -04:00
Tiffany Bennett
ea3284f2b2 Update documentation to refer to definitions.units 2016-08-21 22:26:04 -04:00
Tiffany Bennett
4cbffea0ed Show definitions for single-unit queries 2016-08-21 22:16:28 -04:00
Tiffany Bennett
a5ddd614bc Add output of computed derived units
E.g. a calculation with a result of W^2 will show as 1 watt^2 = kg^2 m^4 / s^6
2016-08-21 21:25:49 -04:00
Tiffany Bennett
6432f0b864 Fix quantity conflicts 2016-08-21 15:28:42 -04:00
Tiffany Bennett
c9ad5d9ff0 Enable dimensionless primitive units 2016-08-21 10:55:44 -04:00
Tiffany Bennett
920fffe9ca Introduce quantity syntax to gnu units definitions 2016-08-21 10:50:26 -04:00
Tiffany Bennett
ef2362f6bc Fix precedence of / in GNU units 2016-08-21 09:53:14 -04:00
Tiffany Bennett
6aac7bab8c Run successfully off of definitions.units 2016-08-20 21:35:56 -04:00
Tiffany Bennett
5a679beba0 WIP out of order definition resolver 2016-08-20 20:03:02 -04:00
Tiffany Bennett
20e8e1adbd Impl Debug for Number 2016-08-20 20:02:38 -04:00
Tiffany Bennett
24f510f1f4 Implement gnu units parser 2016-08-20 17:00:26 -04:00
Tiffany Bennett
8db988c589 Implement tokenizer for GNU definitions.units 2016-08-20 15:11:27 -04:00
Tiffany Bennett
8d847e5930 Define subtraction of datetimes 2016-08-20 13:42:33 -04:00
Tiffany Bennett
6582ff4783 Add now for current datetime 2016-08-20 13:28:52 -04:00
Tiffany Bennett
af9d4d57ee Make prefixes optional in private message 2016-08-20 13:00:34 -04:00
Tiffany Bennett
8d635633b4 Fix display bug with square units in conversions 2016-08-19 20:24:30 -04:00
Tiffany Bennett
e1b7e3ab5e Improve output of factorization 2016-08-15 21:56:55 -04:00
Tiffany Bennett
e54edca635 Rename derivatives -> factorize; deduplicate 2016-08-15 21:24:57 -04:00
Tiffany Bennett
60b3fef18e Fix derivatives giving bad results 2016-08-15 21:04:55 -04:00
Tiffany Bennett
2e2c877bdb Add computation of unit derivatives 2016-08-15 19:39:03 -04:00
Tiffany Bennett
a85532d914 Add debug and more error checks to sandbox code 2016-08-15 14:05:54 -04:00
Tiffany Bennett
7fbf640b4b Add function call syntax 2016-08-14 23:39:40 -04:00
Tiffany Bennett
99d4f486fc Add common syntax aliases 2016-08-14 21:08:49 -04:00
Tiffany Bennett
717d8ccc2c Add Réaumur, Rømer, Delisle, and Newton scales 2016-08-14 19:12:11 -04:00
Tiffany Bennett
392431631b Fix incorrect division by zero check 2016-08-14 19:04:29 -04:00
Tiffany Bennett
aec9dad521 Implement suffixes for celsius and fahrenheit 2016-08-14 16:44:26 -04:00
Tiffany Bennett
a7e847781b Allow inline dimension definitions 2016-08-14 13:58:17 -04:00
Tiffany Bennett
56b990e968 Allow cross-origin requests to the web API 2016-08-14 12:19:37 -04:00
Tiffany Bennett
fb56fb9ecd Increase memory limit to 100MB, it was too low 2016-08-13 23:51:40 -04:00
Tiffany Bennett
f97b0f6311 Add sandboxing 2016-08-13 23:38:12 -04:00
Tiffany Bennett
f29ccdae8b Add really basic webserver 2016-08-13 21:57:46 -04:00
Tiffany Bennett
dddf6f6177 Fix hang in tokenizing for <<IMAGINARY_UNIT>> 2016-08-13 20:09:51 -04:00
Tiffany Bennett
74e4510e43 Fix hang in date literal parser 2016-08-13 19:24:28 -04:00
Tiffany Bennett
13eabf96c0 Fix hang in comment lexer 2016-08-13 18:51:26 -04:00
Tiffany Bennett
71f0950111 Add an = operator for custom units in conversions 2016-08-13 16:47:53 -04:00
Tiffany Bennett
bb1ca42174 Add optional dep on chrono-humanize 2016-08-12 20:55:22 -04:00
Tiffany Bennett
99ee3a3a46 Define DateTime +- seconds 2016-08-12 20:48:53 -04:00
Tiffany Bennett
e92464d8cd Change Dim from usize to Rc<String> 2016-08-12 20:41:53 -04:00
Tiffany Bennett
64dd83abc0 Print exact fractions in conversions 2016-08-11 22:50:55 -04:00
Tiffany Bennett
ce1474fd7b Fix copy paste error, better errors 2016-08-11 22:07:21 -04:00
Tiffany Bennett
f33b445f32 Move a bunch of logic out of eval() 2016-08-11 21:54:33 -04:00
Tiffany Bennett
ebe9efb7f7 Refactor a bunch of stuff into number.rs 2016-08-11 19:42:11 -04:00
Tiffany Bennett
4f90171276 Reorganize files 2016-08-10 23:59:22 -04:00
Tiffany Bennett
d342226d65 Rename Value to Number, allowing broader Value 2016-08-10 23:30:25 -04:00
Tiffany Bennett
05f87a3a74 Parse actual dates and make chrono datetimes 2016-08-10 23:25:47 -04:00
Tiffany Bennett
98dfcc7b2d Parse date-related things 2016-08-10 18:00:28 -04:00
Tiffany Bennett
4a142003af Multi-server support in IRC bot 2016-08-08 22:21:07 -04:00
Tiffany Bennett
fb32b61518 Implement subtraction 2016-08-07 22:46:36 -04:00
Tiffany Bennett
ec09c3a48c Update to git head of tiffany352/rust-gmp 2016-08-07 14:55:32 -04:00
Tiffany Bennett
4a182741e0 Error on root of negative number 2016-08-07 14:18:31 -04:00
Tiffany Bennett
2ba6132e3f Fix division by zero crashing 2016-08-07 13:52:20 -04:00
Tiffany Bennett
a9c9e433cf Improve conversion (->) output to show units 2016-08-07 13:45:26 -04:00
Tiffany Bennett
3307273ce7 Add btree_merge() 2016-08-07 13:44:52 -04:00
Tiffany Bennett
1b5e0a8ac9 Fix extraneous leading zero 2016-08-07 11:43:22 -04:00
Tiffany Bennett
8445e25b0b Port to cleaned up rust-gmp branch 2016-08-07 11:08:52 -04:00
Tiffany Bennett
038b85ce7a Fix consistency in output 2016-08-07 10:55:23 -04:00
Tiffany Bennett
330b12e0ab Tweak number printing to keep sizes sane 2016-08-07 10:39:55 -04:00
Tiffany Bennett
f57ee7f1d5 Don't print unreasonably large exact fractions 2016-08-07 10:17:24 -04:00
Tiffany Bennett
bab6f25a3b Change where approximation is placed 2016-08-07 10:15:24 -04:00
Tiffany Bennett
ed84a0692e Use a different approach for stringifying bignums 2016-08-06 23:50:35 -04:00
Tiffany Bennett
92dd33b4ee WIP better rendering of bignums 2016-08-06 19:53:17 -04:00
Tiffany Bennett
df7be81ff3 Fix parsing error 2016-08-06 19:52:42 -04:00
Tiffany Bennett
f324597328 Experimental GMP version 2016-08-04 23:11:58 -04:00
Tiffany Bennett
d873d5b1d2 Add some API docs 2016-08-04 12:24:55 -04:00
Tiffany Bennett
a3f5908270 Allow bot to be private messaged 2016-08-03 22:52:39 -04:00
Tiffany Bennett
d8eeaa4f04 Shorter output mode for IRC 2016-08-03 22:41:44 -04:00
Tiffany Bennett
730fa56e50 Add a simple IRC bot 2016-08-03 22:21:28 -04:00
Tiffany Bennett
25d0da1f22 Implement addition 2016-08-03 21:20:49 -04:00
Tiffany Bennett
9a97fee866 Better install + instructions 2016-08-03 14:27:36 -04:00
Tiffany Bennett
b1be70a027 Add rustyline support 2016-08-03 13:18:20 -04:00
Tiffany Bennett
953b133262 Allow the use of aliases in expressions
I found this useful while attempting to arrive at a given unit. I can do
something such as -> energy or -> power and then the conformance errors
will guide me to which terms I need to add to arrive at a solution.
2016-08-03 13:06:48 -04:00
Tiffany Bennett
75f0c84037 Rename from units-rs to rink 2016-08-03 10:39:08 -04:00
Tiffany Bennett
3e6fe01923 Add a conversion operator with conformance errors 2016-08-03 10:27:38 -04:00
Tiffany Bennett
2a241a36cf Add line numbers and fix a bug with parsing parens 2016-08-03 09:36:44 -04:00
Tiffany Bennett
0c64be7da7 Fix precedence of / 2016-08-03 09:18:03 -04:00
Tiffany Bennett
4cc6fd4e59 Handle prefixes better 2016-08-03 00:01:18 -04:00
Tiffany Bennett
ba948c7ae8 Allow roots 2016-08-02 23:44:02 -04:00
Tiffany Bennett
57b8674edc Fix parsing of functions, *, and .123 2016-08-02 23:36:39 -04:00
Tiffany Bennett
5af35c2ef8 Prettier printing of units 2016-08-02 23:08:19 -04:00
Tiffany Bennett
60380852e6 Fix bug where kg got parsed as something = kg^-1 2016-08-02 23:07:36 -04:00
Tiffany Bennett
3631c19e04 Silence remaining units.txt errors 2016-08-02 22:57:18 -04:00
Tiffany Bennett
194cb5fdf7 Parse <<IMAGINARY_UNIT>> 2016-08-02 22:50:26 -04:00
Tiffany Bennett
51a67f7984 Handle units ending with 's' 2016-08-02 22:44:00 -04:00
Tiffany Bennett
6d7daef125 Handle prefixes and unicode literals 2016-08-02 22:41:44 -04:00
Tiffany Bennett
5d861c9d32 Parse parenthesized expressions 2016-08-02 22:12:22 -04:00
Tiffany Bennett
15228a373b Fix slightly too eager parsing of aliases 2016-08-02 22:09:08 -04:00
Tiffany Bennett
c136c8a216 Rework .print() and one_line() slightly 2016-08-02 21:21:48 -04:00
Tiffany Bennett
fadab5c53b Library structure 2016-08-02 21:17:55 -04:00
Tiffany Bennett
a1d3444a72 Fix precedence of juxtaposition and fractions 2016-08-02 21:08:47 -04:00
Tiffany Bennett
c8afaaa62a Implement evaluator and do REPL unit conversions 2016-08-02 20:51:38 -04:00
Tiffany Bennett
ae8568b991 Fix remaining non-function errors 2016-08-02 16:07:33 -04:00
Tiffany Bennett
5a3576c204 Parse more stuff without errors 2016-08-02 16:01:41 -04:00
Tiffany Bennett
848bb4d4d6 Add TokenIterator, parse aliases 2016-08-02 15:52:41 -04:00
Tiffany Bennett
0b728865ec Initial commit 2016-08-02 15:33:19 -04:00