ruby-fizzbuzz 0.0.2 → 0.0.3
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.tar.gz.sig +0 -0
- data/CHANGES +16 -0
- data/CHANGES.rdoc +16 -0
- data/README.rdoc +2 -1
- data/TODO +6 -5
- data/VERSION +1 -1
- data/ext/fizzbuzz/extconf.rb +25 -1
- data/ext/fizzbuzz/fizzbuzz.c +145 -47
- data/ext/fizzbuzz/fizzbuzz.h +30 -12
- data/lib/fizzbuzz.rb +20 -20
- data/lib/fizzbuzz/bignum.rb +12 -12
- data/lib/fizzbuzz/integer.rb +11 -11
- data/lib/fizzbuzz/version.rb +1 -1
- metadata +15 -7
- metadata.gz.sig +0 -0
    
        data.tar.gz.sig
    CHANGED
    
    | Binary file | 
    
        data/CHANGES
    CHANGED
    
    | @@ -1,3 +1,19 @@ | |
| 1 | 
            +
            fizzbuzz (0.0.3)
         | 
| 2 | 
            +
             | 
| 3 | 
            +
              * Added custom exceptions and improved error handling;
         | 
| 4 | 
            +
              * Added more variety of Rubies on which tests are being run with Travis CI;
         | 
