Oliver Hamlet
80676f72b4
Update versions and changelog for 1.1.0
2018-10-23 21:12:41 +01:00
Oliver Hamlet
0c0e8a6639
Add support for product_version() conditions
...
This checks the product version field of executables instead of their
file version field.
2018-10-23 21:12:40 +01:00
Oliver Hamlet
07737cebe8
Add ability to read executable product version field
2018-10-23 21:12:40 +01:00
Oliver Hamlet
5512581c0f
Move test resources into subdirectory
2018-10-23 21:12:40 +01:00
Oliver Hamlet
b6a9066eaa
Update readme
2018-10-21 14:42:50 +01:00
Oliver Hamlet
c0bea60673
Add FFI wrapper crate
2018-10-20 21:13:33 +01:00
Oliver Hamlet
0f805d80ea
Allow condition cache to be cleared
2018-10-20 21:12:55 +01:00
Oliver Hamlet
efe01a060d
Don't try to read executable versions for plugins with no stored version
2018-10-20 21:12:54 +01:00
Oliver Hamlet
d6d968c7b5
Update readme
2018-10-07 10:52:09 +01:00
Oliver Hamlet
180b728728
Improve parsing error messages
...
Nom's custom error type handling isn't great, requiring a lot of
fix_error! macro calls, and even then the complete! macro hardcodes the
error type it expects as u32, so it can't be used and instead the
CompleteStr type needs to be used everywhere.
2018-10-07 10:45:24 +01:00
Oliver Hamlet
d28c194c9d
Add typedef to abstract away custom parsing error type
2018-10-07 10:45:24 +01:00
Oliver Hamlet
10d078b843
Improve content of I/O and PE parsing errors
2018-10-07 10:45:24 +01:00
Oliver Hamlet
2bb3d8b26f
Take advantage of match ergonomics
2018-10-06 16:26:18 +01:00
Oliver Hamlet
d3f4169d76
Update readme
2018-10-06 16:04:57 +01:00
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