regeng 0.0.1 → 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
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