mirror of
https://github.com/opencloud-eu/opencloud.git
synced 2025-12-30 17:00:57 -06:00
Bumps [github.com/open-policy-agent/opa](https://github.com/open-policy-agent/opa) from 0.51.0 to 0.59.0. - [Release notes](https://github.com/open-policy-agent/opa/releases) - [Changelog](https://github.com/open-policy-agent/opa/blob/main/CHANGELOG.md) - [Commits](https://github.com/open-policy-agent/opa/compare/v0.51.0...v0.59.0) --- updated-dependencies: - dependency-name: github.com/open-policy-agent/opa dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com>
glob-intersection
Go package to check if the set of non-empty strings matched by the intersection of two regexp-style globs is non-empty.
Examples
gintersect.NonEmpty("a.a.", ".b.b")istruebecause both globs match the stringabab.gintersect.NonEmpty("[a-z]+", "[0-9]*)isfalsebecause there are no non-empty strings that both globs match.
Limitations
- It is assumed that all input is rooted at the beginning and the end, i.e, starts and ends with the regexp symbols
^and$respectively. This is done because any non-rooted expressions will always match a non-empty set of non-empty strings. - The only special symbols are:
.for any character.+for 1 or more of the preceding expression.*for 0 or more of the preceding expression.[and]to define regexp-style character classes.-to specify Unicode ranges inside character class definitions.\escapes any special symbol, including itself.
Complexity
Complexity is exponential in the number of flags (+ or *) present in the glob with the smaller flag count.
Benchmarks (see non_empty_bench_test.go) reveal that inputs where one of the globs has <= 10 flags, and both globs have 100s of characters, will run in less than a nanosecond. This should be ok for most use cases.
Acknowledgements
This StackOverflow discussion for fleshing out the logic.