feat: add --contains flag to filter words by required letters
Adds a new --contains argument that only includes words containing all specified letters, complementing the existing --exclude functionality. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
@@ -22,6 +22,11 @@ def main() -> int:
|
|||||||
metavar="LETTERS",
|
metavar="LETTERS",
|
||||||
help="Exclude words containing any of these letters (case-insensitive)",
|
help="Exclude words containing any of these letters (case-insensitive)",
|
||||||
)
|
)
|
||||||
|
parser.add_argument(
|
||||||
|
"--contains",
|
||||||
|
metavar="LETTERS",
|
||||||
|
help="Only include words that contain all of these letters (case-insensitive)",
|
||||||
|
)
|
||||||
parser.add_argument(
|
parser.add_argument(
|
||||||
"--mask",
|
"--mask",
|
||||||
metavar="PATTERN",
|
metavar="PATTERN",
|
||||||
@@ -50,6 +55,7 @@ def main() -> int:
|
|||||||
|
|
||||||
only_set = set(args.only.lower()) if args.only else None
|
only_set = set(args.only.lower()) if args.only else None
|
||||||
exclude_set = set(args.exclude.lower()) if args.exclude else None
|
exclude_set = set(args.exclude.lower()) if args.exclude else None
|
||||||
|
contains_set = set(args.contains.lower()) if args.contains else None
|
||||||
|
|
||||||
# Prepare matchers
|
# Prepare matchers
|
||||||
# Validate and normalize mask
|
# Validate and normalize mask
|
||||||
@@ -90,6 +96,8 @@ def main() -> int:
|
|||||||
return False
|
return False
|
||||||
if exclude_set is not None and (set(word.lower()) & exclude_set):
|
if exclude_set is not None and (set(word.lower()) & exclude_set):
|
||||||
return False
|
return False
|
||||||
|
if contains_set is not None and not (contains_set <= set(word.lower())):
|
||||||
|
return False
|
||||||
if mask_positions is not None:
|
if mask_positions is not None:
|
||||||
wl = word.lower()
|
wl = word.lower()
|
||||||
for i, ch in enumerate(mask_positions):
|
for i, ch in enumerate(mask_positions):
|
||||||
|
|||||||
Reference in New Issue
Block a user