ludy 0.1.8 → 0.1.9
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/CHANGES +26 -0
- data/Manifest.txt +28 -15
- data/NOTICE +9 -1
- data/README +7 -4
- data/Rakefile +11 -7
- data/lib/ludy.rb +3 -4
- data/lib/ludy/array/choice.rb +14 -0
- data/lib/ludy/array/combine.rb +1 -1
- data/lib/ludy/array/combos.rb +28 -19
- data/lib/ludy/array/count.rb +7 -0
- data/lib/ludy/array/head.rb +4 -0
- data/lib/ludy/array/pad.rb +13 -0
- data/lib/ludy/array/product.rb +14 -0
- data/lib/ludy/array/rotate.rb +3 -4
- data/lib/ludy/array/tail.rb +1 -0
- data/lib/ludy/hash.rb +3 -0
- data/lib/ludy/hash/reverse_merge.rb +11 -0
- data/lib/ludy/kernel/deep_copy.rb +6 -0
- data/lib/ludy/kernel/maybe.rb +6 -0
- data/lib/ludy/paginator.rb +1 -1
- data/lib/ludy/timer.rb +29 -0
- data/lib/puzzle_generator.rb +7 -5
- data/lib/puzzle_generator/chain.rb +5 -3
- data/lib/puzzle_generator/chained_map.rb +11 -11
- data/lib/puzzle_generator/map.rb +7 -7
- data/lib/puzzle_generator/misc.rb +7 -6
- data/lib/puzzle_generator/puzzle.rb +1 -4
- data/spec/ludy_spec.rb +8 -0
- data/spec/spec_helper.rb +17 -0
- data/tasks/doc.rake +1 -3
- data/tasks/gem.rake +2 -2
- data/tasks/manifest.rake +16 -2
- data/tasks/post_load.rake +18 -0
- data/tasks/setup.rb +47 -9
- data/tasks/spec.rake +3 -0
- data/test/example_puzzle.rb +7 -7
- data/test/helper.rb +3 -0
- data/test/{test_array.rb → ludy/test_array.rb} +12 -2
- data/test/{test_class.rb → ludy/test_class.rb} +1 -1
- data/test/{test_defun.rb → ludy/test_defun.rb} +1 -1
- data/test/{test_dices.rb → ludy/test_dices.rb} +1 -1
- data/test/ludy/test_hash.rb +13 -0
- data/test/{test_kernel.rb → ludy/test_kernel.rb} +1 -1
- data/test/{test_lazy.rb → ludy/test_lazy.rb} +1 -1
- data/test/{test_paginator.rb → ludy/test_paginator.rb} +2 -2
- data/test/{test_proc.rb → ludy/test_proc.rb} +2 -1
- data/test/{test_require_all.rb → ludy/test_require_all.rb} +1 -1
- data/test/{test_symbol.rb → ludy/test_symbol.rb} +1 -1
- data/test/{test_variable.rb → ludy/test_variable.rb} +1 -1
- data/test/{test_y_combinator.rb → ludy/test_y_combinator.rb} +1 -1
- data/test/{test_z_combinator.rb → ludy/test_z_combinator.rb} +1 -1
- data/test/multiruby.sh +2 -0
- metadata +54 -41
- data/lib/ludy/array/reverse_map.rb +0 -7
- data/lib/ludy/test/helper.rb +0 -3
    
        data/CHANGES
    CHANGED
    
    | @@ -1,5 +1,31 @@ | |
| 1 1 | 
             
            = ludy changes history
         | 
| 2 2 |  | 
| 3 | 
            +
            == ludy 0.1.9, 2008.02.07
         | 
| 4 | 
            +
             | 
| 5 | 
            +
            * fixed a bug in RailsPaginator, which ignored opts for count.
         | 
| 6 | 
            +
            * fixed a possible bug in puzzle_generator... (not happened before?)
         | 
| 7 | 
            +
            * fixed a stupid timeout message bug...
         | 
| 8 | 
            +
             | 
| 9 | 
            +
            * added multiruby test (from ZenTest) with ruby 1.8.6-p111, 1.9.0-0, svn
         | 
| 10 | 
            +
            * added Array#head, Array#choice!, Array#count
         | 
| 11 | 
            +
            * added Array#product, which came from ruby 1.9 (implemented by combos in ruby 1.8)
         | 
