regeng 0.2.4 → 0.2.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/Gemfile.lock +1 -1
- data/README.md +4 -6
- data/docs/.nojekyll +0 -0
- data/docs/README.md +58 -0
- data/docs/changelog.md +18 -0
- data/docs/index.html +21 -0
- data/docs/usage/atmodifier.md +14 -0
- data/docs/usage/characters.md +43 -0
- data/docs/usage/exceptmod.md +8 -0
- data/docs/usage/numbers.md +43 -0
- data/lib/regeng.rb +12 -2
- data/lib/regeng/version.rb +1 -1
- data/regeng.gemspec +3 -2
- metadata +14 -6
- data/changelog.md +0 -16
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: b08c143342913d8a64a5cce550f2d1fa132acd8f92b543f833ac3fb631661cf8
|
|
4
|
+
data.tar.gz: 4121b024940ece38acec13398b97630fd65e7d369d1c91dad03b8a2c805da1ca
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 4862c021d796fa74b5ac55ae15f069ff3f4c7f03d15b45da3fa3a52cf7b0ed7f7dea97f4f4bc1829fe3ae5c37c4051d0d29919e5e9b0b3b5d492a6bf44b489ca
|
|
7
|
+
data.tar.gz: 720e2344a7670dc5509c3a5b5a53931b9523ba7b1dfa645466e1f869f291676c6251b4d98656d77e1fc6bd490a7f0fdf8b4d17bec2c437972cf084302a0e470c
|
data/Gemfile.lock
CHANGED
data/README.md
CHANGED
|
@@ -1,6 +1,4 @@
|
|
|
1
|
-
# Regeng
|
|
2
|
-
|
|
3
|
-
# (WIP)
|
|
1
|
+
# Regeng (WIP) {docsify-ignore-all}
|
|
4
2
|
|
|
5
3
|
Regeng or regular english, is a gem aimed to make regular expressions a bit more noob friendly.
|
|
6
4
|
|
|
@@ -27,11 +25,11 @@ Or install it yourself as:
|
|
|
27
25
|
```ruby
|
|
28
26
|
require 'regeng'
|
|
29
27
|
=> true
|
|
30
|
-
Regeng.new 'any
|
|
31
|
-
=> /\A[^e-z]
|
|
28
|
+
Regeng.new 'any characters except e through z at start of string'
|
|
29
|
+
=> /\A[^e-z]+/
|
|
32
30
|
```
|
|
33
31
|
|
|
34
|
-
|
|
32
|
+
More examples in the [Documentation](https://luchighwalker.github.io/regeng/)
|
|
35
33
|
|
|
36
34
|
## Development
|
|
37
35
|
|
data/docs/.nojekyll
ADDED
|
File without changes
|
data/docs/README.md
ADDED
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
# Regeng (WIP) {docsify-ignore-all}
|
|
2
|
+
|
|
3
|
+
Regeng or regular english, is a gem aimed to make regular expressions a bit more noob friendly.
|
|
4
|
+
|
|
5
|
+
[Regeng Gem](https://rubygems.org/gems/regeng)
|
|
6
|
+
|
|
7
|
+
## Installation
|
|
8
|
+
|
|
9
|
+
Add this line to your application's Gemfile:
|
|
10
|
+
|
|
11
|
+
```ruby
|
|
12
|
+
gem 'regeng'
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
And then execute:
|
|
16
|
+
|
|
17
|
+
$ bundle
|
|
18
|
+
|
|
19
|
+
Or install it yourself as:
|
|
20
|
+
|
|
21
|
+
$ gem install regeng
|
|
22
|
+
|
|
23
|
+
## Usage
|
|
24
|
+
|
|
25
|
+
### Quick Start
|
|
26
|
+
|
|
27
|
+
```ruby
|
|
28
|
+
require 'regeng'
|
|
29
|
+
=> true
|
|
30
|
+
Regeng.new 'any characters except e through z at start of string'
|
|
31
|
+
=> /\A[^e-z]+/
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
[Characters](/usage/characters.md ':include')
|
|
35
|
+
|
|
36
|
+
[Numbers](/usage/numbers.md ':include')
|
|
37
|
+
|
|
38
|
+
[AtModifier](/usage/atmodifier.md ':include')
|
|
39
|
+
|
|
40
|
+
[ExceptMod](/usage/exceptmod.md ':include')
|
|
41
|
+
|
|
42
|
+
## Development
|
|
43
|
+
|
|
44
|
+
After checking out the repo, run `bin/setup` to install dependencies. Then, run `rake spec` to run the tests. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
|
|
45
|
+
|
|
46
|
+
To install this gem onto your local machine, run `bundle exec rake install`. To release a new version, update the version number in `version.rb`, and then run `bundle exec rake release`, which will create a git tag for the version, push git commits and tags, and push the `.gem` file to [rubygems.org](https://rubygems.org).
|
|
47
|
+
|
|
48
|
+
## Contributing
|
|
49
|
+
|
|
50
|
+
Bug reports and pull requests are welcome on GitHub at https://github.com/LucHighwalker/regeng.
|
|
51
|
+
|
|
52
|
+
## License
|
|
53
|
+
|
|
54
|
+
The gem is available as open source under the terms of the [MIT License](https://opensource.org/licenses/MIT).
|
|
55
|
+
|
|
56
|
+
## Changelog
|
|
57
|
+
|
|
58
|
+
[Changelog](/changelog.md ':include')
|
data/docs/changelog.md
ADDED
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
[01-04-19] [0.2.5]: Now handles uppercase/lowercase with specified characters.
|
|
2
|
+
|
|
3
|
+
[01-02-19] [0.2.4]: Now processes more complex numbers.
|
|
4
|
+
|
|
5
|
+
[12-11-18] [0.2.3]: Now raises errors when expression fails to process.
|
|
6
|
+
|
|
7
|
+
[12-11-18] [0.2.2]: Now can use .new to mimic Regex behaviour.
|
|
8
|
+
Slightly expanded functionality.
|
|
9
|
+
|
|
10
|
+
[12-11-18] [0.2.1d]: Dev Build: At modifiers and simple digit expressions.
|
|
11
|
+
|
|
12
|
+
[12-10-18] [0.2.0d]: Dev Build: Refactored gem, refactored character functionality.
|
|
13
|
+
|
|
14
|
+
[12-09-18] [0.1.1]: Fixed changelog link... oops.
|
|
15
|
+
|
|
16
|
+
[12-09-18] [0.1.0]: Refactored prototype, now returns regular expressions.
|
|
17
|
+
|
|
18
|
+
[12-09-18] [0.0.1]: Initial prototype.
|
data/docs/index.html
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
<!DOCTYPE html>
|
|
2
|
+
<html lang="en">
|
|
3
|
+
<head>
|
|
4
|
+
<meta charset="UTF-8">
|
|
5
|
+
<title>Document</title>
|
|
6
|
+
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" />
|
|
7
|
+
<meta name="description" content="Description">
|
|
8
|
+
<meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
|
|
9
|
+
<link rel="stylesheet" href="https://unpkg.com/docsify-themeable/dist/css/theme-simple-dark.css">
|
|
10
|
+
</head>
|
|
11
|
+
<body>
|
|
12
|
+
<div id="app"></div>
|
|
13
|
+
<script>
|
|
14
|
+
window.$docsify = {
|
|
15
|
+
name: '',
|
|
16
|
+
repo: ''
|
|
17
|
+
}
|
|
18
|
+
</script>
|
|
19
|
+
<script src="//unpkg.com/docsify/lib/docsify.min.js"></script>
|
|
20
|
+
</body>
|
|
21
|
+
</html>
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
### At Modifier
|
|
2
|
+
|
|
3
|
+
The 'at' modifier can be used to indicate the start or end of a line or string.
|
|
4
|
+
|
|
5
|
+
```ruby
|
|
6
|
+
Regeng.new 'any characters at start of line'
|
|
7
|
+
=> /^[A-Za-z]+/
|
|
8
|
+
Regeng.new 'any characters at end of line'
|
|
9
|
+
=> /$[A-Za-z]+/
|
|
10
|
+
Regeng.new 'any characters at start of string'
|
|
11
|
+
=> /\A[A-Za-z]+/
|
|
12
|
+
Regeng.new 'any characters at end of string'
|
|
13
|
+
=> /\z[A-Za-z]+/
|
|
14
|
+
```
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
### Characters
|
|
2
|
+
|
|
3
|
+
Use the 'to', 'through' or '-' indicator for ranges.
|
|
4
|
+
You can also use the 'and' indicator for ranges if the characters are preceeded with 'between' or 'from'.
|
|
5
|
+
|
|
6
|
+
```ruby
|
|
7
|
+
Regeng.new 'character e to z'
|
|
8
|
+
Regeng.new 'character e through z'
|
|
9
|
+
Regeng.new 'character e-z'
|
|
10
|
+
Regeng.new 'character between e and z'
|
|
11
|
+
Regeng.new 'character from e and z'
|
|
12
|
+
=> /[E-Ze-z]/
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
Using 'and' as an indicator without 'between' or 'from' will result in exact matches.
|
|
16
|
+
|
|
17
|
+
```ruby
|
|
18
|
+
Regeng.new 'character s o e and z'
|
|
19
|
+
=> /[SOEZsoez]/
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
Pluralizing 'character' will result in multiples.
|
|
23
|
+
|
|
24
|
+
```ruby
|
|
25
|
+
Regeng.new 'characters e through z'
|
|
26
|
+
=> /[E-Ze-z]+/
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
Indicate 'any character(s)'
|
|
30
|
+
|
|
31
|
+
```ruby
|
|
32
|
+
Regeng.new 'any characters'
|
|
33
|
+
=> /[A-Za-z]+/
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
Use an 'uppercase' or 'lowercase' modifier
|
|
37
|
+
|
|
38
|
+
```ruby
|
|
39
|
+
Regeng.new 'any uppercase character e through z'
|
|
40
|
+
=> /[E-Z]/
|
|
41
|
+
Regeng.new 'any lowercase character e through z'
|
|
42
|
+
=> /[e-z]/
|
|
43
|
+
```
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
### Numbers
|
|
2
|
+
|
|
3
|
+
Use either the 'number' or 'digit' keywords.
|
|
4
|
+
|
|
5
|
+
Use the 'to', 'through' or '-' indicator for ranges.
|
|
6
|
+
You can also use the 'and' indicator for ranges if the numbers are preceeded with 'between' or 'from'.
|
|
7
|
+
|
|
8
|
+
```ruby
|
|
9
|
+
Regeng.new 'number 2 to 4'
|
|
10
|
+
Regeng.new 'number 2 through 4'
|
|
11
|
+
Regeng.new 'number 2-4'
|
|
12
|
+
Regeng.new 'number between 2 and 4'
|
|
13
|
+
Regeng.new 'number from 2 and 4'
|
|
14
|
+
=> /[2-4]/
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
Using the 'and' keyword will result in exact matches.
|
|
18
|
+
|
|
19
|
+
```ruby
|
|
20
|
+
Regeng.new 'number 2 1 5 and 4'
|
|
21
|
+
=> /[2154]/
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
Pluralizing 'number' will result in multiples.
|
|
25
|
+
|
|
26
|
+
```ruby
|
|
27
|
+
Regeng.new 'numbers 2 through 4'
|
|
28
|
+
=> /[2-4]+/
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
Indicate 'any number(s)'
|
|
32
|
+
|
|
33
|
+
```ruby
|
|
34
|
+
Regeng.new 'any numbers'
|
|
35
|
+
=> /[0-9]+/
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
Regeng supports multiples of 10s. Currently both numbers must have the same amount of zeros.
|
|
39
|
+
|
|
40
|
+
```ruby
|
|
41
|
+
Regeng.new 'number between 400 and 600'
|
|
42
|
+
=> /(4[0-9][0-9])|(5[0-9][0-9])|(600)/
|
|
43
|
+
```
|
data/lib/regeng.rb
CHANGED
|
@@ -61,6 +61,16 @@ module Regeng
|
|
|
61
61
|
character_mod = unfiltered_mod.to_s.gsub(/( )|(and )/, '')
|
|
62
62
|
end
|
|
63
63
|
|
|
64
|
+
character_mod = character_mod.to_s
|
|
65
|
+
|
|
66
|
+
character_mod = if /(uppercase)/.match?(string)
|
|
67
|
+
character_mod.upcase
|
|
68
|
+
elsif /(lowercase)/.match?(string)
|
|
69
|
+
character_mod.downcase
|
|
70
|
+
else
|
|
71
|
+
"#{character_mod.upcase}#{character_mod.downcase}"
|
|
72
|
+
end
|
|
73
|
+
|
|
64
74
|
Error.invalid_expression if character_mod.nil? || character_mod == '-'
|
|
65
75
|
|
|
66
76
|
"[#{except}#{character_mod}]#{multiples}"
|
|
@@ -68,7 +78,7 @@ module Regeng
|
|
|
68
78
|
|
|
69
79
|
# Processes simple character expressions.
|
|
70
80
|
def self.characters_simple(string)
|
|
71
|
-
character_mod = '
|
|
81
|
+
character_mod = 'A-Za-z'
|
|
72
82
|
multiples = '+' if /(character)(s)/.match?(string)
|
|
73
83
|
if /(uppercase)/.match?(string)
|
|
74
84
|
character_mod = 'A-Z'
|
|
@@ -103,7 +113,7 @@ module Regeng
|
|
|
103
113
|
Error.invalid_expression if digit_mod.nil? || digit_mod == '-'
|
|
104
114
|
|
|
105
115
|
if complex
|
|
106
|
-
|
|
116
|
+
digit_mod.to_s
|
|
107
117
|
else
|
|
108
118
|
"[#{except}#{digit_mod}]#{multiples}"
|
|
109
119
|
end
|
data/lib/regeng/version.rb
CHANGED
data/regeng.gemspec
CHANGED
|
@@ -10,7 +10,7 @@ Gem::Specification.new do |spec|
|
|
|
10
10
|
|
|
11
11
|
spec.summary = 'A gem which converts plain english to regular expressions.'
|
|
12
12
|
# spec.description = %q{TODO: Write a longer description or delete this line.}
|
|
13
|
-
spec.homepage = 'https://
|
|
13
|
+
spec.homepage = 'https://luchighwalker.github.io/regeng/'
|
|
14
14
|
spec.license = 'MIT'
|
|
15
15
|
|
|
16
16
|
# Prevent pushing this gem to RubyGems.org. To allow pushes either set the 'allowed_push_host'
|
|
@@ -20,7 +20,8 @@ Gem::Specification.new do |spec|
|
|
|
20
20
|
|
|
21
21
|
spec.metadata['homepage_uri'] = spec.homepage
|
|
22
22
|
spec.metadata['source_code_uri'] = 'https://github.com/LucHighwalker/regeng.git'
|
|
23
|
-
spec.metadata['
|
|
23
|
+
spec.metadata['documentation_uri'] = 'https://luchighwalker.github.io/regeng/'
|
|
24
|
+
spec.metadata['changelog_uri'] = 'https://luchighwalker.github.io/regeng/#/?id=changelog'
|
|
24
25
|
else
|
|
25
26
|
raise 'RubyGems 2.0 or newer is required to protect against ' \
|
|
26
27
|
'public gem pushes.'
|
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: regeng
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.2.
|
|
4
|
+
version: 0.2.5
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- LucHighwalker
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: exe
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2019-01-
|
|
11
|
+
date: 2019-01-04 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: bundler
|
|
@@ -69,18 +69,26 @@ files:
|
|
|
69
69
|
- Rakefile
|
|
70
70
|
- bin/console
|
|
71
71
|
- bin/setup
|
|
72
|
-
-
|
|
72
|
+
- docs/.nojekyll
|
|
73
|
+
- docs/README.md
|
|
74
|
+
- docs/changelog.md
|
|
75
|
+
- docs/index.html
|
|
76
|
+
- docs/usage/atmodifier.md
|
|
77
|
+
- docs/usage/characters.md
|
|
78
|
+
- docs/usage/exceptmod.md
|
|
79
|
+
- docs/usage/numbers.md
|
|
73
80
|
- lib/regeng.rb
|
|
74
81
|
- lib/regeng/version.rb
|
|
75
82
|
- regeng.gemspec
|
|
76
|
-
homepage: https://
|
|
83
|
+
homepage: https://luchighwalker.github.io/regeng/
|
|
77
84
|
licenses:
|
|
78
85
|
- MIT
|
|
79
86
|
metadata:
|
|
80
87
|
allowed_push_host: https://rubygems.org
|
|
81
|
-
homepage_uri: https://
|
|
88
|
+
homepage_uri: https://luchighwalker.github.io/regeng/
|
|
82
89
|
source_code_uri: https://github.com/LucHighwalker/regeng.git
|
|
83
|
-
|
|
90
|
+
documentation_uri: https://luchighwalker.github.io/regeng/
|
|
91
|
+
changelog_uri: https://luchighwalker.github.io/regeng/#/?id=changelog
|
|
84
92
|
post_install_message:
|
|
85
93
|
rdoc_options: []
|
|
86
94
|
require_paths:
|
data/changelog.md
DELETED
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
[01-02-19][0.2.4]: Now processes more complex numbers.
|
|
2
|
-
|
|
3
|
-
[12-11-18][0.2.3]: Now raises errors when expression fails to process.
|
|
4
|
-
|
|
5
|
-
[12-11-18][0.2.2]: Now can use .new to mimic Regex behaviour.
|
|
6
|
-
Slightly expanded functionality.
|
|
7
|
-
|
|
8
|
-
[12-11-18][0.2.1d]: Dev Build: At modifiers and simple digit expressions.
|
|
9
|
-
|
|
10
|
-
[12-10-18][0.2.0d]: Dev Build: Refactored gem, refactored character functionality.
|
|
11
|
-
|
|
12
|
-
[12-09-18][0.1.1]: Fixed changelog link... oops.
|
|
13
|
-
|
|
14
|
-
[12-09-18][0.1.0]: Refactored prototype, now returns regular expressions.
|
|
15
|
-
|
|
16
|
-
[12-09-18][0.0.1]: Initial prototype.
|