Partial refactor to support substitutions in replacement strings as per spec #60
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This is a partial refactor to bring uap-python closer to the specification in uap-core.
It supports regular expression backreferences for replacements for all parsers - uap-core has started to use these for UAParser and OSParser instances, and only DeviceParser currently supports. (note: this was true of the regexes I imported at the time - it appears uap-core had done some cleanup and this is somewhat better now)
I believe the spec (https://github.com/ua-parser/uap-core/blob/master/docs/specification.md)
does indicate that all matches from $1 to $9 should be honored for every
replacement.
It additionally allows for a v3 replacement for UserAgent.
Refactored the class hierarchy so that it's sort of DRY, and moved MultiReplace to a module level function because it doesn't use self.
Looking forward to any feedback!