| 12 | 
            +
            * added Kernel#deep_copy, by Marshal idiom
         | 
| 13 | 
            +
            * added Hash#reverse_merge
         | 
| 14 | 
            +
            * added a simple and stupid timer........
         | 
| 15 | 
            +
             | 
| 16 | 
            +
            * removed Array#reverse_map, use reverse.map instead
         | 
| 17 | 
            +
            * renamed test_helper to helper
         | 
| 18 | 
            +
             | 
| 19 | 
            +
            * puzzle_generator was never always dependent on facets now!
         | 
| 20 | 
            +
            * ludy was never always dependent on rake now!
         | 
| 21 | 
            +
             | 
| 22 | 
            +
            * change my nickname to binary string... for ruby-svn
         | 
| 23 | 
            +
            * updated tasks from bones 1.3.2
         | 
| 24 | 
            +
            * better Rakefile support, with version automatic extraction from README and
         | 
| 25 | 
            +
              better way to display tasks for default task. (no sh 'rake --tasks' now)
         | 
| 26 | 
            +
            * rake clean now clean out the *.rbc for rubinius
         | 
| 27 | 
            +
            * Array#rotate is re-implemented.
         | 
| 28 | 
            +
             | 
| 3 29 | 
             
            == ludy 0.1.8, 2008.01.31
         | 
| 4 30 |  | 
| 5 31 | 
             
            * change the way displaying debug message
         | 
    
        data/Manifest.txt
    CHANGED
    
    | @@ -10,13 +10,17 @@ lib/ludy.rb | |
| 10 10 | 
             
            lib/ludy/all.rb
         | 
| 11 11 | 
             
            lib/ludy/array.rb
         | 
| 12 12 | 
             
            lib/ludy/array/body.rb
         | 
| 13 | 
            +
            lib/ludy/array/choice.rb
         | 
| 13 14 | 
             
            lib/ludy/array/combine.rb
         | 
| 14 15 | 
             
            lib/ludy/array/combos.rb
         | 
| 16 | 
            +
            lib/ludy/array/count.rb
         | 
| 15 17 | 
             
            lib/ludy/array/filter.rb
         | 
| 16 18 | 
             
            lib/ludy/array/foldl.rb
         | 
| 17 19 | 
             
            lib/ludy/array/foldr.rb
         | 
| 20 | 
            +
            lib/ludy/array/head.rb
         | 
| 18 21 | 
             
            lib/ludy/array/map_with_index.rb
         | 
| 19 | 
            -
            lib/ludy/array/ | 
| 22 | 
            +
            lib/ludy/array/pad.rb
         | 
| 23 | 
            +
            lib/ludy/array/product.rb
         | 
| 20 24 | 
             
            lib/ludy/array/rotate.rb
         | 
| 21 25 | 
             
            lib/ludy/array/tail.rb
         | 
| 22 26 | 
             
            lib/ludy/blackhole.rb
         | 
| @@ -30,13 +34,17 @@ lib/ludy/deprecated/this.rb | |
| 30 34 | 
             
            lib/ludy/deprecated/untranspose.rb
         | 
| 31 35 | 
             
            lib/ludy/deprecated/unzip.rb
         | 
| 32 36 | 
             
            lib/ludy/dices.rb
         | 
| 37 | 
            +
            lib/ludy/hash.rb
         | 
| 38 | 
            +
            lib/ludy/hash/reverse_merge.rb
         | 
| 33 39 | 
             
            lib/ludy/helpers/check_box.rb
         | 
| 34 40 | 
             
            lib/ludy/kernel.rb
         | 
| 41 | 
            +
            lib/ludy/kernel/deep_copy.rb
         | 
| 35 42 | 
             
            lib/ludy/kernel/defun.rb
         | 
| 36 43 | 
             
            lib/ludy/kernel/ergo.rb
         | 
| 37 44 | 
             
            lib/ludy/kernel/id.rb
         | 
| 38 45 | 
             
            lib/ludy/kernel/if_else.rb
         | 
| 39 46 | 
             
            lib/ludy/kernel/m.rb
         | 
| 47 | 
            +
            lib/ludy/kernel/maybe.rb
         | 
| 40 48 | 
             
            lib/ludy/kernel/public_send.rb
         | 
| 41 49 | 
             
            lib/ludy/kernel/singleton_method.rb
         | 
| 42 50 | 
             
            lib/ludy/kernel/tap.rb
         | 
