spintax_parser 0.0.2 → 0.1.0
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.
- data/Gemfile +0 -5
- data/README.md +8 -1
- data/lib/spintax_parser/version.rb +1 -1
- data/lib/spintax_parser.rb +13 -1
- data/spec/lib/spintax_parser_spec.rb +8 -0
- data/spintax_parser.gemspec +2 -3
- metadata +9 -25
- data/Guardfile +0 -24
    
        data/Gemfile
    CHANGED
    
    
    
        data/README.md
    CHANGED
    
    | @@ -1,6 +1,6 @@ | |
| 1 1 | 
             
            # SpintaxParser  [](http://travis-ci.org/flintinatux/spintax_parser)  [](https://gemnasium.com/flintinatux/spintax_parser)  [](https://codeclimate.com/github/flintinatux/spintax_parser)
         | 
| 2 2 |  | 
| 3 | 
            -
            A mixin to parse "spintax", a text format used for automated article generation. Can handle nested spintax.
         | 
| 3 | 
            +
            A mixin to parse "spintax", a text format used for automated article generation. Can handle nested spintax, and can count the total number of unique variations.
         | 
| 4 4 |  | 
| 5 5 | 
             
            Read more about the motivation behind it at [the announcement of its initial release](http://madhackerdesigns.com/spintax_parser-gem-v0-0-1-released/ "spintax_parser gem v0.0.1 released").
         | 
| 6 6 |  | 
| @@ -58,6 +58,13 @@ And don't worry: calling `unspin` on a string with no spintax will safely return | |
| 58 58 |  | 
| 59 59 | 
             
            Also, note that the `unspin` method doesn't really care if the class you mix it into is a descendant of String or not, as long as its `to_s` method returns a string written in spintax.
         | 
| 60 60 |  | 
| 61 | 
            +
            Now you can also count the total number of unique variations of a spintax string. If you've mixed the SpintaxParser into your String class like above, just call the `count_spintax_variations` method on any string as shown below:
         | 
| 62 | 
            +
             | 
| 63 | 
            +
            ```ruby
         | 
| 64 | 
            +
            spintext = "{Hello|Hi} {{world|worlds}|planet}{!|.|?}"
         | 
| 65 | 
            +
            puts spintext.count_spintax_variations   # => 18
         | 
| 66 | 
            +
            ```
         | 
| 67 | 
            +
             | 
| 61 68 | 
             
            ## Contributing
         | 
| 62 69 |  | 
| 63 70 | 
             
            1. Fork it
         | 
    
        data/lib/spintax_parser.rb
    CHANGED
    
    | @@ -6,11 +6,23 @@ module SpintaxParser | |
| 6 6 | 
             
              SPINTAX_PATTERN = %r/\{([^{}]*)\}/
         | 
| 7 7 |  | 
| 8 8 | 
             
              def unspin
         | 
| 9 | 
            -
                spun =  | 
| 9 | 
            +
                spun = dup.to_s
         | 
| 10 10 | 
             
                while spun =~ SPINTAX_PATTERN
         | 
| 11 11 | 
             
                  spun.gsub!(SPINTAX_PATTERN) { $1.split('|').sample }
         | 
| 12 12 | 
             
                end
         | 
| 13 13 | 
             
                spun
         | 
| 14 14 | 
             
              end
         | 
| 15 15 |  | 
| 16 | 
            +
              def count_spintax_variations
         | 
| 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
         | 
| 26 | 
            +
              end
         | 
| 27 | 
            +
             | 
| 16 28 | 
             
            end # SpintaxParser
         | 
| @@ -36,4 +36,12 @@ describe SpintaxParser do | |
| 36 36 | 
             
                  it { should_not =~ spintax_pattern }
         | 
| 37 37 | 
             
                end
         | 
| 38 38 | 
             
              end
         | 
| 39 | 
            +
             | 
| 40 | 
            +
              it "should count spun variations correctly" do
         | 
| 41 | 
            +
                'one {two|three} four'.count_spintax_variations.should eq 2
         | 
| 42 | 
            +
                '{one|two {three|four}} five'.count_spintax_variations.should eq 3
         | 
| 43 | 
            +
                '{one|two} three {four|five}'.count_spintax_variations.should eq 4
         | 
| 44 | 
            +
                'one {{two|three} four|five {six|seven}} eight {nine|ten}'.count_spintax_variations.should eq 8
         | 
| 45 | 
            +
                '{Hello|Hi} {{world|worlds}|planet}{!|.|?}'.count_spintax_variations.should eq 18
         | 
| 46 | 
            +
              end
         | 
| 39 47 | 
             
            end
         | 
    
        data/spintax_parser.gemspec
    CHANGED
    
    | @@ -4,7 +4,7 @@ require File.expand_path('../lib/spintax_parser/version', __FILE__) | |
| 4 4 | 
             
            Gem::Specification.new do |gem|
         | 
| 5 5 | 
             
              gem.authors       = ["Scott McCormack"]
         | 
| 6 6 | 
             
              gem.email         = ["mail@madhackerdesigns.com"]
         | 
| 7 | 
            -
              gem.description   = %q{A mixin to parse "spintax", a text format used for automated article generation. Can handle nested spintax.}
         | 
| 7 | 
            +
              gem.description   = %q{A mixin to parse "spintax", a text format used for automated article generation. Can handle nested spintax, and can count the total number of unique variations.}
         | 
| 8 8 | 
             
              gem.summary       = gem.description
         | 
| 9 9 | 
             
              gem.homepage      = "https://github.com/flintinatux/spintax_parser"
         | 
| 10 10 |  | 
| @@ -16,6 +16,5 @@ Gem::Specification.new do |gem| | |
| 16 16 | 
             
              gem.version       = SpintaxParser::VERSION
         | 
| 17 17 |  | 
| 18 18 | 
             
              gem.add_dependency 'backports'
         | 
| 19 | 
            -
              gem.add_development_dependency 'rspec', '~> 2. | 
| 20 | 
            -
              gem.add_development_dependency 'guard-rspec', '~> 2.0.0'
         | 
| 19 | 
            +
              gem.add_development_dependency 'rspec', '~> 2.12.0'
         | 
| 21 20 | 
             
            end
         | 
    
        metadata
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: spintax_parser
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version: 0.0 | 
| 4 | 
            +
              version: 0.1.0
         | 
| 5 5 | 
             
              prerelease: 
         | 
| 6 6 | 
             
            platform: ruby
         | 
| 7 7 | 
             
            authors:
         | 
| @@ -9,7 +9,7 @@ authors: | |
| 9 9 | 
             
            autorequire: 
         | 
| 10 10 | 
             
            bindir: bin
         | 
| 11 11 | 
             
            cert_chain: []
         | 
| 12 | 
            -
            date: 2012- | 
| 12 | 
            +
            date: 2012-11-30 00:00:00.000000000 Z
         | 
| 13 13 | 
             
            dependencies:
         | 
| 14 14 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 15 15 | 
             
              name: backports
         | 
| @@ -34,7 +34,7 @@ dependencies: | |
| 34 34 | 
             
                requirements:
         | 
| 35 35 | 
             
                - - ~>
         | 
| 36 36 | 
             
                  - !ruby/object:Gem::Version
         | 
| 37 | 
            -
                    version: 2. | 
| 37 | 
            +
                    version: 2.12.0
         | 
| 38 38 | 
             
              type: :development
         | 
| 39 39 | 
             
              prerelease: false
         | 
| 40 40 | 
             
              version_requirements: !ruby/object:Gem::Requirement
         | 
| @@ -42,25 +42,10 @@ dependencies: | |
| 42 42 | 
             
                requirements:
         | 
| 43 43 | 
             
                - - ~>
         | 
| 44 44 | 
             
                  - !ruby/object:Gem::Version
         | 
| 45 | 
            -
                    version: 2. | 
| 46 | 
            -
            - !ruby/object:Gem::Dependency
         | 
| 47 | 
            -
              name: guard-rspec
         | 
| 48 | 
            -
              requirement: !ruby/object:Gem::Requirement
         | 
| 49 | 
            -
                none: false
         | 
| 50 | 
            -
                requirements:
         | 
| 51 | 
            -
                - - ~>
         | 
| 52 | 
            -
                  - !ruby/object:Gem::Version
         | 
| 53 | 
            -
                    version: 2.0.0
         | 
| 54 | 
            -
              type: :development
         | 
| 55 | 
            -
              prerelease: false
         | 
| 56 | 
            -
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 57 | 
            -
                none: false
         | 
| 58 | 
            -
                requirements:
         | 
| 59 | 
            -
                - - ~>
         | 
| 60 | 
            -
                  - !ruby/object:Gem::Version
         | 
| 61 | 
            -
                    version: 2.0.0
         | 
| 45 | 
            +
                    version: 2.12.0
         | 
| 62 46 | 
             
            description: A mixin to parse "spintax", a text format used for automated article
         | 
| 63 | 
            -
              generation. Can handle nested spintax | 
| 47 | 
            +
              generation. Can handle nested spintax, and can count the total number of unique
         | 
| 48 | 
            +
              variations.
         | 
| 64 49 | 
             
            email:
         | 
| 65 50 | 
             
            - mail@madhackerdesigns.com
         | 
| 66 51 | 
             
            executables: []
         | 
| @@ -70,7 +55,6 @@ files: | |
| 70 55 | 
             
            - .gitignore
         | 
| 71 56 | 
             
            - .travis.yml
         | 
| 72 57 | 
             
            - Gemfile
         | 
| 73 | 
            -
            - Guardfile
         | 
| 74 58 | 
             
            - LICENSE
         | 
| 75 59 | 
             
            - README.md
         | 
| 76 60 | 
             
            - Rakefile
         | 
| @@ -92,7 +76,7 @@ required_ruby_version: !ruby/object:Gem::Requirement | |
| 92 76 | 
             
                  version: '0'
         | 
| 93 77 | 
             
                  segments:
         | 
| 94 78 | 
             
                  - 0
         | 
| 95 | 
            -
                  hash:  | 
| 79 | 
            +
                  hash: 4151852987598141644
         | 
| 96 80 | 
             
            required_rubygems_version: !ruby/object:Gem::Requirement
         | 
| 97 81 | 
             
              none: false
         | 
| 98 82 | 
             
              requirements:
         | 
| @@ -101,13 +85,13 @@ required_rubygems_version: !ruby/object:Gem::Requirement | |
| 101 85 | 
             
                  version: '0'
         | 
| 102 86 | 
             
                  segments:
         | 
| 103 87 | 
             
                  - 0
         | 
| 104 | 
            -
                  hash:  | 
| 88 | 
            +
                  hash: 4151852987598141644
         | 
| 105 89 | 
             
            requirements: []
         | 
| 106 90 | 
             
            rubyforge_project: 
         | 
| 107 91 | 
             
            rubygems_version: 1.8.24
         | 
| 108 92 | 
             
            signing_key: 
         | 
| 109 93 | 
             
            specification_version: 3
         | 
| 110 94 | 
             
            summary: A mixin to parse "spintax", a text format used for automated article generation.
         | 
| 111 | 
            -
              Can handle nested spintax.
         | 
| 95 | 
            +
              Can handle nested spintax, and can count the total number of unique variations.
         | 
| 112 96 | 
             
            test_files:
         | 
| 113 97 | 
             
            - spec/lib/spintax_parser_spec.rb
         | 
    
        data/Guardfile
    DELETED
    
    | @@ -1,24 +0,0 @@ | |
| 1 | 
            -
            # Guardfile
         | 
| 2 | 
            -
            # More info at https://github.com/guard/guard#readme
         | 
| 3 | 
            -
             | 
| 4 | 
            -
            guard 'rspec' do
         | 
| 5 | 
            -
              watch(%r{^spec/.+_spec\.rb$})
         | 
| 6 | 
            -
              watch(%r{^lib/(.+)\.rb$})     { |m| "spec/lib/#{m[1]}_spec.rb" }
         | 
| 7 | 
            -
              watch('spec/spec_helper.rb')  { "spec" }
         | 
| 8 | 
            -
             | 
| 9 | 
            -
              # Rails example
         | 
| 10 | 
            -
              watch(%r{^app/(.+)\.rb$})                           { |m| "spec/#{m[1]}_spec.rb" }
         | 
| 11 | 
            -
              watch(%r{^app/(.*)(\.erb|\.haml)$})                 { |m| "spec/#{m[1]}#{m[2]}_spec.rb" }
         | 
| 12 | 
            -
              watch(%r{^app/controllers/(.+)_(controller)\.rb$})  { |m| ["spec/routing/#{m[1]}_routing_spec.rb", "spec/#{m[2]}s/#{m[1]}_#{m[2]}_spec.rb", "spec/acceptance/#{m[1]}_spec.rb"] }
         | 
| 13 | 
            -
              watch(%r{^spec/support/(.+)\.rb$})                  { "spec" }
         | 
| 14 | 
            -
              watch('config/routes.rb')                           { "spec/routing" }
         | 
| 15 | 
            -
              watch('app/controllers/application_controller.rb')  { "spec/controllers" }
         | 
| 16 | 
            -
              
         | 
| 17 | 
            -
              # Capybara request specs
         | 
| 18 | 
            -
              watch(%r{^app/views/(.+)/.*\.(erb|haml)$})          { |m| "spec/requests/#{m[1]}_spec.rb" }
         | 
| 19 | 
            -
              
         | 
| 20 | 
            -
              # Turnip features and steps
         | 
| 21 | 
            -
              watch(%r{^spec/acceptance/(.+)\.feature$})
         | 
| 22 | 
            -
              watch(%r{^spec/acceptance/steps/(.+)_steps\.rb$})   { |m| Dir[File.join("**/#{m[1]}.feature")][0] || 'spec/acceptance' }
         | 
| 23 | 
            -
            end
         | 
| 24 | 
            -
             |