regeng 0.0.1 → 0.1.0

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 48b5d8f5ae32a608ddcd1690b93291e2a476abe178f29aee19bce4f373ccdbfe
4
- data.tar.gz: 3b028bf5f284e1de2ad9c692239f6457e5561483e0b4849ac71d65c3e54075f0
3
+ metadata.gz: 9c49b60387c63fa04b2eee8bb587d5fec33cb5f2b1113b01da5818620f5c5e8e
4
+ data.tar.gz: 88fcc5a92dc11b9c44a840eac43b6ca13e2996b9ea308512566d01f37e255209
5
5
  SHA512:
6
- metadata.gz: f0117dad2e9393e109da89ed05323d88e71dc3eee579ca760f443e323ed5f68f5f88b121d7cbec4d2fc0d8f0bd2c1098ccbe1ce79995e0644c99f44568b4b053
7
- data.tar.gz: 1f448603ce0f30147f71f15f7b3b871d51002ea2ed8908b3f92777e0bab38eb80daabec8c6cd6dd092e6f08a0f5972be47911a6596ea4adb7787aae1bd54490f
6
+ metadata.gz: 1c38f7c83cc735f372a18a903832294919054d26a7f5610559c9176826605de54e930d79839a57067336decb84b2f5959172916e1396bc6496c08b9ca5d8c29c
7
+ data.tar.gz: 56ecbf74789c5c40070bb8c83fe4afb251828759c1f25ef398ccd36b1a32dd4c6550c9da59031896276577d6b7a12b0b52b2a182943591dab98cd59fbfdff3b9
data/.gitignore CHANGED
@@ -9,3 +9,5 @@
9
9
 
10
10
  # rspec failure tracking
11
11
  .rspec_status
12
+
13
+ regeng-*.gem
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- regeng (0.0.1)
4
+ regeng (0.1.0)
5
5
 
6
6
  GEM
7
7
  remote: https://rubygems.org/
data/README.md CHANGED
@@ -22,6 +22,13 @@ Or install it yourself as:
22
22
 
23
23
  ## Usage
24
24
 
25
+ ```ruby
26
+ require 'regeng'
27
+ => true
28
+ Regeng.expression('any character except e-z at start of string')
29
+ => /\A[^e-z]/
30
+ ```
31
+
25
32
  Documentation in progress...
26
33
 
27
34
  ## Development
data/lib/regeng.rb CHANGED
@@ -4,49 +4,59 @@ require 'regeng/version'
4
4
  module Regeng
5
5
  class Error < StandardError; end
6
6
 
7
- def self.get_expression(string)
8
- array = string.split(' and ')
7
+ def self.expression(string)
9
8
  start = ''
10
9
  middle = ''
11
10
  ending = ''
12
- if string =~ /(any){1}/
13
- if string =~ /(character){1}/
14
- if string =~ /[a-z]-[a-z]/i
15
- character_mod = string.match(/[a-z]-[a-z]/i)
16
- character_mod = "^#{character_mod}" if string =~ /(except){1}/
17
- middle = "#{middle}[#{character_mod}]"
18
- elsif string =~ /(uppercase){1}/
19
- middle = "#{middle}[A-Z]"
20
- elsif string =~ /(lowercase){1}/
21
- middle = "#{middle}[a-z]"
22
- else
23
- middle = "#{middle}[A-Za-z]"
24
- end
25
- elsif string =~ /(digits){1}/
26
- if string =~ /([0-9]+-[0-9]+){1}/
27
- character_mod = string.match(/([0-9]+-[0-9]+){1}/)
28
- character_mod = "^#{character_mod}" if string =~ /(except){1}/
29
- middle = "#{middle}[#{character_mod}]"
30
- else
31
- middle = "#{middle}[0-9]"
32
- end
11
+
12
+ start = process_start_of(string) if string =~ /( at ){1}/
13
+ middle = process_any(string) if string =~ /(any ){1}/
14
+
15
+ expression = "#{start}#{middle}#{ending}"
16
+ Regexp.new expression
17
+ end
18
+
19
+ def self.process_start_of(string)
20
+ result = ''
21
+ if string =~ /(start of){1}/
22
+ if string =~ /(line){1}/
23
+ result = '^'
24
+ elsif string =~ /(string){1}/
25
+ result = '\A'
26
+ end
27
+ elsif string =~ /(end of){1}/
28
+ if string =~ /(line){1}/
29
+ result = '$'
30
+ elsif string =~ /(string){1}/
31
+ result = '\z'
32
+ end
33
+ end
34
+ result
35
+ end
36
+
37
+ def self.process_any(string)
38
+ result = ''
39
+ if string =~ /(character){1}/
40
+ if string =~ /([a-z]-[a-z])/i
41
+ character_mod = string.match(/([a-z]-[a-z])/i)
42
+ character_mod = "^#{character_mod}" if string =~ /(except){1}/
43
+ result = "[#{character_mod}]"
44
+ elsif string =~ /(uppercase){1}/
45
+ result = '[A-Z]'
46
+ elsif string =~ /(lowercase){1}/
47
+ result = '[a-z]'
48
+ else
49
+ result = '[A-Za-z]'
33
50
  end
34
- if string =~ /(at){1}/
35
- if string =~ /(start of){1}/
36
- if string =~ /(line)?/
37
- start = "#{start}^"
38
- elsif string =~ /(string){1}/
39
- start = "#{start}\\A"
40
- end
41
- elsif string =~ /(end of){1}/
42
- if string =~ /(line){1}/
43
- start = "#{start}$"
44
- elsif string =~ /(string){1}/
45
- start = "#{start}\\z"
46
- end
47
- end
51
+ elsif string =~ /(digit){1}/
52
+ if string =~ /([0-9]+-[0-9]+){1}/
53
+ digit_mod = string.match(/([0-9]+-[0-9]+){1}/)
54
+ digit_mod = "^#{digit_mod}" if string =~ /(except){1}/
55
+ result = "[#{digit_mod}]"
56
+ else
57
+ result = '[0-9]+'
48
58
  end
49
59
  end
50
- "#{start}#{middle}#{ending}"
60
+ result
51
61
  end
52
62
  end
@@ -1,3 +1,3 @@
1
1
  module Regeng
2
- VERSION = "0.0.1"
2
+ VERSION = "0.1.0"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: regeng
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - LucHighwalker