Commit graph

647 commits

Author SHA1 Message Date
Delan Azabani
5675b1841e add prolactin’s biological activity “density” (µg/mIU)
This commit defines international units (IU) of biological activity,
as well as the biological activity “density” of the current reference
preparation of prolactin, to make it easier to convert prolactin
levels between ng/mL (as preferred in the US) and mIU/L (as preferred
in Australia).

I can’t find a formal term for the relationship between biological
activity and mass in reference preparations, so I’ve chosen “density”
by analogy with linear_density, area_density, etc. For example:

> 256 mIU/L * biological_activity_density of prolactin -> ng/mL
4096/335, approx. 12.22686 nanogram / milliliter (density)
2019-11-29 00:31:21 +11:00
Delan Azabani
0fd2c9d9ef add some steroid hormones to definitions.units
This commit defines some of the more important sex hormones and their
precursors, to make it easier to convert their levels between density
(as preferred in the US) and molar_concentration (as preferred in
Australia) without remembering any formulas. For example:

> 1212 pmol/L * molar_mass of oestradiol -> pg/mL
approx. 330.1334 picogram / milliliter (density)
> 5.9 nmol/L * molar_mass of progesterone -> ng/mL
approx. 1.855361 nanogram / milliliter (density)
> 0.5 nmol/L * molar_mass of testosterone -> ng/dL
approx. 14.42150 nanogram / deciliter (density)
2019-11-28 19:30:16 +11:00
Tiffany Bennett
70e309ce48
Update readme
Add a couple new badges, and update the web interface section
2019-10-30 20:59:27 -07:00
Tiffany Bennett
87495995e1
Merge pull request #43 from tiffany352/unicode-minus-sign
Parse U+2212 as minus sign (Fixes #33)
2019-10-30 20:39:21 -07:00
Tiffany Bennett
95713ba1b8 Parse U+2212 as minus sign (Fixes #33) 2019-10-30 20:26:01 -07:00
Tiffany Bennett
1af86eeaf8
Merge pull request #42 from tiffany352/use-reqwest
Replace hyper with reqwest
2019-10-30 20:18:40 -07:00
Tiffany Bennett
9029d8478e Replace hyper with reqwest 2019-10-30 19:49:32 -07:00
Tiffany Bennett
73d2b92a07
Merge pull request #41 from Aaron1011/fix/into-iter
Use `slice::iter` instead of `into_iter` to avoid future breakage
2019-10-30 13:14:32 -07:00
Aaron Hill
58e2bab9aa
Use slice::iter instead of into_iter to avoid future breakage
`an_array.into_iter()` currently just works because of the autoref
feature, which then calls `<[T] as IntoIterator>::into_iter`. But
in the future, arrays will implement `IntoIterator`, too. In order
to avoid problems in the future, the call is replaced by `iter()`
which is shorter and more explicit.
2019-10-30 15:57:35 -04:00
Tiffany Bennett
35bea0fe19 Remove unnecessary mut 2019-10-19 20:31:42 -07:00
Colin Benner
78331c36a8 Add parse_radix to handle near-identical cases
In `parse_term`, remove some code duplication by moving code common to
parsing hexadecimal, octal and binary numbers into its own
function.
2019-10-19 20:30:06 -07:00
Colin Benner
b035f08d49 Move Name, Resolver out of load::load 2019-10-19 20:28:00 -07:00
Colin Benner
bf46daa227 Simplify parse_term, eliminate is_func
Try to parse a function, or attribute, then match the result.  This
eliminates the two-step approach: check whether we have a function, then
parse as a function.
2019-10-19 20:28:00 -07:00
Colin Benner
8bcd12252a Rename is_attr to attr_from_name
A function returning an `Option` should not have a name beginning with
`is_`.
2019-10-19 20:28:00 -07:00
Colin Benner
124a41773a Move common subexpression out of match 2019-10-19 20:28:00 -07:00
Colin Benner
a7c746f48a Simplify match statement using try!
This is simpler than manually handling an error in each component of the
triple we match on.  In addition, we get to drop a bunch of `Ok`s.
2019-10-19 20:28:00 -07:00
Colin Benner
f805f5d180 Represent function using an enum
We only support a limited set of function, so we may as well put them in an
enum instead of passing around strings.  This allows us to simplify match
statements, eliminating the case of unsupported functions.
2019-10-19 20:28:00 -07:00
Colin Benner
1ce838983d Simplify some matches 2019-10-19 20:28:00 -07:00
Colin Benner
31897c48c1 Derive Default for NumberParts
No need to write this out explicitly.
2019-10-19 20:27:59 -07:00
Colin Benner
9c5818b2f2 Address more clippy carnings 2019-10-19 20:27:59 -07:00
Colin Benner
1e87d5a54f Get content from Name with one method
Get the content of whatever variant by calling `Name::name()`.
2019-10-19 20:27:59 -07:00
Colin Benner
9c74a38b4d Simplify Resolver::lookup
Move duplicate code into a closure.  Simplify inner using `.any()`.
Eliminate conditionals using logical operators.
2019-10-19 20:27:59 -07:00
Colin Benner
0b289c8966 Be more explicit in Num::to_rational
Rather than checking whether `x == ai`, we simply check whether their
difference, of which we want to take the reciprocal in the next step, is
zero.
2019-10-19 20:27:59 -07:00
Colin Benner
e68e4f6167 Use unreachable!() instead of panic!()
This seems to capture the intended meaning more clearly.
2019-10-19 20:27:59 -07:00
Colin Benner
5a0189ff77 Use the dirs crate to find the config dir 2019-10-19 20:27:59 -07:00
Colin Benner
62aec5a8a0 Handle division by zero with a macro
Eliminate repetitive code by using a simple macro all over
`substance.rs`.
2019-10-19 20:27:59 -07:00
Colin Benner
02f13cc7cb Merge if statement with surrounding else block 2019-10-19 20:27:59 -07:00
Colin Benner
0e65b19e56 Simplify Context::describe_unit
Move duplicate code into a closure.
2019-10-19 20:27:59 -07:00
Colin Benner
612ca08306 Use is_empty
Check whether a collections is empty by using the `.is_empty` method
instead of comparing `.len()` to 0.
2019-10-19 20:27:59 -07:00
Colin Benner
72864485b7 Simplify Context::{lookup, canonicalize} 2019-10-19 20:27:59 -07:00
Colin Benner
8247a2415c Fix lots of clippy warnings 2019-10-19 20:27:59 -07:00
Colin Benner
da9313f6fe Simplify match in text_query::is_func 2019-10-19 20:25:56 -07:00
Colin Benner
b042663807 Eliminate temperature! in eval::eval
Like the last, commit, replace the macro calls by putting the macro
arguments into variables and putting the macro body after that.

As we need the exact same match statement in both cases, it is
implemented as a method on `Degree`.
2019-10-19 20:25:56 -07:00
Colin Benner
249c9941af Eliminate macro in eval::eval_outer
We can get rid of `temperature!` if we just put the macro arguments into
variables and put the macro body below that.
2019-10-19 20:25:56 -07:00
Colin Benner
232f35c108 Use Display for Degree in token::describe 2019-10-19 20:25:56 -07:00
Colin Benner
0581d8f247 Simplify temperature handling
Use a single enum, `Degree`, wherever a temperature scale is referenced.
That way, we can a simplify `Conversion` and `Token`, as well as some
matches.
2019-10-19 20:25:56 -07:00
Tiffany Bennett
79aebd9a17 Fix warnings 2019-10-19 20:19:03 -07:00
Tiffany Bennett
294adcd6a3 Release v0.4.4 2019-01-15 20:29:03 -08:00
Tiffany Bennett
a7d76f922d Fix warnings about AsciiExt 2019-01-15 20:28:32 -08:00
Tiffany Bennett
0755cb5f9d Update rust-gmp 2019-01-15 20:23:37 -08:00
Tiffany Bennett
f6e4a9a00a Remove changelog from readme (use tag descriptions instead) 2019-01-15 19:26:03 -08:00
Tiffany Bennett
832d03d48f
Merge pull request #37 from yzhs/flags
Handle command line arguments, addresses #29
2018-11-20 19:23:22 -08:00
Colin Benner
60e644d17d Fix pattern in kcov invocation
The old pattern would ignore test executables whose file name ends with
a 'd'.  This should not happen any longer
2018-11-20 22:26:35 +01:00
Colin Benner
5beb4ba987 Handle file not found gracefully
If the input file provided on the command line cannot be opened, reprt
an error, rather than unwrapping.
2018-11-20 07:13:13 +01:00
Colin Benner
e8dd3a0b9e Also support -V and --version 2018-11-20 07:13:02 +01:00
Colin Benner
94e7bd00b1 Support -h and --help
Print a usage message when called with `-h` or `--help`, or when called
with the wrong number of arguments.
2018-11-20 07:11:57 +01:00
Tiffany Bennett
002a87d88b
Add Travis & Codecov badges to readme 2018-11-15 21:02:58 -08:00
Tiffany Bennett
8f7642efe9
Merge pull request #36 from yzhs/add-tests
Tests
2018-11-15 20:30:49 -08:00
Colin Benner
4a41da18c8 Fix typo 2018-11-15 22:32:36 +01:00
Colin Benner
5f37f1506c Test chemical formulas containing larger numbers 2018-11-15 22:32:36 +01:00