expgen 0.1.0 → 0.1.1

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.
@@ -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