| @@ -61,7 +69,7 @@ lib/ludy/tasks/preprocess_cpp/attr_builder.rb | |
| 61 69 | 
             
            lib/ludy/tasks/preprocess_cpp/debug_hook.rb
         | 
| 62 70 | 
             
            lib/ludy/tasks/preprocess_cpp/header_guard.rb
         | 
| 63 71 | 
             
            lib/ludy/tasks/preprocess_cpp/template_forward_parameters.rb
         | 
| 64 | 
            -
            lib/ludy/ | 
| 72 | 
            +
            lib/ludy/timer.rb
         | 
| 65 73 | 
             
            lib/ludy/variable.rb
         | 
| 66 74 | 
             
            lib/ludy/y_combinator.rb
         | 
| 67 75 | 
             
            lib/ludy/z_combinator.rb
         | 
| @@ -73,10 +81,12 @@ lib/puzzle_generator/map.rb | |
| 73 81 | 
             
            lib/puzzle_generator/misc.rb
         | 
| 74 82 | 
             
            lib/puzzle_generator/puzzle.rb
         | 
| 75 83 | 
             
            spec/ludy_spec.rb
         | 
| 84 | 
            +
            spec/spec_helper.rb
         | 
| 76 85 | 
             
            tasks/annotations.rake
         | 
| 77 86 | 
             
            tasks/doc.rake
         | 
| 78 87 | 
             
            tasks/gem.rake
         | 
| 79 88 | 
             
            tasks/manifest.rake
         | 
| 89 | 
            +
            tasks/post_load.rake
         | 
| 80 90 | 
             
            tasks/rubyforge.rake
         | 
| 81 91 | 
             
            tasks/setup.rb
         | 
| 82 92 | 
             
            tasks/spec.rake
         | 
| @@ -89,16 +99,19 @@ test/deprecated/this.rb | |
| 89 99 | 
             
            test/deprecated/ts_ludy.rb
         | 
| 90 100 | 
             
            test/deprecated/unzip_and_untranspose.rb
         | 
| 91 101 | 
             
            test/example_puzzle.rb
         | 
| 92 | 
            -
            test/ | 
| 93 | 
            -
            test/ | 
| 94 | 
            -
            test/ | 
| 95 | 
            -
            test/ | 
| 96 | 
            -
            test/ | 
| 97 | 
            -
            test/ | 
| 98 | 
            -
            test/ | 
| 99 | 
            -
            test/ | 
| 100 | 
            -
            test/ | 
| 101 | 
            -
            test/ | 
| 102 | 
            -
            test/ | 
| 103 | 
            -
            test/ | 
| 104 | 
            -
            test/ | 
| 102 | 
            +
            test/helper.rb
         | 
| 103 | 
            +
            test/ludy/test_array.rb
         | 
| 104 | 
            +
            test/ludy/test_class.rb
         | 
| 105 | 
            +
            test/ludy/test_defun.rb
         | 
| 106 | 
            +
            test/ludy/test_dices.rb
         | 
| 107 | 
            +
            test/ludy/test_hash.rb
         | 
| 108 | 
            +
            test/ludy/test_kernel.rb
         | 
| 109 | 
            +
            test/ludy/test_lazy.rb
         | 
| 110 | 
            +
            test/ludy/test_paginator.rb
         | 
| 111 | 
            +
            test/ludy/test_proc.rb
         | 
| 112 | 
            +
            test/ludy/test_require_all.rb
         | 
| 113 | 
            +
            test/ludy/test_symbol.rb
         | 
| 114 | 
            +
            test/ludy/test_variable.rb
         | 
| 115 | 
            +
            test/ludy/test_y_combinator.rb
         | 
| 116 | 
            +
            test/ludy/test_z_combinator.rb
         | 
| 117 | 
            +
            test/multiruby.sh
         | 
    
        data/NOTICE
    CHANGED
    
    | @@ -4,10 +4,18 @@ | |
| 4 4 | 
             
                gem install bones
         | 
| 5 5 | 
             
                http://codeforpeople.rubyforge.org/bones/
         | 
| 6 6 |  | 
| 7 | 
            -
            * for puzzle_generator, Ruby Facets is needed:
         | 
| 7 | 
            +
            * for puzzle_generator, Ruby Facets is needed: (no longer needed now!)
         | 