| 5 | 
            +
              * Added project to Rubygems (http://rubygems.org) so it can be installed
         | 
| 6 | 
            +
                with just "gem install ruby-fizzbuzz" command;
         | 
| 7 | 
            +
              * Renamed project from "fizzbuzz" to "ruby-fizzbuzz" to avoid clashes with
         | 
| 8 | 
            +
                other Ruby gems hosted on Rubygems web site;
         | 
| 9 | 
            +
              * Made "mkmf" in extconf.rb more user-friendly (it now reports missing
         | 
| 10 | 
            +
                build-time dependencies better);
         | 
| 11 | 
            +
              * Split Ruby gem specification (or gemspec if you wish) away from Rakefile
         | 
| 12 | 
            +
                into its own file (namely ruby-fizzbuzz.gemspec);
         | 
| 13 | 
            +
              * Improved documentation and removed bunch of small code smells.
         | 
| 14 | 
            +
             | 
| 15 | 
            +
            -- Krzysztof Wilczynski <krzysztof.wilczynski@linux.com>  Sat, 31 Aug 2013 17:54:54 +0000
         | 
| 16 | 
            +
             | 
| 1 17 | 
             
            fizzbuzz (0.0.2)
         | 
| 2 18 |  | 
| 3 19 | 
             
              * Added is_fizz?, is_buzz? and is_fizzbuzz? singleton methods to FizzBuzz class;
         | 
    
        data/CHANGES.rdoc
    CHANGED
    
    | @@ -1,3 +1,19 @@ | |
| 1 | 
            +
            fizzbuzz (0.0.3)
         | 
| 2 | 
            +
             | 
| 3 | 
            +
              * Added custom exceptions and improved error handling;
         | 
| 4 | 
            +
              * Added more variety of Rubies on which tests are being run with Travis CI;
         | 
| 5 | 
            +
              * Added project to Rubygems (http://rubygems.org) so it can be installed
         | 
| 6 | 
            +
                with just "gem install ruby-fizzbuzz" command;
         | 
| 7 | 
            +
              * Renamed project from "fizzbuzz" to "ruby-fizzbuzz" to avoid clashes with
         | 
| 8 | 
            +
                other Ruby gems hosted on Rubygems web site;
         | 
| 9 | 
            +
              * Made "mkmf" in extconf.rb more user-friendly (it now reports missing
         | 
| 10 | 
            +
                build-time dependencies better);
         | 
| 11 | 
            +
              * Split Ruby gem specification (or gemspec if you wish) away from Rakefile
         | 
| 12 | 
            +
                into its own file (namely ruby-fizzbuzz.gemspec);
         | 
| 13 | 
            +
              * Improved documentation and removed bunch of small code smells.
         | 
| 14 | 
            +
             | 
| 15 | 
            +
            -- Krzysztof Wilczynski <krzysztof.wilczynski@linux.com>  Sat, 31 Aug 2013 17:54:54 +0000
         | 
| 16 | 
            +
             | 
| 1 17 | 
             
            fizzbuzz (0.0.2)
         | 
| 2 18 |  | 
| 3 19 | 
             
              * Added is_fizz?, is_buzz? and is_fizzbuzz? singleton methods to FizzBuzz class;
         | 
    
        data/README.rdoc
    CHANGED
    
    | @@ -4,4 +4,5 @@ to a popular FizzBuzz problem for Ruby. | |
| 4 4 | 
             
            Written in C as an example of using Ruby's C API - with the support
         | 
| 5 5 | 
             
            for arbitrary large numeric values via the Bignum class.
         | 
| 6 6 |  | 
| 7 | 
            -
            {<img src="https://travis-ci.org/kwilczynski/ruby-fizzbuzz.png?branch=master"/>}[https://travis-ci.org/kwilczynski/ruby-fizzbuzz]
         | 
| 7 | 
            +
            {<img src="https://travis-ci.org/kwilczynski/ruby-fizzbuzz.png?branch=master" alt="Build Status"/>}[https://travis-ci.org/kwilczynski/ruby-fizzbuzz]
         | 
| 8 | 
            +
            {<img src="https://badge.fury.io/rb/ruby-fizzbuzz.png" alt="Gem Version" />}[http://badge.fury.io/rb/ruby-fizzbuzz]
         | 
    
        data/TODO
    CHANGED
    
    | @@ -4,19 +4,20 @@ fizzbuzz (1.0.0) | |
| 4 4 |  | 
| 5 5 | 
             
            -- Krzysztof Wilczynski <krzysztof.wilczynski@linux.com>  Mon, 01 Oct 2012 17:57:18 +0100
         | 
| 6 6 |  | 
| 7 | 
            -
            fizzbuzz (0.0. | 
| 7 | 
            +
            fizzbuzz (0.0.5)
         | 
| 8 8 |  | 
| 9 9 | 
             
              * Improve github project page;
         | 
| 10 | 
            -
              * Re-factor unit tests to make them more  | 
| 10 | 
            +
              * Re-factor unit tests to make them more idiomatic (maybe move to Rspec and BDD?).
         | 
| 11 11 |  | 
| 12 | 
            -
            -- Krzysztof Wilczynski <krzysztof.wilczynski@linux.com>   | 
| 12 | 
            +
            -- Krzysztof Wilczynski <krzysztof.wilczynski@linux.com>  Sun, 31 Aug 2013 17:50:06 +0000
         | 
| 13 13 |  | 
| 14 | 
            -
            fizzbuzz (0.0. | 
| 14 | 
            +
            fizzbuzz (0.0.4)
         | 
| 15 15 |  | 
| 16 | 
            +
              * Move to YARD from RDoc (as RDoc is very bad, really);
         | 
| 16 17 | 
             
              * Add pure-Ruby implementation;
         | 
| 17 18 | 
             
              * Add benchmarks;
         | 
| 18 19 | 
             
              * Add some examples;
         | 
| 19 20 | 
             
              * Add Doxygen style comments for other functions in the source code;
         | 
| 20 21 | 
             
              * Improve documentation i.e. source code commenting, README file, etc.
         | 
| 21 22 |  | 
| 22 | 
            -
            -- Krzysztof Wilczynski <krzysztof.wilczynski@linux.com>   | 
| 23 | 
            +
            -- Krzysztof Wilczynski <krzysztof.wilczynski@linux.com>  Sun, 31 Aug 2013 17:50:06 +0000
         | 
    
        data/VERSION
    CHANGED
    
    | @@ -1 +1 @@ | |
| 1 | 
            -
            0.0. | 
| 1 | 
            +
            0.0.3
         | 
    
        data/ext/fizzbuzz/extconf.rb
    CHANGED
    
    | @@ -29,7 +29,31 @@ $LDFLAGS << " %s" % ENV['LDFLAGS'] if ENV['LDFLAGS'] | |
| 29 29 | 
             
            $CFLAGS << " %s" % ENV['CFLAGS'] if ENV['CFLAGS']
         | 
| 30 30 | 
             
            $CFLAGS << ' -std=c99 -g -Wall -Wextra -pedantic'
         | 
| 31 31 |  | 
| 32 | 
            -
            have_header('ruby.h') | 
| 32 | 
            +
            unless have_header('ruby.h')
         | 
| 33 | 
            +
              abort <<-EOS
         | 
| 34 | 
            +
             | 
| 35 | 
            +
              You appear to be missing Ruby development libraries and/or header
         | 
| 36 | 
            +
              files. You can install missing compile-time dependencies in one of
         | 
| 37 | 
            +
              the following ways:
         | 
| 38 | 
            +
             | 
| 39 | 
            +
              - Debian / Ubuntu
         | 
| 40 | 
            +
             | 
| 41 | 
            +
                  apt-get install ruby-dev
         | 
| 42 | 
            +
             | 
| 43 | 
            +
              - Red Hat / CentOS / Fedora
         | 
| 44 | 
            +
             | 
| 45 | 
            +
                  yum install ruby-devel
         | 
| 46 | 
            +
             | 
| 47 | 
            +
             | 
| 48 | 
            +
              Alternatively, you can use either of the following Ruby version
         | 
| 49 | 
            +
              managers in order to install Ruby locally (for your user only)
         | 
| 50 | 
            +
              and/or system-wide:
         | 
| 51 | 
            +
             | 
| 52 | 
            +
              - Ruby Version Manager (for RVM, see http://rvm.io/)
         | 
| 53 | 
            +
              - Ruby Environment (for rbenv, see http://github.com/sstephenson/rbenv)
         | 
| 54 | 
            +
             | 
| 55 | 
            +
              EOS
         | 
| 56 | 
            +
            end
         | 
| 33 57 |  | 
| 34 58 | 
             
            dir_config('fizzbuzz')
         | 
| 35 59 |  | 
    
        data/ext/fizzbuzz/fizzbuzz.c
    CHANGED
    
    | @@ -18,19 +18,31 @@ | |
| 18 18 | 
             
             * limitations under the License.
         | 
| 19 19 | 
             
             */
         | 
| 20 20 |  | 
| 21 | 
            -
            /* :startdoc: */
         | 
| 22 | 
            -
             | 
| 23 21 | 
             
            #include <fizzbuzz.h>
         | 
| 24 22 |  | 
| 25 23 | 
             
            ID id_at_start, id_at_stop;
         | 
| 24 | 
            +
             | 
| 26 25 | 
             
            VALUE rb_cFizzBuzz = Qnil;
         | 
| 27 26 |  | 
| 27 | 
            +
            VALUE rb_fb_eError = Qnil;
         | 
| 28 | 
            +
            VALUE rb_fb_eTypeError = Qnil;
         | 
| 29 | 
            +
            VALUE rb_fb_eRangeError = Qnil;
         | 
| 30 | 
            +
             | 
| 28 31 | 
             
            void Init_fizzbuzz(void);
         | 
| 29 32 |  | 
| 30 33 | 
             
            static VALUE fizzbuzz_evaluate(VALUE value);
         | 
| 31 34 | 
             
            static VALUE fizzbuzz_values(VALUE object, return_type_t type,
         | 
| 32 35 | 
             
                    direction_t direction);
         | 
| 33 36 |  | 
| 37 | 
            +
            static VALUE fizzbuzz_exception_wrapper(VALUE value);
         | 
| 38 | 
            +
            static VALUE fizzbuzz_exception(void *data);
         | 
| 39 | 
            +
             | 
| 40 | 
            +
            static VALUE fizzbuzz_type_error(VALUE klass, const char *message);
         | 
| 41 | 
            +
            static VALUE fizzbuzz_range_error(VALUE klass, VALUE start, VALUE stop,
         | 
| 42 | 
            +
                    const char *message);
         | 
| 43 | 
            +
             | 
| 44 | 
            +
            /* :startdoc: */
         | 
| 45 | 
            +
             | 
| 34 46 | 
             
            /*
         | 
| 35 47 | 
             
             * call-seq:
         | 
| 36 48 | 
             
             *    FizzBuzz.new( start, stop ) -> self
         | 
| @@ -48,14 +60,13 @@ static VALUE fizzbuzz_values(VALUE object, return_type_t type, | |
| 48 60 | 
             
             *    fb = FizzBuzz.new(-15, 15)    #=> #<FizzBuzz:0xb6fd0460 @stop=15, @start=-15>
         | 
| 49 61 | 
             
             *
         | 
| 50 62 | 
             
             * The given value of +stop+ must always be greater than or equal to the
         | 
| 51 | 
            -
             * given value of +start+, otherwise raises an  | 
| 52 | 
            -
             *
         | 
| 53 | 
            -
             * Will raise a +TypeError+ exception if given value of either +start+
         | 
| 54 | 
            -
             * or +stop+ is not an integer type.
         | 
| 63 | 
            +
             * given value of +start+, otherwise raises an <i>FizzBuzz::RangeError</i>
         | 
| 64 | 
            +
             * exception.
         | 
| 55 65 | 
             
             *
         | 
| 56 | 
            -
             *  | 
| 66 | 
            +
             * Will raise a <i>FizzBuzz::TypeError</i> exception if given value of either
         | 
| 67 | 
            +
             * +start+ or +stop+ is not an _Integer_ or _Bignum_ type.
         | 
| 57 68 | 
             
             *
         | 
| 58 | 
            -
             * | 
| 69 | 
            +
             * See also: FizzBuzz::fizzbuzz
         | 
| 59 70 | 
             
             */
         | 
| 60 71 | 
             
            VALUE
         | 
| 61 72 | 
             
            rb_fb_initialize(int argc, VALUE *argv, VALUE object)
         | 
| @@ -64,10 +75,10 @@ rb_fb_initialize(int argc, VALUE *argv, VALUE object) | |
| 64 75 |  | 
| 65 76 | 
             
                rb_scan_args(argc, argv, "20", &start, &stop);
         | 
| 66 77 |  | 
| 67 | 
            -
                CHECK_TYPE(start,  | 
| 68 | 
            -
                CHECK_TYPE(stop,  | 
| 78 | 
            +
                CHECK_TYPE(start, error(E_INVALID_START_TYPE));
         | 
| 79 | 
            +
                CHECK_TYPE(stop, error(E_INVALID_STOP_TYPE));
         | 
| 69 80 |  | 
| 70 | 
            -
                 | 
| 81 | 
            +
                CHECK_RANGE(start, stop, error(E_BAD_VALUE_START));
         | 
| 71 82 |  | 
| 72 83 | 
             
                rb_ivar_set(object, id_at_start, start);
         | 
| 73 84 | 
             
                rb_ivar_set(object, id_at_stop, stop);
         | 
| @@ -83,8 +94,8 @@ rb_fb_initialize(int argc, VALUE *argv, VALUE object) | |
| 83 94 | 
             
             *
         | 
| 84 95 | 
             
             * Example:
         | 
| 85 96 | 
             
             *
         | 
| 86 | 
            -
             *    fb = FizzBuzz.new(1, 100) | 
| 87 | 
            -
             *    fb.start | 
| 97 | 
            +
             *    fb = FizzBuzz.new(1, 100)   #=> #<FizzBuzz:0xf726b48c @stop=100, @start=1>
         | 
| 98 | 
            +
             *    fb.start                    #=> 1
         | 
| 88 99 | 
             
             */
         | 
| 89 100 | 
             
            VALUE
         | 
| 90 101 | 
             
            rb_fb_get_start(VALUE object)
         | 
| @@ -97,25 +108,26 @@ rb_fb_get_start(VALUE object) | |
| 97 108 | 
             
             *    fizzfuzz.start= (integer) -> integer
         | 
| 98 109 | 
             
             *
         | 
| 99 110 | 
             
             * Sets the current value of +start+ if given new value is lower or equal
         | 
| 100 | 
            -
             * to the current value of +stop+, or raises an  | 
| 101 | 
            -
             * otherwise.
         | 
| 111 | 
            +
             * to the current value of +stop+, or raises an <i>FizzBuzz::RangeError</i>
         | 
| 112 | 
            +
             * exception otherwise.
         | 
| 102 113 | 
             
             *
         | 
| 103 114 | 
             
             * Examples:
         | 
| 104 115 | 
             
             *
         | 
| 105 | 
            -
             *    fb = FizzBuzz.new(1, 100) | 
| 106 | 
            -
             *    fb.start | 
| 107 | 
            -
             *    fb.start = 15 | 
| 108 | 
            -
             *    fb.start | 
| 116 | 
            +
             *    fb = FizzBuzz.new(1, 100)   #=> #<FizzBuzz:0xf726f03c @stop=100, @start=1>
         | 
| 117 | 
            +
             *    fb.start                    #=> 1
         | 
| 118 | 
            +
             *    fb.start = 15               #=> 15
         | 
| 119 | 
            +
             *    fb.start                    #=> 15
         | 
| 109 120 | 
             
             *
         | 
| 110 | 
            -
             * Will raise a  | 
| 121 | 
            +
             * Will raise a <i>FizzBuzz::TypeError</i> exception if given value is not
         | 
| 122 | 
            +
             * an _Integer_ or _Bignum_ type.
         | 
| 111 123 | 
             
             */
         | 
| 112 124 | 
             
            VALUE
         | 
| 113 125 | 
             
            rb_fb_set_start(VALUE object, VALUE value)
         | 
| 114 126 | 
             
            {
         | 
| 115 127 | 
             
                VALUE stop = rb_ivar_get(object, id_at_stop);
         | 
| 116 128 |  | 
| 117 | 
            -
                CHECK_TYPE(value,  | 
| 118 | 
            -
                 | 
| 129 | 
            +
                CHECK_TYPE(value, error(E_INVALID_START_TYPE));
         | 
| 130 | 
            +
                CHECK_RANGE(value, stop, error(E_BAD_VALUE_START));
         | 
| 119 131 |  | 
| 120 132 | 
             
                return rb_ivar_set(object, id_at_start, value);
         | 
| 121 133 | 
             
            }
         | 
| @@ -128,8 +140,8 @@ rb_fb_set_start(VALUE object, VALUE value) | |
| 128 140 | 
             
             *
         | 
| 129 141 | 
             
             * Example:
         | 
| 130 142 | 
             
             *
         | 
| 131 | 
            -
             *    fb = FizzBuzz.new(1, 100) | 
| 132 | 
            -
             *    fb.stop | 
| 143 | 
            +
             *    fb = FizzBuzz.new(1, 100)   #=> #<FizzBuzz:0xf7272bec @stop=100, @start=1>
         | 
| 144 | 
            +
             *    fb.stop                     #=> 100
         | 
| 133 145 | 
             
             */
         | 
| 134 146 | 
             
            VALUE
         | 
| 135 147 | 
             
            rb_fb_get_stop(VALUE object)
         | 
| @@ -139,28 +151,29 @@ rb_fb_get_stop(VALUE object) | |
| 139 151 |  | 
| 140 152 | 
             
            /*
         | 
| 141 153 | 
             
             * call-seq:
         | 
| 142 | 
            -
             *    fizzfuzz. | 
| 154 | 
            +
             *    fizzfuzz.stop= (integer) -> integer
         | 
| 143 155 | 
             
             *
         | 
| 144 156 | 
             
             * Sets the current value of +stop+ if given new value is greater or equal
         | 
| 145 | 
            -
             * to the current value of +start+, or raises an  | 
| 146 | 
            -
             * otherwise.
         | 
| 157 | 
            +
             * to the current value of +start+, or raises an <i>FizzBuzz::RangeError</i>
         | 
| 158 | 
            +
             * exception otherwise.
         | 
| 147 159 | 
             
             *
         | 
| 148 160 | 
             
             * Example:
         | 
| 149 161 | 
             
             *
         | 
| 150 | 
            -
             *    fb = FizzBuzz.new(1, 100) | 
| 151 | 
            -
             *    fb.stop | 
| 152 | 
            -
             *    fb.stop = 15 | 
| 153 | 
            -
             *    fb.stop | 
| 162 | 
            +
             *    fb = FizzBuzz.new(1, 100)   #=> #<FizzBuzz:0xf727679c @stop=100, @start=1>
         | 
| 163 | 
            +
             *    fb.stop                     #=> 100
         | 
| 164 | 
            +
             *    fb.stop = 15                #=> 15
         | 
| 165 | 
            +
             *    fb.stop                     #=> 15
         | 
| 154 166 | 
             
             *
         | 
| 155 | 
            -
             * Will raise a  | 
| 167 | 
            +
             * Will raise a <i>FizzBuzz::TypeError</i> exception if given value is not
         | 
| 168 | 
            +
             * an _Integer_ or _Bignum_ type.
         | 
| 156 169 | 
             
             */
         | 
| 157 170 | 
             
            VALUE
         | 
| 158 171 | 
             
            rb_fb_set_stop(VALUE object, VALUE value)
         | 
| 159 172 | 
             
            {
         | 
| 160 173 | 
             
                VALUE start = rb_ivar_get(object, id_at_start);
         | 
| 161 174 |  | 
| 162 | 
            -
                CHECK_TYPE(value,  | 
| 163 | 
            -
                 | 
| 175 | 
            +
                CHECK_TYPE(value, error(E_INVALID_STOP_TYPE));
         | 
| 176 | 
            +
                CHECK_RANGE(start, value, error(E_BAD_VALUE_STOP));
         | 
| 164 177 |  | 
| 165 178 | 
             
                return rb_ivar_set(object, id_at_stop, value);
         | 
| 166 179 | 
             
            }
         | 
| @@ -174,8 +187,8 @@ rb_fb_set_stop(VALUE object, VALUE value) | |
| 174 187 | 
             
             *
         | 
| 175 188 | 
             
             * Example:
         | 
| 176 189 | 
             
             *
         | 
| 177 | 
            -
             *    fb = FizzBuzz.new(1, 15) | 
| 178 | 
            -
             *    fb.to_a | 
| 190 | 
            +
             *    fb = FizzBuzz.new(1, 15)   #=> #<FizzBuzz:0xf727fd60 @stop=15, @start=1>
         | 
| 191 | 
            +
             *    fb.to_a                    #=> [1, 2, "Fizz", 4, "Buzz", "Fizz", 7, 8, "Fizz", "Buzz", 11, "Fizz", 13, 14, "FizzBuzz"]
         | 
| 179 192 | 
             
             *
         | 
| 180 193 | 
             
             * See also: FizzBuzz::fizzbuzz
         | 
| 181 194 | 
             
             */
         | 
| @@ -197,7 +210,7 @@ rb_fb_array(VALUE object) | |
| 197 210 | 
             
             *
         | 
| 198 211 | 
             
             * Example:
         | 
| 199 212 | 
             
             *
         | 
| 200 | 
            -
             *    fb = FizzBuzz.new(1, 15) | 
| 213 | 
            +
             *    fb = FizzBuzz.new(1, 15)   #=> #<FizzBuzz:0xf722f8ec @stop=15, @start=1>
         | 
| 201 214 | 
             
             *    fb.each {|value| puts "Got #{value}" }
         | 
| 202 215 | 
             
             *
         | 
| 203 216 | 
             
             * Produces:
         | 
| @@ -239,7 +252,7 @@ rb_fb_enumerator(VALUE object) | |
| 239 252 | 
             
             *
         | 
| 240 253 | 
             
             * If no block is given, an +Enumerator+ is returned instead.
         | 
| 241 254 | 
             
             *
         | 
| 242 | 
            -
             *    fb = FizzBuzz.new(1, 15) | 
| 255 | 
            +
             *    fb = FizzBuzz.new(1, 15)   #=> #<FizzBuzz:0xb7308664 @stop=15, @start=1>
         | 
| 243 256 | 
             
             *    fb.reverse_each {|value| puts "Got #{value}" }
         | 
| 244 257 | 
             
             *
         | 
| 245 258 | 
             
             * Produces:
         | 
| @@ -281,7 +294,8 @@ rb_fb_reverse_enumerator(VALUE object) | |
| 281 294 | 
             
             *    FizzBuzz.is_fizz?(5)    #=> false
         | 
| 282 295 | 
             
             *    FizzBuzz.is_fizz?(15)   #=> false
         | 
| 283 296 | 
             
             *
         | 
| 284 | 
            -
             * Will raise a  | 
| 297 | 
            +
             * Will raise a <i>FizzBuzz::TypeError</i> exception if given value is not
         | 
| 298 | 
            +
             * an _Integer_ or _Bignum_ type.
         | 
| 285 299 | 
             
             *
         | 
| 286 300 | 
             
             * See also: FizzBuzz::[]
         | 
| 287 301 | 
             
             */
         | 
| @@ -289,7 +303,7 @@ VALUE | |
| 289 303 | 
             
            rb_fb_is_fizz(VALUE object, VALUE value)
         | 
| 290 304 | 
             
            {
         | 
| 291 305 | 
             
                UNUSED(object);
         | 
| 292 | 
            -
                CHECK_TYPE(value,  | 
| 306 | 
            +
                CHECK_TYPE(value, error(E_INVALID_TYPE));
         | 
| 293 307 |  | 
| 294 308 | 
             
                return CBOOL2RVAL(IS_FIZZ(value));
         | 
| 295 309 | 
             
            }
         | 
| @@ -307,7 +321,8 @@ rb_fb_is_fizz(VALUE object, VALUE value) | |
| 307 321 | 
             
             *    FizzBuzz.is_buzz?(5)    #=> true
         | 
| 308 322 | 
             
             *    FizzBuzz.is_buzz?(15)   #=> false
         | 
| 309 323 | 
             
             *
         | 
| 310 | 
            -
             * Will raise a  | 
| 324 | 
            +
             * Will raise a <i>FizzBuzz::TypeError</i> exception if given value is not
         | 
| 325 | 
            +
             * an _Integer_ or _Bignum_ type.
         | 
| 311 326 | 
             
             *
         | 
| 312 327 | 
             
             * See also: FizzBuzz::[]
         | 
| 313 328 | 
             
             */
         | 
| @@ -315,7 +330,7 @@ VALUE | |
| 315 330 | 
             
            rb_fb_is_buzz(VALUE object, VALUE value)
         | 
| 316 331 | 
             
            {
         | 
| 317 332 | 
             
                UNUSED(object);
         | 
| 318 | 
            -
                CHECK_TYPE(value,  | 
| 333 | 
            +
                CHECK_TYPE(value, error(E_INVALID_TYPE));
         | 
| 319 334 |  | 
| 320 335 | 
             
                return CBOOL2RVAL(IS_BUZZ(value));
         | 
| 321 336 | 
             
            }
         | 
| @@ -333,7 +348,8 @@ rb_fb_is_buzz(VALUE object, VALUE value) | |
| 333 348 | 
             
             *    FizzBuzz.is_fizzbuzz?(5)    #=> false
         | 
| 334 349 | 
             
             *    FizzBuzz.is_fizzbuzz?(15)   #=> true
         | 
| 335 350 | 
             
             *
         | 
| 336 | 
            -
             * Will raise a  | 
| 351 | 
            +
             * Will raise a <i>FizzBuzz::TypeError</i> exception if given value is not
         | 
| 352 | 
            +
             * an _Integer_ or _Bignum_ type.
         | 
| 337 353 | 
             
             *
         | 
| 338 354 | 
             
             * See also: FizzBuzz::[]
         | 
| 339 355 | 
             
             */
         | 
| @@ -341,7 +357,7 @@ VALUE | |
| 341 357 | 
             
            rb_fb_is_fizzbuzz(VALUE object, VALUE value)
         | 
| 342 358 | 
             
            {
         | 
| 343 359 | 
             
                UNUSED(object);
         | 
| 344 | 
            -
                CHECK_TYPE(value,  | 
| 360 | 
            +
                CHECK_TYPE(value, error(E_INVALID_TYPE));
         | 
| 345 361 |  | 
| 346 362 | 
             
                return CBOOL2RVAL(IS_FIZZBUZZ(value));
         | 
| 347 363 | 
             
            }
         | 
| @@ -362,7 +378,8 @@ rb_fb_is_fizzbuzz(VALUE object, VALUE value) | |
| 362 378 | 
             
             *    FizzBuzz[5]    #=> "Buzz"
         | 
| 363 379 | 
             
             *    FizzBuzz[15]   #=> "FizzBuzz"
         | 
| 364 380 | 
             
             *
         | 
| 365 | 
            -
             * Will raise a  | 
| 381 | 
            +
             * Will raise a <i>FizzBuzz::TypeError</i> exception if given value is not
         | 
| 382 | 
            +
             * an _Integer_ or _Bignum_ type.
         | 
| 366 383 | 
             
             *
         | 
| 367 384 | 
             
             * See also: FizzBuzz::is_fizz?, FizzBuzz::is_buzz? and FizzBuzz::is_fizzbuzz?
         | 
| 368 385 | 
             
             */
         | 
| @@ -370,7 +387,7 @@ VALUE | |
| 370 387 | 
             
            rb_fb_square(VALUE object, VALUE value)
         | 
| 371 388 | 
             
            {
         | 
| 372 389 | 
             
                UNUSED(object);
         | 
| 373 | 
            -
                CHECK_TYPE(value,  | 
| 390 | 
            +
                CHECK_TYPE(value, error(E_INVALID_TYPE));
         | 
| 374 391 |  | 
| 375 392 | 
             
                return fizzbuzz_evaluate(value);
         | 
| 376 393 | 
             
            }
         | 
| @@ -442,6 +459,60 @@ fizzbuzz_values(VALUE object, return_type_t type, direction_t direction) | |
| 442 459 | 
             
                return WANT_ARRAY(type) ? array : object;
         | 
| 443 460 | 
             
            }
         | 
| 444 461 |  | 
| 462 | 
            +
            VALUE
         | 
| 463 | 
            +
            fizzbuzz_exception_wrapper(VALUE value)
         | 
| 464 | 
            +
            {
         | 
| 465 | 
            +
                exception_t *e = (struct exception *)value;
         | 
| 466 | 
            +
             | 
| 467 | 
            +
                return rb_exc_new2(e->klass, e->message);
         | 
| 468 | 
            +
            }
         | 
| 469 | 
            +
             | 
| 470 | 
            +
            VALUE
         | 
| 471 | 
            +
            fizzbuzz_exception(void *data)
         | 
| 472 | 
            +
            {
         | 
| 473 | 
            +
                int exception = 0;
         | 
| 474 | 
            +
                VALUE object = Qnil;
         | 
| 475 | 
            +
             | 
| 476 | 
            +
                exception_t *e = data;
         | 
| 477 | 
            +
             | 
| 478 | 
            +
                object = rb_protect(fizzbuzz_exception_wrapper, (VALUE)e, &exception);
         | 
| 479 | 
            +
             | 
| 480 | 
            +
                if (exception != 0) {
         | 
| 481 | 
            +
                    rb_jump_tag(exception);
         | 
| 482 | 
            +
                }
         | 
| 483 | 
            +
             | 
| 484 | 
            +
                rb_iv_set(object, "@start", e->start);
         | 
| 485 | 
            +
                rb_iv_set(object, "@stop", e->stop);
         | 
| 486 | 
            +
             | 
| 487 | 
            +
                return object;
         | 
| 488 | 
            +
            }
         | 
| 489 | 
            +
             | 
| 490 | 
            +
            VALUE
         | 
| 491 | 
            +
            fizzbuzz_type_error(VALUE klass, const char *message)
         | 
| 492 | 
            +
            {
         | 
| 493 | 
            +
                exception_t e;
         | 
| 494 | 
            +
             | 
| 495 | 
            +
                e.start = Qnil;
         | 
| 496 | 
            +
                e.stop = Qnil;
         | 
| 497 | 
            +
                e.message = message;
         | 
| 498 | 
            +
                e.klass = klass;
         | 
| 499 | 
            +
             | 
| 500 | 
            +
                return fizzbuzz_exception(&e);
         | 
| 501 | 
            +
            }
         | 
| 502 | 
            +
             | 
| 503 | 
            +
            VALUE
         | 
| 504 | 
            +
            fizzbuzz_range_error(VALUE klass, VALUE start, VALUE stop, const char *message)
         | 
| 505 | 
            +
            {
         | 
| 506 | 
            +
                exception_t e;
         | 
| 507 | 
            +
             | 
| 508 | 
            +
                e.start = start;
         | 
| 509 | 
            +
                e.stop = stop;
         | 
| 510 | 
            +
                e.message = message;
         | 
| 511 | 
            +
                e.klass = klass;
         | 
| 512 | 
            +
             | 
| 513 | 
            +
                return fizzbuzz_exception(&e);
         | 
| 514 | 
            +
            }
         | 
| 515 | 
            +
             | 
| 445 516 | 
             
            void
         | 
| 446 517 | 
             
            Init_fizzbuzz(void)
         | 
| 447 518 | 
             
            {
         | 
| @@ -449,9 +520,36 @@ Init_fizzbuzz(void) | |
| 449 520 | 
             
                id_at_stop  = rb_intern("@stop");
         | 
| 450 521 |  | 
| 451 522 | 
             
                rb_cFizzBuzz = rb_define_class("FizzBuzz", rb_cObject);
         | 
| 452 | 
            -
             | 
| 453 523 | 
             
                rb_include_module(rb_cFizzBuzz, rb_mEnumerable);
         | 
| 454 524 |  | 
| 525 | 
            +
                /*
         | 
| 526 | 
            +
                 * Raised when _FizzBuzz_ encounters an error.
         | 
| 527 | 
            +
                 */
         | 
| 528 | 
            +
                rb_fb_eError = rb_define_class_under(rb_cFizzBuzz, "Error", rb_eStandardError);
         | 
| 529 | 
            +
             | 
| 530 | 
            +
                /*
         | 
| 531 | 
            +
                 * Stores current value of +start+ for which the exception might have been
         | 
| 532 | 
            +
                 * raised, or +nil+ otherwise.
         | 
| 533 | 
            +
                 */
         | 
| 534 | 
            +
                rb_define_attr(rb_fb_eError, "start", 1, 0);
         | 
| 535 | 
            +
             | 
| 536 | 
            +
                /*
         | 
| 537 | 
            +
                 * Stores current value of +stop+ for which the exception might have been
         | 
| 538 | 
            +
                 * raised, or +nil+ otherwise.
         | 
| 539 | 
            +
                 */
         | 
| 540 | 
            +
                rb_define_attr(rb_fb_eError, "stop", 1, 0);
         | 
| 541 | 
            +
             | 
| 542 | 
            +
                /*
         | 
| 543 | 
            +
                 * Raised when the arguments are wrong or of an incompatible type.
         | 
| 544 | 
            +
                 */
         | 
| 545 | 
            +
                rb_fb_eTypeError = rb_define_class_under(rb_cFizzBuzz, "TypeError", rb_fb_eError);
         | 
| 546 | 
            +
             | 
| 547 | 
            +
                /*
         | 
| 548 | 
            +
                 * Raised when the arguments are wrong or given range from +start+ to +stop+
         | 
| 549 | 
            +
                 * is incorrect.
         | 
| 550 | 
            +
                 */
         | 
| 551 | 
            +
                rb_fb_eRangeError = rb_define_class_under(rb_cFizzBuzz, "RangeError", rb_fb_eError);
         | 
| 552 | 
            +
             | 
| 455 553 | 
             
                rb_define_method(rb_cFizzBuzz, "initialize", RUBY_METHOD_FUNC(rb_fb_initialize), -1);
         | 
| 456 554 |  | 
| 457 555 | 
             
                rb_define_method(rb_cFizzBuzz, "start", RUBY_METHOD_FUNC(rb_fb_get_start), 0);
         | 
    
        data/ext/fizzbuzz/fizzbuzz.h
    CHANGED
    
    | @@ -66,18 +66,24 @@ extern "C" { | |
| 66 66 | 
             
            #define LOOP_FORWARD(x) ((x) == D_LOOP_FORWARD)
         | 
| 67 67 | 
             
            #define LOOP_REVERSE(x) ((x) == D_LOOP_REVERSE)
         | 
| 68 68 |  | 
| 69 | 
            -
            #define CHECK_TYPE(x, m) | 
| 70 | 
            -
                do { | 
| 71 | 
            -
                    if (!INTEGER_P(x)) | 
| 72 | 
            -
                         | 
| 69 | 
            +
            #define CHECK_TYPE(x, m)                                                    \
         | 
| 70 | 
            +
                do {                                                                    \
         | 
| 71 | 
            +
                    if (!INTEGER_P(x)) {                                                \
         | 
| 72 | 
            +
                        VALUE __e_type = fizzbuzz_type_error(rb_fb_eTypeError, (m));    \
         | 
| 73 | 
            +
                        rb_exc_raise(__e_type);                                         \
         | 
| 74 | 
            +
                    }                                                                   \
         | 
| 73 75 | 
             
                } while (0)
         | 
| 74 76 |  | 
| 75 | 
            -
            #define  | 
| 76 | 
            -
                do { | 
| 77 | 
            -
                    if (GREATER( | 
| 78 | 
            -
                         | 
| 77 | 
            +
            #define CHECK_RANGE(x, y, m)                                                            \
         | 
| 78 | 
            +
                do {                                                                                \
         | 
| 79 | 
            +
                    if (GREATER(x, y)) {                                                            \
         | 
| 80 | 
            +
                        VALUE __e_range = fizzbuzz_range_error(rb_fb_eRangeError, (x), (y), (m));   \
         | 
| 81 | 
            +
                        rb_exc_raise(__e_range);                                                    \
         | 
| 82 | 
            +
                    }                                                                               \
         | 
| 79 83 | 
             
                } while (0)
         | 
| 80 84 |  | 
| 85 | 
            +
            #define error(t) errors[(t)]
         | 
| 86 | 
            +
             | 
| 81 87 | 
             
            enum error {
         | 
| 82 88 | 
             
                E_INVALID_TYPE = 0,
         | 
| 83 89 | 
             
                E_INVALID_START_TYPE,
         | 
| @@ -96,14 +102,21 @@ enum direction { | |
| 96 102 | 
             
                D_LOOP_REVERSE
         | 
| 97 103 | 
             
            };
         | 
| 98 104 |  | 
| 99 | 
            -
             | 
| 105 | 
            +
            struct exception {
         | 
| 106 | 
            +
                VALUE start;
         | 
| 107 | 
            +
                VALUE stop;
         | 
| 108 | 
            +
                const char *message;
         | 
| 109 | 
            +
                VALUE klass;
         | 
| 110 | 
            +
            };
         | 
| 111 | 
            +
             | 
| 100 112 | 
             
            typedef enum return_type return_type_t;
         | 
| 101 113 | 
             
            typedef enum direction direction_t;
         | 
| 114 | 
            +
            typedef struct exception exception_t;
         | 
| 102 115 |  | 
| 103 116 | 
             
            static const char *errors[] = {
         | 
| 104 | 
            -
                "must be an  | 
| 105 | 
            -
                "must be an  | 
| 106 | 
            -
                "must be an  | 
| 117 | 
            +
                "must be an Integer or Bignum type",
         | 
| 118 | 
            +
                "must be an Integer or Bignum type for start",
         | 
| 119 | 
            +
                "must be an Integer or Bignum type for stop",
         | 
| 107 120 | 
             
                "start value is higher than stop value",
         | 
| 108 121 | 
             
                "stop value is lower than start value",
         | 
| 109 122 | 
             
                NULL
         | 
| @@ -205,8 +218,13 @@ fizzbuzz_less_equal(VALUE a, VALUE b) | |
| 205 218 | 
             
            }
         | 
| 206 219 |  | 
| 207 220 | 
             
            RUBY_EXTERN ID id_at_start, id_at_stop;
         | 
| 221 | 
            +
             | 
| 208 222 | 
             
            RUBY_EXTERN VALUE rb_cFizzBuzz;
         | 
| 209 223 |  | 
| 224 | 
            +
            RUBY_EXTERN VALUE rb_fb_eError;
         | 
| 225 | 
            +
            RUBY_EXTERN VALUE rb_fb_eTypeError;
         | 
| 226 | 
            +
            RUBY_EXTERN VALUE rb_fb_eRangeError;
         | 
| 227 | 
            +
             | 
| 210 228 | 
             
            RUBY_EXTERN VALUE rb_fb_initialize(int argc, VALUE *argv, VALUE object);
         | 
| 211 229 |  | 
| 212 230 | 
             
            RUBY_EXTERN VALUE rb_fb_get_start(VALUE object);
         | 
    
        data/lib/fizzbuzz.rb
    CHANGED
    
    | @@ -35,8 +35,8 @@ require 'fizzbuzz/bignum' | |
| 35 35 | 
             
            class FizzBuzz
         | 
| 36 36 | 
             
              #
         | 
| 37 37 | 
             
              # call-seq:
         | 
| 38 | 
            -
              # | 
| 39 | 
            -
              # | 
| 38 | 
            +
              #    FizzBuzz.fizzbuzz( start, stop, reverse )                  -> array
         | 
| 39 | 
            +
              #    FizzBuzz.fizzbuzz( start, stop, reverse ) {|value| block } -> self
         | 
| 40 40 | 
             
              #
         | 
| 41 41 | 
             
              # Returns either an array or accepts a block if such is given. When a block is given
         | 
| 42 42 | 
             
              # then it will call the block once for each subsequent value for a given range from
         | 
| @@ -48,30 +48,30 @@ class FizzBuzz | |
| 48 48 | 
             
              #
         | 
| 49 49 | 
             
              # Example:
         | 
| 50 50 | 
             
              #
         | 
| 51 | 
            -
              # | 
| 52 | 
            -
              # | 
| 51 | 
            +
              #    FizzBuzz.fizzbuzz(1, 15)         #=> [1, 2, "Fizz", 4, "Buzz", "Fizz", 7, 8, "Fizz", "Buzz", 11, "Fizz", 13, 14, "FizzBuzz"]
         | 
| 52 | 
            +
              #    FizzBuzz.fizzbuzz(1, 15, true)   #=> ["FizzBuzz", 14, 13, "Fizz", 11, "Buzz", "Fizz", 8, 7, "Fizz", "Buzz", 4, "Fizz", 2, 1]
         | 
| 53 53 | 
             
              #
         | 
| 54 54 | 
             
              # Example:
         | 
| 55 55 | 
             
              #
         | 
| 56 | 
            -
              # | 
| 56 | 
            +
              #    FizzBuzz.fizzbuzz(1, 15) {|value| puts "Got #{value}" }
         | 
| 57 57 | 
             
              #
         | 
| 58 58 | 
             
              # Produces:
         | 
| 59 59 | 
             
              #
         | 
| 60 | 
            -
              # | 
| 61 | 
            -
              # | 
| 62 | 
            -
              # | 
| 63 | 
            -
              # | 
| 64 | 
            -
              # | 
| 65 | 
            -
              # | 
| 66 | 
            -
              # | 
| 67 | 
            -
              # | 
| 68 | 
            -
              # | 
| 69 | 
            -
              # | 
| 70 | 
            -
              # | 
| 71 | 
            -
              # | 
| 72 | 
            -
              # | 
| 73 | 
            -
              # | 
| 74 | 
            -
              # | 
| 60 | 
            +
              #    Got 1
         | 
| 61 | 
            +
              #    Got 2
         | 
| 62 | 
            +
              #    Got Fizz
         | 
| 63 | 
            +
              #    Got 4
         | 
| 64 | 
            +
              #    Got Buzz
         | 
| 65 | 
            +
              #    Got Fizz
         | 
| 66 | 
            +
              #    Got 7
         | 
| 67 | 
            +
              #    Got 8
         | 
| 68 | 
            +
              #    Got Fizz
         | 
| 69 | 
            +
              #    Got Buzz
         | 
| 70 | 
            +
              #    Got 11
         | 
| 71 | 
            +
              #    Got Fizz
         | 
| 72 | 
            +
              #    Got 13
         | 
| 73 | 
            +
              #    Got 14
         | 
| 74 | 
            +
              #    Got FizzBuzz
         | 
| 75 75 | 
             
              #
         | 
| 76 76 | 
             
              # See also: FizzBuzz::[], FizzBuzz::new, FizzBuzz#to_a, FizzBuzz#each and FizzBuzz#reverse_each
         | 
| 77 77 | 
             
              #
         | 
    
        data/lib/fizzbuzz/bignum.rb
    CHANGED
    
    | @@ -28,16 +28,16 @@ | |
| 28 28 | 
             
            class Bignum
         | 
| 29 29 | 
             
              #
         | 
| 30 30 | 
             
              # call-seq:
         | 
| 31 | 
            -
              # | 
| 31 | 
            +
              #    Bignum.fizz? -> true or false
         | 
| 32 32 | 
             
              #
         | 
| 33 33 | 
             
              # Returns +true+ if a given integer value is divisible by *three* (given
         | 
| 34 34 | 
             
              # value is a _Fizz_), or +false+ otherwise.
         | 
| 35 35 | 
             
              #
         | 
| 36 36 | 
             
              # Example:
         | 
| 37 37 | 
             
              #
         | 
| 38 | 
            -
              # | 
| 39 | 
            -
              # | 
| 40 | 
            -
              # | 
| 38 | 
            +
              #    1000000000000.fizz?   #=> false
         | 
| 39 | 
            +
              #    1000000000002.fizz?   #=> true
         | 
| 40 | 
            +
              #    1000000000005.fizz?   #=> false
         | 
| 41 41 | 
             
              #
         | 
| 42 42 | 
             
              # See also: FizzBuzz::[] and FizzBuzz::is_fizz?
         | 
| 43 43 | 
             
              #
         | 
| @@ -47,16 +47,16 @@ class Bignum | |
| 47 47 |  | 
| 48 48 | 
             
              #
         | 
| 49 49 | 
             
              # call-seq:
         | 
| 50 | 
            -
              # | 
| 50 | 
            +
              #    Bignum.buzz? -> true or false
         | 
| 51 51 | 
             
              #
         | 
| 52 52 | 
             
              # Returns +true+ if a given integer value is divisible by *five* (given
         | 
| 53 53 | 
             
              # value is a _Buzz_), or +false+ otherwise.
         | 
| 54 54 | 
             
              #
         | 
| 55 55 | 
             
              # Example:
         | 
| 56 56 | 
             
              #
         | 
| 57 | 
            -
              # | 
| 58 | 
            -
              # | 
| 59 | 
            -
              # | 
| 57 | 
            +
              #    1000000000000.buzz?   #=> true
         | 
| 58 | 
            +
              #    1000000000002.buzz?   #=> false
         | 
| 59 | 
            +
              #    1000000000005.buzz?   #=> false
         | 
| 60 60 | 
             
              #
         | 
| 61 61 | 
             
              # See also: FizzBuzz::[] and FizzBuzz::is_buzz?
         | 
| 62 62 | 
             
              #
         | 
| @@ -66,16 +66,16 @@ class Bignum | |
| 66 66 |  | 
| 67 67 | 
             
              #
         | 
| 68 68 | 
             
              # call-seq:
         | 
| 69 | 
            -
              # | 
| 69 | 
            +
              #    Bignum.fizzbuzz? -> true or false
         | 
| 70 70 | 
             
              #
         | 
| 71 71 | 
             
              # Returns +true+ if a given integer value is divisible by both *three*
         | 
| 72 72 | 
             
              # and *five* (given value is a _FizzBuzz_), or +false+ otherwise.
         | 
| 73 73 | 
             
              #
         | 
| 74 74 | 
             
              # Example:
         | 
| 75 75 | 
             
              #
         | 
| 76 | 
            -
              # | 
| 77 | 
            -
              # | 
| 78 | 
            -
              # | 
| 76 | 
            +
              #    1000000000000.fizzbuzz?   #=> false
         | 
| 77 | 
            +
              #    1000000000002.fizzbuzz?   #=> false
         | 
| 78 | 
            +
              #    1000000000005.fizzbuzz?   #=> true
         | 
| 79 79 | 
             
              #
         | 
| 80 80 | 
             
              # See also: FizzBuzz::[] and FizzBuzz::is_fizzbuzz?
         | 
| 81 81 | 
             
              #
         | 
    
        data/lib/fizzbuzz/integer.rb
    CHANGED
    
    | @@ -28,16 +28,16 @@ | |
| 28 28 | 
             
            class Integer
         | 
| 29 29 | 
             
              #
         | 
| 30 30 | 
             
              # call-seq:
         | 
| 31 | 
            -
              # | 
| 31 | 
            +
              #    Integer.fizz? -> true or false
         | 
| 32 32 | 
             
              #
         | 
| 33 33 | 
             
              # Returns +true+ if a given integer value is divisible by *three* (given
         | 
| 34 34 | 
             
              # value is a _Fizz_), or +false+ otherwise.
         | 
| 35 35 | 
             
              #
         | 
| 36 36 | 
             
              # Example:
         | 
| 37 37 | 
             
              #
         | 
| 38 | 
            -
              # | 
| 39 | 
            -
              # | 
| 40 | 
            -
              # | 
| 38 | 
            +
              #     3.fizz?   #=> true
         | 
| 39 | 
            +
              #     5.fizz?   #=> false
         | 
| 40 | 
            +
              #    15.fizz?   #=> false
         | 
| 41 41 | 
             
              #
         | 
| 42 42 | 
             
              # See also: FizzBuzz::[] and FizzBuzz::is_fizz?
         | 
| 43 43 | 
             
              #
         | 
| @@ -47,16 +47,16 @@ class Integer | |
| 47 47 |  | 
| 48 48 | 
             
              #
         | 
| 49 49 | 
             
              # call-seq:
         | 
| 50 | 
            -
              # | 
| 50 | 
            +
              #    Integer.buzz? -> true or false
         | 
| 51 51 | 
             
              #
         | 
| 52 52 | 
             
              # Returns +true+ if a given integer value is divisible by *five* (given
         | 
| 53 53 | 
             
              # value is a _Buzz_), or +false+ otherwise.
         | 
| 54 54 | 
             
              #
         | 
| 55 55 | 
             
              # Example:
         | 
| 56 56 | 
             
              #
         | 
| 57 | 
            -
              # | 
| 58 | 
            -
              # | 
| 59 | 
            -
              # | 
| 57 | 
            +
              #     3.buzz?   #=> false
         | 
| 58 | 
            +
              #     5.buzz?   #=> true
         | 
| 59 | 
            +
              #    15.buzz?   #=> false
         | 
| 60 60 | 
             
              #
         | 
| 61 61 | 
             
              # See also: FizzBuzz::[] and FizzBuzz::is_buzz?
         | 
| 62 62 | 
             
              #
         | 
| @@ -73,9 +73,9 @@ class Integer | |
| 73 73 | 
             
              #
         | 
| 74 74 | 
             
              # Example:
         | 
| 75 75 | 
             
              #
         | 
| 76 | 
            -
              # | 
| 77 | 
            -
              # | 
| 78 | 
            -
              # | 
| 76 | 
            +
              #     3.fizzbuzz?   #=> false
         | 
| 77 | 
            +
              #     5.fizzbuzz?   #=> false
         | 
| 78 | 
            +
              #    15.fizzbuzz?   #=> true
         | 
| 79 79 | 
             
              #
         | 
| 80 80 | 
             
              # See also: FizzBuzz::[] and FizzBuzz::is_fizzbuzz?
         | 
| 81 81 | 
             
              #
         | 
    
        data/lib/fizzbuzz/version.rb
    CHANGED
    
    
    
        metadata
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: ruby-fizzbuzz
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version: 0.0. | 
| 4 | 
            +
              version: 0.0.3
         | 
| 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: 2013-08- | 
| 12 | 
            +
            date: 2013-08-31 00:00:00.000000000 Z
         | 
| 13 13 | 
             
            dependencies:
         | 
| 14 14 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 15 15 | 
             
              name: rake
         | 
| @@ -75,7 +75,17 @@ dependencies: | |
| 75 75 | 
             
                - - ! '>='
         | 
| 76 76 | 
             
                  - !ruby/object:Gem::Version
         | 
| 77 77 | 
             
                    version: 0.7.1
         | 
| 78 | 
            -
            description: Yet another FizzBuzz in Ruby
         | 
| 78 | 
            +
            description: ! 'Yet another FizzBuzz in Ruby
         | 
| 79 | 
            +
             | 
| 80 | 
            +
             | 
| 81 | 
            +
              Provides simple and fast solution to a popular FizzBuzz problem for Ruby.
         | 
| 82 | 
            +
             | 
| 83 | 
            +
             | 
| 84 | 
            +
              Written in C as an example of using Ruby''s C API - with the support for
         | 
| 85 | 
            +
             | 
| 86 | 
            +
              arbitrary large numeric values via the Bignum class.
         | 
| 87 | 
            +
             | 
| 88 | 
            +
            '
         | 
| 79 89 | 
             
            email: krzysztof.wilczynski@linux.com
         | 
| 80 90 | 
             
            executables:
         | 
| 81 91 | 
             
            - fizzbuzz
         | 
| @@ -84,8 +94,8 @@ extensions: | |
| 84 94 | 
             
            extra_rdoc_files: []
         | 
| 85 95 | 
             
            files:
         | 
| 86 96 | 
             
            - ext/fizzbuzz/fizzbuzz.c
         | 
| 87 | 
            -
            - ext/fizzbuzz/fizzbuzz.h
         | 
| 88 97 | 
             
            - ext/fizzbuzz/common.h
         | 
| 98 | 
            +
            - ext/fizzbuzz/fizzbuzz.h
         | 
| 89 99 | 
             
            - ext/fizzbuzz/extconf.rb
         | 
| 90 100 | 
             
            - lib/fizzbuzz/bignum.rb
         | 
| 91 101 | 
             
            - lib/fizzbuzz/integer.rb
         | 
| @@ -127,7 +137,5 @@ rubyforge_project: ruby-fizzbuzz | |
| 127 137 | 
             
            rubygems_version: 1.8.23
         | 
| 128 138 | 
             
            signing_key: 
         | 
| 129 139 | 
             
            specification_version: 3
         | 
| 130 | 
            -
            summary:  | 
| 131 | 
            -
              in C as an example of using Ruby's C API - with the support for arbitrary large
         | 
| 132 | 
            -
              numeric values via the Bignum class.
         | 
| 140 | 
            +
            summary: Yet another FizzBuzz in Ruby
         | 
| 133 141 | 
             
            test_files: []
         | 
    
        metadata.gz.sig
    CHANGED
    
    | Binary file |