spintax_parser 0.2.1 → 0.2.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.
@@ -5,8 +5,8 @@ rvm:
5
5
  - "1.9.3"
6
6
  - jruby-18mode # JRuby in 1.8 mode
7
7
  # - jruby-19mode # JRuby in 1.9 mode throws some error about Random
8
- - rbx-18mode
9
- - rbx-19mode
8
+ # - rbx-18mode
9
+ # - rbx-19mode
10
10
  - ree
11
11
  # uncomment this line if your project needs to run something other than `rake`:
12
12
  # script: bundle exec rspec spec
@@ -2,8 +2,8 @@ require 'spintax_parser/version'
2
2
  require 'backports/1.9.1/array/sample' if RUBY_VERSION < '1.9.1'
3
3
 
4
4
  module SpintaxParser
5
-
6
- SPINTAX_PATTERN = %r/\{([^{|}]+(\|[^{|}]+)+)\}/
5
+
6
+ SPINTAX_PATTERN = /\{([^{}]*)\}/
7
7
 
8
8
  def unspin(options={})
9
9
  spun = dup.to_s
@@ -15,25 +15,32 @@ module SpintaxParser
15
15
 
16
16
  def count_spintax_variations
17
17
  spun = dup.to_s
18
- spun.gsub! %r/[^{|}]+/, '1'
19
- spun.gsub! %r/\{/, '('
20
- spun.gsub! %r/\|/, '+'
21
- spun.gsub! %r/\}/, ')'
22
- spun.gsub! %r/\)\(/, ')*('
23
- spun.gsub! %r/\)1/, ')*1'
24
- spun.gsub! %r/1\(/, '1*('
25
- eval spun
18
+ while spun =~ /([\{\|])([\|\}])/
19
+ spun.gsub! /([\{\|])([\|\}])/, '\11\2'
20
+ end
21
+ spun.gsub! /[^{|}]+/, '1'
22
+ spun.gsub! /\{/, '('
23
+ spun.gsub! /\|/, '+'
24
+ spun.gsub! /\}/, ')'
25
+ spun.gsub! /\)\(/, ')*('
26
+ spun.gsub! /\)1/, ')*1'
27
+ spun.gsub! /1\(/, '1*('
28
+ begin
29
+ eval spun
30
+ rescue SyntaxError
31
+ nil
32
+ end
26
33
  end
27
34
 
28
35
  private
29
36
 
30
37
  if RUBY_VERSION >= '1.9.3'
31
38
  def parse_the_spintax_in(spun, options={})
32
- spun.gsub!(SPINTAX_PATTERN) { $1.split('|').sample(options) }
39
+ spun.gsub!(SPINTAX_PATTERN) { $1.split('|',-1).sample options }
33
40
  end
34
41
  else
35
42
  def parse_the_spintax_in(spun, options={})
36
- spun.gsub!(SPINTAX_PATTERN) { $1.split('|').sample }
43
+ spun.gsub!(SPINTAX_PATTERN) { $1.split('|',-1).sample }
37
44
  end
38
45
  end
39
46
  end
@@ -1,3 +1,3 @@
1
1
  module SpintaxParser
2
- VERSION = "0.2.1"
2
+ VERSION = "0.2.2"
3
3
  end
@@ -6,12 +6,12 @@ end
6
6
 
7
7
  describe SpintaxParser do
8
8
 
9
- let(:plaintext) { 'Hello world. { Please do not spin this. }' }
9
+ let(:plaintext) { 'Hello world. Please do not spin this.' }
10
10
  let(:spintext) { 'Find this. {Hello|Hi} to the {{world|worlds} out there|planet}{!|.|?} Cool.' }
11
- let(:spintax_pattern) { /\{[^{}]*\}/ }
11
+ let(:spintax_pattern) { SpintaxParser::SPINTAX_PATTERN }
12
12
 
13
13
  describe "calling unspin" do
14
-
14
+
15
15
  context "on plaintext" do
16
16
  it "does not change the plaintext" do
17
17
  expect { plaintext.unspin }.not_to change { plaintext }
@@ -52,5 +52,7 @@ describe SpintaxParser do
52
52
  '{one|two} three {four|five}'.count_spintax_variations.should eq 4
53
53
  'one {{two|three} four|five {six|seven}} eight {nine|ten}'.count_spintax_variations.should eq 8
54
54
  '{Hello|Hi} {{world|worlds}|planet}{!|.|?}'.count_spintax_variations.should eq 18
55
+ '{one|two|}'.count_spintax_variations.should eq 3
56
+ "{Can't|count|this one".count_spintax_variations.should eq nil
55
57
  end
56
58
  end
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: spintax_parser
3
3
  version: !ruby/object:Gem::Version
4
- hash: 21
4
+ hash: 19
5
5
  prerelease:
6
6
  segments:
7
7
  - 0
8
8
  - 2
9
- - 1
10
- version: 0.2.1
9
+ - 2
10
+ version: 0.2.2
11
11
  platform: ruby
12
12
  authors:
13
13
  - Scott McCormack
@@ -15,7 +15,7 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2013-05-23 00:00:00 Z
18
+ date: 2014-03-10 00:00:00 Z
19
19
  dependencies:
20
20
  - !ruby/object:Gem::Dependency
21
21
  version_requirements: &id001 !ruby/object:Gem::Requirement