| 8 8 | 
             
                gem install facets
         | 
| 9 9 | 
             
                http://facets.rubyforge.org/
         | 
| 10 10 |  | 
| 11 11 | 
             
            * defun is re-implemented gem multi:
         | 
| 12 12 | 
             
                gem install multi
         | 
| 13 13 | 
             
                http://multi.rubyforge.org/
         | 
| 14 | 
            +
             | 
| 15 | 
            +
            * preprocessing tools with erubis:
         | 
| 16 | 
            +
                gem install erubis
         | 
| 17 | 
            +
                http://www.kuwata-lab.com/erubis/
         | 
| 18 | 
            +
             | 
| 19 | 
            +
            * multiruby test with ZenTest (test for ruby 1.8.6-p111, 1.9.0-0, svn trunk)
         | 
| 20 | 
            +
                gem install ZenTest
         | 
| 21 | 
            +
                http://www.zenspider.com/ZSS/Products/ZenTest/
         | 
    
        data/README
    CHANGED
    
    | @@ -1,7 +1,8 @@ | |
| 1 | 
            -
            = ludy 0.1. | 
| 1 | 
            +
            = ludy 0.1.9
         | 
| 2 2 | 
             
                by Lin Jen-Shin (a.k.a. godfat 真常)
         | 
| 3 3 | 
             
                strip any number: 18god29fat7029 (at] godfat32 -dooot- 20org
         | 
| 4 4 | 
             
                http://ludy.rubyforge.org
         | 
| 5 | 
            +
                http://rubyforge.org/projects/ludy
         | 
| 5 6 | 
             
                http://godfat.org
         | 
| 6 7 |  | 
| 7 8 | 
             
            == DESCRIPTION:
         | 
| @@ -170,7 +171,7 @@ template_forward_parameters: | |
| 170 171 | 
             
              <% } %>
         | 
| 171 172 |  | 
| 172 173 | 
             
              # run preprocessing task
         | 
| 173 | 
            -
              $ rake  | 
| 174 | 
            +
              $ rake preprocess
         | 
| 174 175 |  | 
| 175 176 | 
             
              # one of the produce: (can't list all...)
         | 
| 176 177 | 
             
              template <class T0, class T1, class T2, class T3>
         | 
| @@ -181,9 +182,11 @@ template_forward_parameters: | |
| 181 182 | 
             
            == REQUIREMENTS:
         | 
| 182 183 |  | 
| 183 184 | 
             
            * ruby 1.8/1.9 (1.9 is prefered...)
         | 
| 184 | 
            -
            * rake
         | 
| 185 | 
            -
            *  | 
| 185 | 
            +
            * rake in some features
         | 
| 186 | 
            +
            * erb in task preprocess:erb
         | 
| 186 187 | 
             
            * gem erubis if you are using preprocess:erubis
         | 
| 188 | 
            +
            * gem facets is recommended if you are using puzzle_generator
         | 
| 189 | 
            +
            * gem ZenTest if you are running multiruby.sh in test
         | 
| 187 190 |  | 
| 188 191 | 
             
            == INSTALL:
         | 
| 189 192 |  | 
    
        data/Rakefile
    CHANGED
    
    | @@ -8,26 +8,30 @@ ensure_in_path 'lib' | |
| 8 8 | 
             
            require 'ludy'
         | 
| 9 9 | 
             
            require 'ludy/tasks'
         | 
| 10 10 |  | 
| 11 | 
            +
            CLEAN.include Dir['**/*.rbc']
         | 
| 12 | 
            +
             | 
| 11 13 | 
             
            task :default do
         | 
| 12 | 
            -
               | 
| 14 | 
            +
              Rake.application.options.show_task_pattern = /./
         | 
| 15 | 
            +
              Rake.application.display_tasks_and_comments
         | 
| 13 16 | 
             
            end
         | 
| 14 17 |  | 
| 15 18 | 
             
            PROJ.name = 'ludy'
         | 
| 16 | 
            -
            PROJ. | 
| 17 | 
            -
            PROJ.authors = 'Lin Jen-Shin (a.k.a. godfat 真常)'
         | 
| 19 | 
            +
            PROJ.authors = "Lin Jen-Shin (a.k.a. godfat \347\234\237\345\270\270)"
         | 
| 18 20 | 
             
            PROJ.email = 'strip any number: 18god29fat7029 (at] godfat32 -dooot- 20org'
         | 
