expgen 0.1.0 → 0.1.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -10,6 +10,10 @@ module Expgen
10
10
  def repeat
11
11
  ast[:repeat]
12
12
  end
13
+
14
+ def max
15
+ ast[:max]
16
+ end
13
17
  end
14
18
 
15
19
  class Group < Node
@@ -2,20 +2,22 @@ module Expgen
2
2
  module Randomizer
3
3
  extend self
4
4
 
5
- def range(number)
6
- if number == "*"
5
+ def range(min, max)
6
+ if min == "*"
7
7
  [0,5]
8
- elsif number == "+"
8
+ elsif min == "+"
9
9
  [1,5]
10
- elsif number
11
- [number[:int].to_i, number[:int].to_i]
10
+ elsif min and max
11
+ [min, max]
12
+ elsif min
13
+ [min, min]
12
14
  else
13
15
  [1,1]
14
16
  end
15
17
  end
16
18
 
17
- def repeat(number)
18
- first, last = range(number)
19
+ def repeat(min, max)
20
+ first, last = range(min, max)
19
21
  number = rand(last - first + 1) + first
20
22
  number.times.map { yield }.join
21
23
  end
@@ -24,8 +26,8 @@ module Expgen
24
26
  case tree
25
27
  when Array then tree.map { |el| randomize(el) }.join
26
28
  when Nodes::Alternation then randomize(tree.options.sample)
27
- when Nodes::Group then repeat(tree.repeat) { randomize(tree.elements) }
28
- when Nodes::Character then repeat(tree.repeat) { tree.chars.sample }
29
+ when Nodes::Group then repeat(tree.repeat, tree.max) { randomize(tree.elements) }
30
+ when Nodes::Character then repeat(tree.repeat, tree.max) { tree.chars.sample }
29
31
  end
30
32
  end
31
33
  end
@@ -1,5 +1,6 @@
1
1
  module Expgen
2
2
  class Transform < Parslet::Transform
3
+ rule(:int => simple(:x)) { Integer(x) }
3
4
  rule(:literal => subtree(:x)) { Nodes::Literal.new(x) }
4
5
  rule(:wildcard => subtree(:x)) { Nodes::Wildcard.new(x) }
5
6
  rule(:char_class_range => subtree(:x)) { Nodes::Range.new(x) }
@@ -1,3 +1,3 @@
1
1
  module Expgen
2
- VERSION = "0.1.0"
2
+ VERSION = "0.1.1"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: expgen
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.1.1
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,56 +9,56 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-01-07 00:00:00.000000000 Z
12
+ date: 2013-04-02 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: parslet
16
- prerelease: false
17
16
  requirement: !ruby/object:Gem::Requirement
17
+ none: false
18
18
  requirements:
19
19
  - - ! '>='
20
20
  - !ruby/object:Gem::Version
21
21
  version: '0'
22
- none: false
23
22
  type: :runtime
23
+ prerelease: false
24
24
  version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
25
26
  requirements:
26
27
  - - ! '>='
27
28
  - !ruby/object:Gem::Version
28
29
  version: '0'
29
- none: false
30
30
  - !ruby/object:Gem::Dependency
31
31
  name: pry
32
- prerelease: false
33
32
  requirement: !ruby/object:Gem::Requirement
33
+ none: false
34
34
  requirements:
35
35
  - - ! '>='
36
36
  - !ruby/object:Gem::Version
37
37
  version: '0'
38
- none: false
39
38
  type: :development
39
+ prerelease: false
40
40
  version_requirements: !ruby/object:Gem::Requirement
41
+ none: false
41
42
  requirements:
42
43
  - - ! '>='
43
44
  - !ruby/object:Gem::Version
44
45
  version: '0'
45
- none: false
46
46
  - !ruby/object:Gem::Dependency
47
47
  name: rspec
48
- prerelease: false
49
48
  requirement: !ruby/object:Gem::Requirement
49
+ none: false
50
50
  requirements:
51
51
  - - ! '>='
52
52
  - !ruby/object:Gem::Version
53
53
  version: '0'
54
- none: false
55
54
  type: :development
55
+ prerelease: false
56
56
  version_requirements: !ruby/object:Gem::Requirement
57
+ none: false
57
58
  requirements:
58
59
  - - ! '>='
59
60
  - !ruby/object:Gem::Version
60
61
  version: '0'
61
- none: false
62
62
  description: Generate random strings from regular expression
63
63
  email:
64
64
  - jonas.nicklas@gmail.com
@@ -89,20 +89,20 @@ rdoc_options: []
89
89
  require_paths:
90
90
  - lib
91
91
  required_ruby_version: !ruby/object:Gem::Requirement
92
+ none: false
92
93
  requirements:
93
94
  - - ! '>='
94
95
  - !ruby/object:Gem::Version
95
96
  version: '0'
96
- none: false
97
97
  required_rubygems_version: !ruby/object:Gem::Requirement
98
+ none: false
98
99
  requirements:
99
100
  - - ! '>='
100
101
  - !ruby/object:Gem::Version
101
102
  version: '0'
102
- none: false
103
103
  requirements: []
104
104
  rubyforge_project:
105
- rubygems_version: 1.8.24
105
+ rubygems_version: 1.8.25
106
106
  signing_key:
107
107
  specification_version: 3
108
108
  summary: Generate random regular expression