Commit Graph
48 Commits
Author SHA1 Message Date
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