| 19 21 | 
             
            PROJ.url = 'http://ludy.rubyforge.org/'
         | 
| 20 | 
            -
            PROJ.description = paragraphs_of('README',  | 
| 22 | 
            +
            PROJ.description = PROJ.summary = paragraphs_of('README', 'description').join("\n\n")
         | 
| 21 23 | 
             
            PROJ.changes = paragraphs_of('CHANGES', 0..1).join("\n\n")
         | 
| 22 24 | 
             
            PROJ.rubyforge_name = 'ludy'
         | 
| 23 25 |  | 
| 24 | 
            -
            PROJ.version = '0.1 | 
| 25 | 
            -
            PROJ.exclude << '.DS_Store' << '^tmp'
         | 
| 26 | 
            -
            PROJ.dependencies << 'rake'
         | 
| 26 | 
            +
            PROJ.version = paragraphs_of('README', 0).first.split("\n").first[7..-1]
         | 
| 27 | 
            +
            PROJ.exclude << '.DS_Store' << '^tmp' << '\.rbc$'
         | 
| 28 | 
            +
            # PROJ.dependencies << 'rake'
         | 
| 27 29 |  | 
| 28 30 | 
             
            PROJ.rdoc_main = 'README'
         | 
| 29 31 | 
             
            PROJ.rdoc_exclude << 'deprecated' << 'Manifest' << 'Rakefile' << 'tmp$' << '^tmp'
         | 
| 30 32 | 
             
            PROJ.rdoc_include << '\w+'
         | 
| 33 | 
            +
            PROJ.rdoc_opts << '--diagram' if !WIN32 and `which dot` =~ %r/\/dot/
         | 
| 34 | 
            +
            PROJ.rdoc_opts << '--charset=utf-8' << '--inline-source' << '--line-numbers' << '--promiscuous'
         | 
| 31 35 |  | 
| 32 36 | 
             
            PROJ.spec_opts << '--color'
         | 
| 33 37 |  | 
    
        data/lib/ludy.rb
    CHANGED
    
    | @@ -6,13 +6,10 @@ unless defined? LudyHeaderGuard | |
| 6 6 | 
             
            module LudyHeaderGuard # :nodoc:
         | 
| 7 7 | 
             
            end
         | 
| 8 8 |  | 
| 9 | 
            -
            require 'rubygems'
         | 
| 10 | 
            -
            require 'rake'
         | 
| 11 | 
            -
             | 
| 12 9 | 
             
            module Ludy
         | 
| 13 10 |  | 
| 14 11 | 
             
              # :stopdoc:
         | 
| 15 | 
            -
              VERSION = '0.1. | 
| 12 | 
            +
              VERSION = '0.1.9'
         | 
| 16 13 | 
             
              LIBPATH = ::File.expand_path(::File.dirname(__FILE__)) + ::File::SEPARATOR
         | 
| 17 14 | 
             
              PATH = ::File.dirname(LIBPATH) + ::File::SEPARATOR
         | 
| 18 15 | 
             
              $LOAD_PATH << LIBPATH
         | 
| @@ -56,6 +53,8 @@ module Ludy | |
| 56 53 | 
             
              # require all files in the dir, only work for ludy.
         | 
| 57 54 | 
             
              # i.e., Ludy.require_all_in 'proc' => require 'ludy/proc/*.rb'
         | 
| 58 55 | 
             
              def self.require_all_in dir
         | 
| 56 | 
            +
                require 'rubygems' if RUBY_VERSION < '1.9.0'
         | 
| 57 | 
            +
                require 'rake'
         | 
| 59 58 | 
             
                Dir.glob("#{LIBPATH}ludy/#{dir}/*.rb").each{ |i|
         | 
| 60 59 | 
             
                  require(if dir == '.'
         | 
| 61 60 | 
             
                            i.pathmap('ludy/%n')
         | 
| @@ -0,0 +1,14 @@ | |
| 1 | 
            +
             | 
| 2 | 
            +
            class Array
         | 
| 3 | 
            +
              # it would be defined if RUBY_VERSION < '1.9.0', see rdoc in ruby 1.9
         | 
| 4 | 
            +
              def choice
         | 
| 5 | 
            +
                self[rand(size)]
         | 
| 6 | 
            +
              end if RUBY_VERSION < '1.9.0'
         | 
| 7 | 
            +
              # the choosen element would be deleted. return the choosen
         | 
| 8 | 
            +
              def choice!
         | 
| 9 | 
            +
                i = rand size
         | 
| 10 | 
            +
                r = self[i]
         | 
| 11 | 
            +
                self.delete_at i
         | 
| 12 | 
            +
                r
         | 
| 13 | 
            +
              end
         | 
| 14 | 
            +
            end
         | 
    
        data/lib/ludy/array/combine.rb
    CHANGED
    
    
    
        data/lib/ludy/array/combos.rb
    CHANGED
    
    | @@ -1,23 +1,32 @@ | |
| 1 1 |  | 
| 2 | 
            -
            require 'ludy/array/reverse_map'
         | 
| 3 | 
            -
            require 'ludy/symbol/to_proc'
         | 
| 4 | 
            -
            require 'ludy/array/foldr'
         | 
| 5 | 
            -
             | 
| 6 2 | 
             
            class Array
         | 
| 7 | 
            -
               | 
| 8 | 
            -
             | 
| 9 | 
            -
             | 
| 10 | 
            -
             | 
| 11 | 
            -
                 | 
| 12 | 
            -
                 | 
| 13 | 
            -
                 | 
| 14 | 
            -
                  result  | 
| 15 | 
            -
             | 
| 16 | 
            -
             | 
| 17 | 
            -
             | 
| 18 | 
            -
             | 
| 19 | 
            -
             | 
| 20 | 
            -
             | 
| 21 | 
            -
             | 
| 3 | 
            +
              if RUBY_VERSION < '1.9.0'
         | 
| 4 | 
            +
                require 'ludy/array/foldr'
         | 
| 5 | 
            +
                require 'ludy/symbol/to_proc' if RUBY_VERSION < '1.9.0'
         | 
| 6 | 
            +
                # for each combos
         | 
| 7 | 
            +
                #   [[0,1],[2,3]].combos
         | 
| 8 | 
            +
                #   => [[0,2],[0,3],[1,2],[1,3]]
         | 
| 9 | 
            +
                def combos
         | 
| 10 | 
            +
                  result = []
         | 
| 11 | 
            +
                  radixs = reverse.map(&:size)
         | 
| 12 | 
            +
                  inject(1){|r, i| r * i.size}.times{ |step|
         | 
| 13 | 
            +
                    result << foldr(lambda{ |i, r|
         | 
| 14 | 
            +
                                      radix = radixs[r.size]
         | 
| 15 | 
            +
                                      r.unshift i[step % radix]
         | 
| 16 | 
            +
                                      step /= radix unless radix.nil?
         | 
| 17 | 
            +
                                      r
         | 
| 18 | 
            +
                                    }, [])
         | 
| 19 | 
            +
                  }
         | 
| 20 | 
            +
                  result
         | 
| 21 | 
            +
                end
         | 
| 22 | 
            +
              else
         | 
| 23 | 
            +
                require 'ludy/array/tail'
         | 
| 24 | 
            +
                # for each combos
         | 
| 25 | 
            +
                #   [[0,1],[2,3]].combos
         | 
| 26 | 
            +
                #   => [[0,2],[0,3],[1,2],[1,3]]
         | 
| 27 | 
            +
                # simply: array.first.product *array.tail
         | 
| 28 | 
            +
                def combos
         | 
| 29 | 
            +
                  first.product(*tail)
         | 
| 30 | 
            +
                end
         | 
| 22 31 | 
             
              end
         | 
| 23 32 | 
             
            end
         | 
| @@ -0,0 +1,13 @@ | |
| 1 | 
            +
             | 
| 2 | 
            +
            class Array
         | 
| 3 | 
            +
              # ensure the size is at least n, pad with n, default nil
         | 
| 4 | 
            +
              def pad n, t = nil
         | 
| 5 | 
            +
                return self if n <= size
         | 
| 6 | 
            +
                self + [t]*(n-size)
         | 
| 7 | 
            +
              end
         | 
| 8 | 
            +
              # inplace version of pad
         | 
| 9 | 
            +
              def pad! n, t = nil
         | 
| 10 | 
            +
                return self if n <= size
         | 
| 11 | 
            +
                concat([t]*(n-size))
         | 
| 12 | 
            +
              end
         | 
| 13 | 
            +
            end
         | 
| @@ -0,0 +1,14 @@ | |
| 1 | 
            +
             | 
| 2 | 
            +
            if RUBY_VERSION < '1.9.0'
         | 
| 3 | 
            +
              begin
         | 
| 4 | 
            +
                require 'facets/enumerable/combos'
         | 
| 5 | 
            +
              rescue LoadError
         | 
| 6 | 
            +
                require 'ludy/array/combos'
         | 
| 7 | 
            +
              end
         | 
| 8 | 
            +
              class Array
         | 
| 9 | 
            +
                # it would be defined if RUBY_VERSION < '1.9.0', see rdoc in ruby 1.9
         | 
| 10 | 
            +
                def product *args
         | 
| 11 | 
            +
                  args.unshift(self).combos
         | 
| 12 | 
            +
                end
         | 
| 13 | 
            +
              end
         | 
| 14 | 
            +
            end
         | 
    
        data/lib/ludy/array/rotate.rb
    CHANGED
    
    | @@ -10,10 +10,9 @@ class Array | |
| 10 10 | 
             
              #
         | 
| 11 11 | 
             
              #   [1,2,3].rotate 2
         | 
| 12 12 | 
             
              #   => [2,3,1]
         | 
| 13 | 
            -
              def rotate  | 
| 14 | 
            -
                 | 
| 15 | 
            -
                 | 
| 16 | 
            -
                head + tail
         | 
| 13 | 
            +
              def rotate n = 1
         | 
| 14 | 
            +
                return self if empty? or n == 0
         | 
| 15 | 
            +
                self[-n..-1] + self[0...-n]
         | 
| 17 16 | 
             
              end
         | 
| 18 17 | 
             
              # in-place version of rotate
         | 
| 19 18 | 
             
              def rotate!
         | 
    
        data/lib/ludy/array/tail.rb
    CHANGED
    
    
    
        data/lib/ludy/hash.rb
    ADDED
    
    
    
        data/lib/ludy/paginator.rb
    CHANGED
    
    | @@ -101,7 +101,7 @@ module Ludy | |
| 101 101 | 
             
                  super(lambda{ |offset, per_page|
         | 
| 102 102 | 
             
                    @model_class.find :all, opts.merge(:offset => offset, :limit => per_page)
         | 
| 103 103 | 
             
                  }, lambda{
         | 
| 104 | 
            -
                    @model_class.count
         | 
| 104 | 
            +
                    @model_class.count opts
         | 
| 105 105 | 
             
                  })
         | 
| 106 106 | 
             
                end
         | 
| 107 107 | 
             
                # it simply call super(page.to_i), so RailsPaginator also eat string.
         | 
    
        data/lib/ludy/timer.rb
    ADDED
    
    | @@ -0,0 +1,29 @@ | |
| 1 | 
            +
             | 
| 2 | 
            +
            module Ludy
         | 
| 3 | 
            +
              # whenever a Timer was timeout, it was thrown
         | 
| 4 | 
            +
              class Timeout < Exception; end
         | 
| 5 | 
            +
              # simple and stupid timer for puzzle_generator...
         | 
| 6 | 
            +
              class Timer
         | 
| 7 | 
            +
                def initialize timeout
         | 
| 8 | 
            +
                  @timeout = timeout
         | 
| 9 | 
            +
                end
         | 
| 10 | 
            +
                # start ticking
         | 
| 11 | 
            +
                def start
         | 
| 12 | 
            +
                  @now = Time.now
         | 
| 13 | 
            +
                  @parent = Thread.current
         | 
| 14 | 
            +
                  @thread = Thread.new{
         | 
| 15 | 
            +
                    sleep @timeout
         | 
| 16 | 
            +
                    @parent.raise Timeout.new("timeout for #{@timeout} seconds.")
         | 
| 17 | 
            +
                  }
         | 
| 18 | 
            +
                  self
         | 
| 19 | 
            +
                end
         | 
| 20 | 
            +
                # total time until start ticking
         | 
| 21 | 
            +
                def total_time
         | 
| 22 | 
            +
                  Time.now - @now
         | 
| 23 | 
            +
                end
         | 
| 24 | 
            +
                # stop ticking
         | 
| 25 | 
            +
                def stop
         | 
| 26 | 
            +
                  @thread.kill
         | 
| 27 | 
            +
                end
         | 
| 28 | 
            +
              end
         | 
| 29 | 
            +
            end
         |