regex_sample 0.1.1 → 0.1.2

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
  SHA1:
3
- metadata.gz: 55ae18ed139fc493bf654a4c12201cb8243dac1e
4
- data.tar.gz: a7a94c5835c10e2853a55cae678e459d3b0cabf2
3
+ metadata.gz: 770eda8e4a7622b80b7784974154ce33094a9d65
4
+ data.tar.gz: 2a60820718055a316bde0e2f22f6b02f5852d7c9
5
5
  SHA512:
6
- metadata.gz: 4caad5b4be65d37ffaf5fb08a437dce723bcf8dc57545b2428f1b9ff59594559eba717b15435cfd98b28143de0a3ed2958c29f311a6405f7fe5f4fa7e77d03e5
7
- data.tar.gz: 262fcb81d292c70a2c0d72522947ac1f518d3ece74277cba69d647fa0eef618a4b17e8a3a117896d7a03a5e796b893cc51989274b3dc605f2ea4fe47a4592c9c
6
+ metadata.gz: dd0a0a74083ff4458d05fedae970f8af7f315c844917fd2e4eb49ef221fcc2151131a721f21d88e33132392414526c434b909b60b6c1bde347aba2355e702403
7
+ data.tar.gz: 9d49d2c681e0d0613dabf656055c20dca208f5b10ca842f98802eb8af09b4b7b529ae28187de918f9daa88bd6d64fbadbab4f0c78f884b4661578e05ac1200ec
data/README.md CHANGED
@@ -18,9 +18,16 @@ Or install it yourself as:
18
18
 
19
19
  ```ruby
20
20
  require 'regex_sample'
21
- re = /(a|b)/
22
- RegexSample.generate(re)
23
- #=> a or b
21
+
22
+ RegexSample.generate(/(a|b)/)
23
+ #=> "b"
24
+
25
+ RegexSample.generate(/foo[0-9]{3,8}(bar|baz|qux)?/)
26
+ #=> "foo87065baz"
27
+
28
+ # For Japanese
29
+ RegexSample.generate(/foo-\p{katakana}{4}-\p{hiragana}{4}/)
30
+ #=> "foo-ゲホヅヱ-うゐつだ"
24
31
  ```
25
32
 
26
33
  ## Development
@@ -1,3 +1,3 @@
1
1
  module RegexSample
2
- VERSION = "0.1.1"
2
+ VERSION = "0.1.2"
3
3
  end
data/lib/regex_sample.rb CHANGED
@@ -13,12 +13,14 @@ module RegexSample
13
13
  def generate(re)
14
14
  times = Proc.new{ $1 * Array(Range.new($2.to_i, $3.to_i)).sample }
15
15
 
16
- re = re.source if re.respond_to?(:source) # Handle either a Regexp or a String that looks like a Regexp
16
+ # Do not handle either a Regexp or a String that looks like a Regexp
17
+ # Only regexp
18
+ return false unless re.respond_to?(:source)
19
+
20
+ re = re.source
17
21
  re
18
22
  .gsub(/\A\\A/, '') # Remove \A
19
23
  .gsub(/\\z\z/, '') # Remove \z
20
- .gsub(/^\/?\^?/, '') # Ditch the anchors
21
- .gsub(/\$?\/?$/, '') # Ditch the anchors
22
24
  .gsub(/\{(\d+)\}/, '{\1,\1}') # {2} become {2,2}
23
25
  .gsub(/(?<!\\)\?/, '{0,1}') # ? become {0,1}
24
26
  .gsub(/(?<!\\)\+/, '{1,2}') # Remove +, except \+
@@ -30,9 +32,10 @@ module RegexSample
30
32
  .gsub(/(\\p\{hiragana\})\{(\d+),(\d+)\}/) { times.call } # \p{hiragana}{1,2} becomes .\p{hiragana} or \p{hiragana}\p{hiragana}
31
33
  .gsub(/(\\?.)\{(\d+),(\d+)\}/) { times.call } # A{1,2} becomes A or AA or \d{3} becomes .\d\d\d
32
34
  .gsub(/\((.*?)\)/){ |match| match.gsub(/[\(\)]/, '').split('|').sample } # (this|that) becomes 'this' or 'that'
33
- .gsub(/\[([^\]]+)\]/) {|match| match.gsub(/(\w\-\w)/) {|range| Array(Range.new(*range.split('-'))).sample } } # All A-Z inside of [] become C (or X, or .whatever)
35
+ .gsub(/\[([^\]]+)\]/){ |match| match.gsub(/(\w\-\w)/) {|range| Array(Range.new(*range.split('-'))).sample } } # All A-Z inside of [] become C (or X, or .whatever)
34
36
  .gsub('\p{katakana}'){ Katakanas.sample }
35
37
  .gsub('\p{hiragana}'){ Hiraganas.sample }
38
+ .gsub(/(?<!\\)\\-/, '-') # \- become -, except \\-
36
39
  .gsub(/\[([^\]]+)\]/){ $1.split('').sample } # All [ABC] become B (or A or C)
37
40
  .gsub('\d'){ Numbers.sample }
38
41
  .gsub('\w'){ Letters.sample }
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: regex_sample
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.1.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - mochizukikotaro