Initial upload: regex-humanizer-cli with CI/CD workflow
This commit is contained in:
213
README.md
213
README.md
@@ -1,3 +1,212 @@
|
||||
# regex-humanizer-cli
|
||||
# Regex Humanizer CLI
|
||||
|
||||
A CLI tool that converts complex regex patterns to human-readable English descriptions and generates comprehensive test cases
|
||||
A CLI tool that converts complex regex patterns to human-readable English descriptions and automatically generates comprehensive test cases. Developers often struggle with cryptic regex patterns - this tool parses the regex and outputs a clear explanation of what each component does, plus generates sample inputs that match and don't match the pattern.
|
||||
|
||||
## Features
|
||||
|
||||
- **Regex to English Translation**: Convert any regex pattern to plain English
|
||||
- **Auto-Generate Test Cases**: Generate matching and non-matching test strings
|
||||
- **Multi-Flavor Support**: PCRE, JavaScript, and Python regex flavors
|
||||
- **Interactive Mode**: REPL-style interface for exploring regex patterns
|
||||
- **Pattern Validation**: Check if patterns are valid for a specific flavor
|
||||
- **Flavor Conversion**: Convert patterns between different regex flavors
|
||||
|
||||
## Installation
|
||||
|
||||
```bash
|
||||
pip install regex-humanizer-cli
|
||||
```
|
||||
|
||||
Or from source:
|
||||
|
||||
```bash
|
||||
pip install -e .
|
||||
```
|
||||
|
||||
## Quick Start
|
||||
|
||||
Explain a regex pattern:
|
||||
|
||||
```bash
|
||||
regex-humanizer explain "\d{3}-\d{4}"
|
||||
```
|
||||
|
||||
Generate test cases:
|
||||
|
||||
```bash
|
||||
regex-humanizer test "\d{3}-\d{4}" --count 5
|
||||
```
|
||||
|
||||
Start interactive mode:
|
||||
|
||||
```bash
|
||||
regex-humanizer interactive
|
||||
```
|
||||
|
||||
## Commands
|
||||
|
||||
### explain
|
||||
|
||||
Explain a regex pattern in human-readable English:
|
||||
|
||||
```bash
|
||||
regex-humanizer explain "^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$"
|
||||
```
|
||||
|
||||
Options:
|
||||
- `--output, -o`: Output format (text, json)
|
||||
- `--verbose, -v`: Show detailed breakdown
|
||||
- `--flavor, -f`: Regex flavor (pcre, javascript, python)
|
||||
|
||||
### test
|
||||
|
||||
Generate test cases for a regex pattern:
|
||||
|
||||
```bash
|
||||
regex-humanizer test "\d+" --count 10
|
||||
```
|
||||
|
||||
Options:
|
||||
- `--output, -o`: Output format (text, json)
|
||||
- `--count, -n`: Number of test cases to generate (default: 5)
|
||||
|
||||
### interactive
|
||||
|
||||
Start an interactive REPL for exploring regex patterns:
|
||||
|
||||
```bash
|
||||
regex-humanizer interactive --flavor python
|
||||
```
|
||||
|
||||
### validate
|
||||
|
||||
Validate a regex pattern:
|
||||
|
||||
```bash
|
||||
regex-humanizer validate "\A\z" --flavor python
|
||||
```
|
||||
|
||||
### convert
|
||||
|
||||
Convert a regex pattern between flavors:
|
||||
|
||||
```bash
|
||||
regex-humanizer convert "\d{3}" --from-flavor pcre --to-flavor javascript
|
||||
```
|
||||
|
||||
### flavors
|
||||
|
||||
List available regex flavors:
|
||||
|
||||
```bash
|
||||
regex-humanizer flavors
|
||||
```
|
||||
|
||||
## Interactive Mode
|
||||
|
||||
The interactive mode provides a REPL for exploring regex patterns:
|
||||
|
||||
```
|
||||
$ regex-humanizer interactive
|
||||
Regex Humanizer Interactive Mode
|
||||
Type a regex pattern to explain, or 'help' for commands.
|
||||
|
||||
>>> \w+
|
||||
Pattern: \w+
|
||||
English Explanation:
|
||||
- ONE OR MORE of: word characters (letters, digits, or underscores)
|
||||
```
|
||||
|
||||
Commands in interactive mode:
|
||||
- `explain <pattern>` - Explain a pattern
|
||||
- `test <pattern>` - Generate test cases
|
||||
- `flavor <name>` - Change regex flavor
|
||||
- `help` - Show help message
|
||||
- `quit` or `exit` - Exit interactive mode
|
||||
|
||||
## Flavor Support
|
||||
|
||||
| Flavor | Lookbehind | Possessive Quantifiers | Named Groups |
|
||||
|------------|------------|------------------------|--------------|
|
||||
| PCRE | Yes | Yes | Yes |
|
||||
| JavaScript | No | No | Yes |
|
||||
| Python | Yes | No | Yes |
|
||||
|
||||
## Examples
|
||||
|
||||
### Email Pattern
|
||||
|
||||
```bash
|
||||
$ regex-humanizer explain "^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$"
|
||||
|
||||
Pattern: ^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$
|
||||
Flavor: pcre
|
||||
|
||||
English Explanation:
|
||||
- START of string
|
||||
- ONE OR MORE of: characters from the set (letters, digits, dots, underscores, percent, plus, or hyphen)
|
||||
- LITERAL: @
|
||||
- ONE OR MORE of: characters from the set (letters, digits, dots, or hyphen)
|
||||
- LITERAL: .
|
||||
- ONE OR MORE of: letters
|
||||
- END of string
|
||||
```
|
||||
|
||||
### Phone Number Pattern
|
||||
|
||||
```bash
|
||||
$ regex-humanizer test "\(\d{3}\) \d{3}-\d{4}" --count 3
|
||||
|
||||
Pattern: \(\d{3}\) \d{3}-\d{4}
|
||||
Flavor: pcre
|
||||
|
||||
Matching strings (should match the pattern):
|
||||
1. (555) 123-4567
|
||||
2. (999) 000-9999
|
||||
3. (123) 456-7890
|
||||
|
||||
Non-matching strings (should NOT match the pattern):
|
||||
1. 555-123-4567
|
||||
2. (555)123-4567
|
||||
3. (555) 123 4567
|
||||
```
|
||||
|
||||
## Python API
|
||||
|
||||
```python
|
||||
from regex_humanizer import translate_regex, generate_test_cases
|
||||
|
||||
# Translate regex to English
|
||||
explanation = translate_regex(r"\d{3}-\d{4}", flavor="pcre")
|
||||
print(explanation)
|
||||
|
||||
# Generate test cases
|
||||
tests = generate_test_cases(r"[a-z]+", flavor="python", matching_count=5)
|
||||
print(tests)
|
||||
```
|
||||
|
||||
## Development
|
||||
|
||||
### Setup
|
||||
|
||||
```bash
|
||||
git clone https://7000pct.gitea.bloupla.net/7000pctAUTO/regex-humanizer-cli.git
|
||||
cd regex-humanizer-cli
|
||||
pip install -e ".[dev]"
|
||||
```
|
||||
|
||||
### Testing
|
||||
|
||||
```bash
|
||||
pytest tests/ -v --cov=regex_humanizer --cov-report=term-missing
|
||||
```
|
||||
|
||||
### Linting
|
||||
|
||||
```bash
|
||||
ruff check .
|
||||
```
|
||||
|
||||
## License
|
||||
|
||||
MIT License - see LICENSE file for details.
|
||||
|
||||
Reference in New Issue
Block a user