Oliver Hamlet
04a92f9968
Implement the Error trait on the Error enum
2018-10-06 16:04:57 +01:00
Oliver Hamlet
594c8d19af
Don't expose third-party dependencies in API
...
Also implement FromStr on Expression instead of the parse() function.
2018-10-06 15:08:26 +01:00
Oliver Hamlet
48ec04a95f
Only cache some function results
...
Some functions evaluate more quickly without caching than with caching,
because they use data that is cached in a separate read-only cache
that's faster to check, and don't do anything complex with that data.
2018-10-06 13:38:55 +01:00
Oliver Hamlet
f6f51e2ee6
Add benchmarks to help optimise result caching
2018-10-06 13:28:03 +01:00
Oliver Hamlet
3404924752
Cache Function evaluation results, and use cached results
2018-10-06 11:45:57 +01:00
Oliver Hamlet
11a92511c1
Update readme
2018-10-06 10:42:18 +01:00
Oliver Hamlet
2c8473435a
Implement Clone and Default traits on Expression and types it depends on
2018-10-06 10:39:17 +01:00
Oliver Hamlet
77c58c965f
Implement Display trait on Expression and all types it depends on
2018-10-06 10:36:39 +01:00
Oliver Hamlet
5d9441623a
Derive PartialEq, Eq for Expression, CompoundCondition and Condition
2018-10-06 10:29:50 +01:00
Oliver Hamlet
3bf009e579
Implement PartialEq, Eq for Function
2018-10-06 10:29:50 +01:00
Oliver Hamlet
9f6e941955
Add Travis and AppVeyor config
2018-10-05 20:30:50 +01:00
Oliver Hamlet
ce85be1201
Add MIT license
2018-10-05 20:21:14 +01:00
Oliver Hamlet
360058725a
Update readme
2018-10-05 19:54:12 +01:00
Oliver Hamlet
be313c40cb
Support reading file version from Windows executables
2018-10-05 19:52:51 +01:00
Oliver Hamlet
2def44d3aa
Rename release_numbers field to release_ids
...
It's more accurate as they can be non-numeric.
2018-10-05 17:13:31 +01:00
Oliver Hamlet
a3f8d1423c
Pad release numbers to equal length when comparing
2018-10-05 17:13:31 +01:00
Oliver Hamlet
ab2726d5be
Fix a few incorrect test assertions
2018-10-05 17:13:31 +01:00
Oliver Hamlet
3b1f3592b3
Support extended version identifier separators
...
Space, colon and underscore should separate release and pre-release identifiers.
2018-10-05 17:13:31 +01:00
Oliver Hamlet
45ab848c1f
Add tests for non-semver version string comparisons
...
Almost at parity with pseudosem, only identifier padding and extended
separators to go.
2018-10-05 17:13:30 +01:00
Oliver Hamlet
98291fdc23
Implement semver version string comparison
2018-10-05 17:13:30 +01:00
Oliver Hamlet
8cb69dfa86
Add lexicographical evaluation of version conditions
...
Versions aren't yet read from executables, and evaluation isn't
pseudosem-compatible.
2018-10-05 17:12:38 +01:00
Oliver Hamlet
3acf2ffea1
Refactor game-specific code and add tests for it
2018-10-04 22:16:30 +01:00
Oliver Hamlet
107f61868c
Silence name warnings
2018-10-04 22:16:29 +01:00
Oliver Hamlet
3e1c2084e5
Add evaluation of checksum() conditions
2018-10-03 19:21:45 +01:00
Oliver Hamlet
2e57585787
Add evaluation of active() and many_active() conditions
2018-10-03 18:31:26 +01:00
Oliver Hamlet
8526ca5a83
Create case-insensitive regexes in tests
2018-10-03 18:30:11 +01:00
Oliver Hamlet
1d396911a5
Fix formatting
2018-10-03 18:21:07 +01:00
Oliver Hamlet
1881348db3
Create Regex objects to match case insensitively
2018-10-03 18:17:35 +01:00
Oliver Hamlet
0db0930d31
Add evaluation of many() conditions
2018-10-03 17:15:35 +01:00
Oliver Hamlet
72be3f8172
Add evaulation of file regex conditions
2018-10-03 17:15:35 +01:00
Oliver Hamlet
291d7a7a69
Move check to see if path is in game directory to parsing time
2018-10-03 17:15:35 +01:00
Oliver Hamlet
fe7b0514fb
Split regex arguments that contain parent paths at parsing time
...
This will simplify evaluation and catches syntax errors earlier, and
matches the current LOOT implementation's parse-only behaviour more
closely, though that implementation also checks that the parent path is
valid regex, which is pointless.
2018-10-03 17:15:35 +01:00
Oliver Hamlet
b9448e2072
Implement file path function evaluation
2018-10-03 17:15:34 +01:00
Oliver Hamlet
11fef635d3
Split function parsing and evaluation code into separate files
2018-10-03 17:15:34 +01:00
Oliver Hamlet
28af316ecc
Add more test cases (unimplemented)
2018-10-03 17:15:34 +01:00
Oliver Hamlet
f51b06d25c
Add parsing of version and checksum conditions
2018-10-03 17:15:34 +01:00
Oliver Hamlet
abdc841c15
Add parsing of file regex, active regex, many and many_active functions
2018-10-03 17:15:34 +01:00
Oliver Hamlet
dfb41233bd
Update nom to v4 and regex to v1
2018-10-03 17:15:33 +01:00
Oliver Hamlet
53c632fd75
Refactoring, add active(file) function parsing
2018-10-03 17:15:33 +01:00
Oliver Hamlet
dbb1a4987a
Implement parsing for everything down to Function
2018-10-03 17:15:33 +01:00
Oliver Hamlet
b3435122dd
Initial commit of experimental LOOT condition parser
...
Some FilePath functionality is missing, not all tests pass, and parsing
is incorrect for all structs.
2018-10-03 17:15:33 +01:00