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