rufus-decision 1.0 → 1.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/CHANGELOG.txt +15 -1
 - data/README.txt +82 -49
 - data/bin/rufus_decide +149 -0
 - data/lib/rufus/decision.rb +295 -283
 - data/lib/rufus/hashes.rb +56 -60
 - data/test/decision_0_test.rb +120 -162
 - data/test/decision_1_test.rb +60 -32
 - data/test/eval_test.rb +6 -14
 - data/test/goal.csv +3 -0
 - data/test/input.csv +3 -0
 - data/test/table.csv +9 -0
 - data/test/test.rb +7 -3
 - data/test/test_base.rb +51 -0
 - data/test/transpose_test.rb +64 -0
 - metadata +14 -8
 - data/test/dmixin.rb +0 -55
 
    
        data/test/decision_1_test.rb
    CHANGED
    
    | 
         @@ -2,27 +2,18 @@ 
     | 
|
| 
       2 
2 
     | 
    
         
             
            #
         
     | 
| 
       3 
3 
     | 
    
         
             
            # Testing rufus-deciision
         
     | 
| 
       4 
4 
     | 
    
         
             
            #
         
     | 
| 
       5 
     | 
    
         
            -
            # John Mettraux at openwfe.org
         
     | 
| 
       6 
     | 
    
         
            -
            #
         
     | 
| 
       7 
5 
     | 
    
         
             
            # Sun Oct 29 15:41:44 JST 2006
         
     | 
| 
       8 
6 
     | 
    
         
             
            #
         
     | 
| 
       9 
7 
     | 
    
         | 
| 
       10 
8 
     | 
    
         
             
            require 'test/unit'
         
     | 
| 
       11 
9 
     | 
    
         | 
| 
       12 
     | 
    
         
            -
            require ' 
     | 
| 
      
 10 
     | 
    
         
            +
            require File.dirname(__FILE__) + '/test_base.rb'
         
     | 
| 
       13 
11 
     | 
    
         | 
| 
       14 
12 
     | 
    
         | 
| 
       15 
     | 
    
         
            -
            class  
     | 
| 
      
 13 
     | 
    
         
            +
            class Decision1Test < Test::Unit::TestCase
         
     | 
| 
       16 
14 
     | 
    
         
             
              include DecisionTestMixin
         
     | 
| 
       17 
15 
     | 
    
         | 
| 
       18 
     | 
    
         
            -
               
     | 
| 
       19 
     | 
    
         
            -
              #end
         
     | 
| 
       20 
     | 
    
         
            -
             
     | 
| 
       21 
     | 
    
         
            -
              #def teardown
         
     | 
| 
       22 
     | 
    
         
            -
              #end
         
     | 
| 
       23 
     | 
    
         
            -
             
     | 
| 
       24 
     | 
    
         
            -
              CSV1 = \
         
     | 
| 
       25 
     | 
    
         
            -
            """
         
     | 
| 
      
 16 
     | 
    
         
            +
              CSV1 = %{
         
     | 
| 
       26 
17 
     | 
    
         
             
            ,,
         
     | 
| 
       27 
18 
     | 
    
         
             
            in:fx,in:fy,out:fz
         
     | 
| 
       28 
19 
     | 
    
         
             
            ,,
         
     | 
| 
         @@ -30,39 +21,76 @@ a,${fx},0 
     | 
|
| 
       30 
21 
     | 
    
         
             
            c,d,${fx}
         
     | 
| 
       31 
22 
     | 
    
         
             
            e,f,${r:3+4}
         
     | 
| 
       32 
23 
     | 
    
         
             
            g,h,${r:'${fx}' + '${fy}'}
         
     | 
| 
       33 
     | 
    
         
            -
             
     | 
| 
      
 24 
     | 
    
         
            +
            }
         
     | 
| 
       34 
25 
     | 
    
         | 
| 
       35 
26 
     | 
    
         
             
              def test_1
         
     | 
| 
       36 
27 
     | 
    
         | 
| 
       37 
     | 
    
         
            -
                wi = {
         
     | 
| 
       38 
     | 
    
         
            -
             
     | 
| 
       39 
     | 
    
         
            -
                  "fy" => "d"
         
     | 
| 
       40 
     | 
    
         
            -
                }
         
     | 
| 
       41 
     | 
    
         
            -
                do_test(CSV1, wi, {}, { "fz" => "c" }, false)
         
     | 
| 
      
 28 
     | 
    
         
            +
                wi = { 'fx' => 'c', 'fy' => 'd' }
         
     | 
| 
      
 29 
     | 
    
         
            +
                do_test(CSV1, wi, {}, { 'fz' => 'c' }, false)
         
     | 
| 
       42 
30 
     | 
    
         | 
| 
       43 
     | 
    
         
            -
                wi = {
         
     | 
| 
       44 
     | 
    
         
            -
             
     | 
| 
       45 
     | 
    
         
            -
                  "fy" => "a"
         
     | 
| 
       46 
     | 
    
         
            -
                }
         
     | 
| 
       47 
     | 
    
         
            -
                do_test(CSV1, wi, {}, { "fz" => "0" }, false)
         
     | 
| 
      
 31 
     | 
    
         
            +
                wi = { 'fx' => 'a', 'fy' => 'a' }
         
     | 
| 
      
 32 
     | 
    
         
            +
                do_test(CSV1, wi, {}, { 'fz' => '0' }, false)
         
     | 
| 
       48 
33 
     | 
    
         
             
              end
         
     | 
| 
       49 
34 
     | 
    
         | 
| 
       50 
35 
     | 
    
         
             
              def test_1b
         
     | 
| 
       51 
36 
     | 
    
         | 
| 
       52 
     | 
    
         
            -
                h = {
         
     | 
| 
       53 
     | 
    
         
            -
             
     | 
| 
       54 
     | 
    
         
            -
                  "fy" => "f"
         
     | 
| 
       55 
     | 
    
         
            -
                }
         
     | 
| 
       56 
     | 
    
         
            -
                do_test(CSV1, h, { :ruby_eval => true }, { "fz" => "7" }, false)
         
     | 
| 
      
 37 
     | 
    
         
            +
                h = { 'fx' => 'e', 'fy' => 'f' }
         
     | 
| 
      
 38 
     | 
    
         
            +
                do_test(CSV1, h, { :ruby_eval => true }, { 'fz' => '7' }, false)
         
     | 
| 
       57 
39 
     | 
    
         
             
              end
         
     | 
| 
       58 
40 
     | 
    
         | 
| 
       59 
41 
     | 
    
         
             
              def test_1c
         
     | 
| 
       60 
42 
     | 
    
         | 
| 
       61 
     | 
    
         
            -
                h = {
         
     | 
| 
       62 
     | 
    
         
            -
             
     | 
| 
       63 
     | 
    
         
            -
             
     | 
| 
      
 43 
     | 
    
         
            +
                h = { 'fx' => 'g', 'fy' => 'h' }
         
     | 
| 
      
 44 
     | 
    
         
            +
                do_test(CSV1, h, { :ruby_eval => true }, { 'fz' => 'gh' }, false)
         
     | 
| 
      
 45 
     | 
    
         
            +
              end
         
     | 
| 
      
 46 
     | 
    
         
            +
             
     | 
| 
      
 47 
     | 
    
         
            +
              CSV2 = [
         
     | 
| 
      
 48 
     | 
    
         
            +
                %w{ in:fx in:fy out:fz },
         
     | 
| 
      
 49 
     | 
    
         
            +
                %w{ a ${fx} 0 },
         
     | 
| 
      
 50 
     | 
    
         
            +
                %w{ c d ${fx} },
         
     | 
| 
      
 51 
     | 
    
         
            +
                %w{ e f ${r:3+4} },
         
     | 
| 
      
 52 
     | 
    
         
            +
                [ 'g', 'h', "${r:'${fx}' + '${fy}'}" ]
         
     | 
| 
      
 53 
     | 
    
         
            +
              ]
         
     | 
| 
      
 54 
     | 
    
         
            +
             
     | 
| 
      
 55 
     | 
    
         
            +
              def test_with_array_table
         
     | 
| 
      
 56 
     | 
    
         
            +
             
     | 
| 
      
 57 
     | 
    
         
            +
                wi = { 'fx' => 'c', 'fy' => 'd' }
         
     | 
| 
      
 58 
     | 
    
         
            +
                do_test(CSV2, wi, {}, { 'fz' => 'c' }, false)
         
     | 
| 
      
 59 
     | 
    
         
            +
              end
         
     | 
| 
      
 60 
     | 
    
         
            +
             
     | 
| 
      
 61 
     | 
    
         
            +
              def test_empty_string_to_float
         
     | 
| 
      
 62 
     | 
    
         
            +
             
     | 
| 
      
 63 
     | 
    
         
            +
                wi = { 'age' => '', 'trait' => 'maniac', 'name' => 'Baumgarter' }
         
     | 
| 
      
 64 
     | 
    
         
            +
             
     | 
| 
      
 65 
     | 
    
         
            +
                table = [
         
     | 
| 
      
 66 
     | 
    
         
            +
                  %w{ in:age in:trait out:salesperson },
         
     | 
| 
      
 67 
     | 
    
         
            +
                  [ '18..35', '', 'Adeslky' ],
         
     | 
| 
      
 68 
     | 
    
         
            +
                  [ '25..35', '', 'Bronco' ],
         
     | 
| 
      
 69 
     | 
    
         
            +
                  [ '36..50', '', 'Espradas' ],
         
     | 
| 
      
 70 
     | 
    
         
            +
                  [ '', 'maniac', 'Korolev' ]
         
     | 
| 
      
 71 
     | 
    
         
            +
                ]
         
     | 
| 
      
 72 
     | 
    
         
            +
             
     | 
| 
      
 73 
     | 
    
         
            +
                do_test(table, wi, {}, { 'salesperson' => 'Korolev' }, false)
         
     | 
| 
      
 74 
     | 
    
         
            +
              end
         
     | 
| 
      
 75 
     | 
    
         
            +
             
     | 
| 
      
 76 
     | 
    
         
            +
              def test_vertical_rules
         
     | 
| 
      
 77 
     | 
    
         
            +
             
     | 
| 
      
 78 
     | 
    
         
            +
                table = CSV2.transpose
         
     | 
| 
      
 79 
     | 
    
         
            +
             
     | 
| 
      
 80 
     | 
    
         
            +
                wi = { 'fx' => 'c', 'fy' => 'd' }
         
     | 
| 
      
 81 
     | 
    
         
            +
                do_test(table, wi, {}, { 'fz' => 'c' }, false)
         
     | 
| 
      
 82 
     | 
    
         
            +
              end
         
     | 
| 
      
 83 
     | 
    
         
            +
             
     | 
| 
      
 84 
     | 
    
         
            +
              def test_vertical_rules_2
         
     | 
| 
      
 85 
     | 
    
         
            +
             
     | 
| 
      
 86 
     | 
    
         
            +
                table = %{
         
     | 
| 
      
 87 
     | 
    
         
            +
            in:topic,sports,sports,finance,finance,finance,politics,politics,politics,
         
     | 
| 
      
 88 
     | 
    
         
            +
            in:region,europe,,america,europe,,asia,america,,
         
     | 
| 
      
 89 
     | 
    
         
            +
            out:team_member,Alice,Bob,Charly,Donald,Ernest,Fujio,Gilbert,Henry,Zach
         
     | 
| 
       64 
90 
     | 
    
         
             
                }
         
     | 
| 
       65 
     | 
    
         
            -
             
     | 
| 
      
 91 
     | 
    
         
            +
             
     | 
| 
      
 92 
     | 
    
         
            +
                h = { 'topic' => 'politics', 'region' => 'america' }
         
     | 
| 
      
 93 
     | 
    
         
            +
                do_test(table, h, {}, { 'team_member' => 'Gilbert' }, false)
         
     | 
| 
       66 
94 
     | 
    
         
             
              end
         
     | 
| 
       67 
95 
     | 
    
         | 
| 
       68 
96 
     | 
    
         
             
            end
         
     | 
    
        data/test/eval_test.rb
    CHANGED
    
    | 
         @@ -1,33 +1,25 @@ 
     | 
|
| 
       1 
1 
     | 
    
         | 
| 
       2 
2 
     | 
    
         
             
            #
         
     | 
| 
       3 
     | 
    
         
            -
            # Testing rufus- 
     | 
| 
       4 
     | 
    
         
            -
            #
         
     | 
| 
       5 
     | 
    
         
            -
            # John Mettraux at openwfe.org
         
     | 
| 
      
 3 
     | 
    
         
            +
            # Testing rufus-decision
         
     | 
| 
       6 
4 
     | 
    
         
             
            #
         
     | 
| 
       7 
5 
     | 
    
         
             
            # Mon Oct  9 22:19:44 JST 2006
         
     | 
| 
       8 
6 
     | 
    
         
             
            #
         
     | 
| 
       9 
7 
     | 
    
         | 
| 
       10 
8 
     | 
    
         
             
            require 'test/unit'
         
     | 
| 
       11 
     | 
    
         
            -
            require 'rufus/hashes'
         
     | 
| 
       12 
9 
     | 
    
         | 
| 
       13 
     | 
    
         
            -
             
     | 
| 
       14 
     | 
    
         
            -
            # testing the 'dollar notation'
         
     | 
| 
       15 
     | 
    
         
            -
            #
         
     | 
| 
      
 10 
     | 
    
         
            +
            require File.dirname(__FILE__) + '/test_base.rb'
         
     | 
| 
       16 
11 
     | 
    
         | 
| 
       17 
     | 
    
         
            -
             
     | 
| 
      
 12 
     | 
    
         
            +
            require 'rufus/hashes'
         
     | 
| 
       18 
13 
     | 
    
         | 
| 
       19 
     | 
    
         
            -
              #def setup
         
     | 
| 
       20 
     | 
    
         
            -
              #end
         
     | 
| 
       21 
14 
     | 
    
         | 
| 
       22 
     | 
    
         
            -
             
     | 
| 
       23 
     | 
    
         
            -
              #end
         
     | 
| 
      
 15 
     | 
    
         
            +
            class EvalTest < Test::Unit::TestCase
         
     | 
| 
       24 
16 
     | 
    
         | 
| 
       25 
17 
     | 
    
         
             
              def test_0
         
     | 
| 
       26 
18 
     | 
    
         | 
| 
       27 
     | 
    
         
            -
                eh = Rufus::EvalHashFilter.new({})
         
     | 
| 
      
 19 
     | 
    
         
            +
                eh = Rufus::Decision::EvalHashFilter.new({})
         
     | 
| 
       28 
20 
     | 
    
         | 
| 
       29 
21 
     | 
    
         
             
                eh['a'] = :a
         
     | 
| 
       30 
     | 
    
         
            -
                eh['b'] =  
     | 
| 
      
 22 
     | 
    
         
            +
                eh['b'] = 'r:5 * 5'
         
     | 
| 
       31 
23 
     | 
    
         | 
| 
       32 
24 
     | 
    
         
             
                assert_equal :a, eh['a']
         
     | 
| 
       33 
25 
     | 
    
         
             
                assert_equal 25, eh['b']
         
     | 
    
        data/test/goal.csv
    ADDED
    
    
    
        data/test/input.csv
    ADDED
    
    
    
        data/test/table.csv
    ADDED
    
    
    
        data/test/test.rb
    CHANGED
    
    
    
        data/test/test_base.rb
    ADDED
    
    | 
         @@ -0,0 +1,51 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
             
     | 
| 
      
 2 
     | 
    
         
            +
            #
         
     | 
| 
      
 3 
     | 
    
         
            +
            # Testing rufus-decision
         
     | 
| 
      
 4 
     | 
    
         
            +
            #
         
     | 
| 
      
 5 
     | 
    
         
            +
            # 2007 something
         
     | 
| 
      
 6 
     | 
    
         
            +
            #
         
     | 
| 
      
 7 
     | 
    
         
            +
             
     | 
| 
      
 8 
     | 
    
         
            +
            $:.unshift(File.expand_path(File.join(File.dirname(__FILE__), '..', 'lib')))
         
     | 
| 
      
 9 
     | 
    
         
            +
             
     | 
| 
      
 10 
     | 
    
         
            +
            require 'rufus/decision'
         
     | 
| 
      
 11 
     | 
    
         
            +
             
     | 
| 
      
 12 
     | 
    
         
            +
             
     | 
| 
      
 13 
     | 
    
         
            +
            module DecisionTestMixin
         
     | 
| 
      
 14 
     | 
    
         
            +
             
     | 
| 
      
 15 
     | 
    
         
            +
              protected
         
     | 
| 
      
 16 
     | 
    
         
            +
             
     | 
| 
      
 17 
     | 
    
         
            +
              def do_test (table_data, h, options, expected_result, verbose=false)
         
     | 
| 
      
 18 
     | 
    
         
            +
             
     | 
| 
      
 19 
     | 
    
         
            +
                table = table_data.is_a?(Rufus::Decision::Table) ?
         
     | 
| 
      
 20 
     | 
    
         
            +
                  table_data :
         
     | 
| 
      
 21 
     | 
    
         
            +
                  Rufus::Decision::Table.new(table_data)
         
     | 
| 
      
 22 
     | 
    
         
            +
             
     | 
| 
      
 23 
     | 
    
         
            +
                if verbose
         
     | 
| 
      
 24 
     | 
    
         
            +
                  puts
         
     | 
| 
      
 25 
     | 
    
         
            +
                  puts 'table :'
         
     | 
| 
      
 26 
     | 
    
         
            +
                  puts table.to_csv
         
     | 
| 
      
 27 
     | 
    
         
            +
                  puts
         
     | 
| 
      
 28 
     | 
    
         
            +
                  puts 'before :'
         
     | 
| 
      
 29 
     | 
    
         
            +
                  p h
         
     | 
| 
      
 30 
     | 
    
         
            +
                end
         
     | 
| 
      
 31 
     | 
    
         
            +
             
     | 
| 
      
 32 
     | 
    
         
            +
                h = table.transform!(h, options)
         
     | 
| 
      
 33 
     | 
    
         
            +
             
     | 
| 
      
 34 
     | 
    
         
            +
                if verbose
         
     | 
| 
      
 35 
     | 
    
         
            +
                  puts
         
     | 
| 
      
 36 
     | 
    
         
            +
                  puts 'after :'
         
     | 
| 
      
 37 
     | 
    
         
            +
                  p h
         
     | 
| 
      
 38 
     | 
    
         
            +
                end
         
     | 
| 
      
 39 
     | 
    
         
            +
             
     | 
| 
      
 40 
     | 
    
         
            +
                expected_result.each do |k, v|
         
     | 
| 
      
 41 
     | 
    
         
            +
             
     | 
| 
      
 42 
     | 
    
         
            +
                  value = h[k]
         
     | 
| 
      
 43 
     | 
    
         
            +
             
     | 
| 
      
 44 
     | 
    
         
            +
                  value = value.join(';') if value.is_a?(Array)
         
     | 
| 
      
 45 
     | 
    
         
            +
             
     | 
| 
      
 46 
     | 
    
         
            +
                  assert_equal v, value
         
     | 
| 
      
 47 
     | 
    
         
            +
                end
         
     | 
| 
      
 48 
     | 
    
         
            +
              end
         
     | 
| 
      
 49 
     | 
    
         
            +
             
     | 
| 
      
 50 
     | 
    
         
            +
            end
         
     | 
| 
      
 51 
     | 
    
         
            +
             
     | 
| 
         @@ -0,0 +1,64 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
             
     | 
| 
      
 2 
     | 
    
         
            +
            #
         
     | 
| 
      
 3 
     | 
    
         
            +
            # Testing rufus-decision
         
     | 
| 
      
 4 
     | 
    
         
            +
            #
         
     | 
| 
      
 5 
     | 
    
         
            +
            # Thu Apr 23 15:18:15 JST 2009
         
     | 
| 
      
 6 
     | 
    
         
            +
            #
         
     | 
| 
      
 7 
     | 
    
         
            +
             
     | 
| 
      
 8 
     | 
    
         
            +
            require 'test/unit'
         
     | 
| 
      
 9 
     | 
    
         
            +
             
     | 
| 
      
 10 
     | 
    
         
            +
            require File.dirname(__FILE__) + '/test_base.rb'
         
     | 
| 
      
 11 
     | 
    
         
            +
             
     | 
| 
      
 12 
     | 
    
         
            +
             
     | 
| 
      
 13 
     | 
    
         
            +
            class MiscTest < Test::Unit::TestCase
         
     | 
| 
      
 14 
     | 
    
         
            +
             
     | 
| 
      
 15 
     | 
    
         
            +
              def test_transpose_empty_array
         
     | 
| 
      
 16 
     | 
    
         
            +
             
     | 
| 
      
 17 
     | 
    
         
            +
                assert_equal([], Rufus::Decision.transpose([]))
         
     | 
| 
      
 18 
     | 
    
         
            +
              end
         
     | 
| 
      
 19 
     | 
    
         
            +
             
     | 
| 
      
 20 
     | 
    
         
            +
              def test_transpose_a_to_h
         
     | 
| 
      
 21 
     | 
    
         
            +
             
     | 
| 
      
 22 
     | 
    
         
            +
                assert_equal(
         
     | 
| 
      
 23 
     | 
    
         
            +
                  [
         
     | 
| 
      
 24 
     | 
    
         
            +
                    { 'age' => 33, 'name' => 'Jeff' },
         
     | 
| 
      
 25 
     | 
    
         
            +
                    { 'age' => 35, 'name' => 'John' }
         
     | 
| 
      
 26 
     | 
    
         
            +
                  ],
         
     | 
| 
      
 27 
     | 
    
         
            +
                  Rufus::Decision.transpose([
         
     | 
| 
      
 28 
     | 
    
         
            +
                    [ 'age', 'name' ],
         
     | 
| 
      
 29 
     | 
    
         
            +
                    [ 33, 'Jeff' ],
         
     | 
| 
      
 30 
     | 
    
         
            +
                    [ 35, 'John' ]
         
     | 
| 
      
 31 
     | 
    
         
            +
                  ])
         
     | 
| 
      
 32 
     | 
    
         
            +
                )
         
     | 
| 
      
 33 
     | 
    
         
            +
              end
         
     | 
| 
      
 34 
     | 
    
         
            +
             
     | 
| 
      
 35 
     | 
    
         
            +
              def test_transpose_h_to_a
         
     | 
| 
      
 36 
     | 
    
         
            +
             
     | 
| 
      
 37 
     | 
    
         
            +
                assert_equal(
         
     | 
| 
      
 38 
     | 
    
         
            +
                  [
         
     | 
| 
      
 39 
     | 
    
         
            +
                    [ 'age', 'name' ],
         
     | 
| 
      
 40 
     | 
    
         
            +
                    [ 33, 'Jeff' ],
         
     | 
| 
      
 41 
     | 
    
         
            +
                    [ 35, 'John' ]
         
     | 
| 
      
 42 
     | 
    
         
            +
                  ],
         
     | 
| 
      
 43 
     | 
    
         
            +
                  Rufus::Decision.transpose([
         
     | 
| 
      
 44 
     | 
    
         
            +
                    { 'age' => 33, 'name' => 'Jeff' },
         
     | 
| 
      
 45 
     | 
    
         
            +
                    { 'age' => 35, 'name' => 'John' }
         
     | 
| 
      
 46 
     | 
    
         
            +
                  ])
         
     | 
| 
      
 47 
     | 
    
         
            +
                )
         
     | 
| 
      
 48 
     | 
    
         
            +
              end
         
     | 
| 
      
 49 
     | 
    
         
            +
             
     | 
| 
      
 50 
     | 
    
         
            +
              def test_transpose_s_to_a
         
     | 
| 
      
 51 
     | 
    
         
            +
             
     | 
| 
      
 52 
     | 
    
         
            +
                assert_equal(
         
     | 
| 
      
 53 
     | 
    
         
            +
                  [
         
     | 
| 
      
 54 
     | 
    
         
            +
                    { 'age' => '33', 'name' => 'Jeff' },
         
     | 
| 
      
 55 
     | 
    
         
            +
                    { 'age' => '35', 'name' => 'John' }
         
     | 
| 
      
 56 
     | 
    
         
            +
                  ],
         
     | 
| 
      
 57 
     | 
    
         
            +
                  Rufus::Decision.transpose(%{
         
     | 
| 
      
 58 
     | 
    
         
            +
                    age,name
         
     | 
| 
      
 59 
     | 
    
         
            +
                    33,Jeff
         
     | 
| 
      
 60 
     | 
    
         
            +
                    35,John
         
     | 
| 
      
 61 
     | 
    
         
            +
                  })
         
     | 
| 
      
 62 
     | 
    
         
            +
                )
         
     | 
| 
      
 63 
     | 
    
         
            +
              end
         
     | 
| 
      
 64 
     | 
    
         
            +
            end
         
     | 
    
        metadata
    CHANGED
    
    | 
         @@ -1,7 +1,7 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            --- !ruby/object:Gem::Specification 
         
     | 
| 
       2 
2 
     | 
    
         
             
            name: rufus-decision
         
     | 
| 
       3 
3 
     | 
    
         
             
            version: !ruby/object:Gem::Version 
         
     | 
| 
       4 
     | 
    
         
            -
              version:  
     | 
| 
      
 4 
     | 
    
         
            +
              version: 1.1.0
         
     | 
| 
       5 
5 
     | 
    
         
             
            platform: ruby
         
     | 
| 
       6 
6 
     | 
    
         
             
            authors: 
         
     | 
| 
       7 
7 
     | 
    
         
             
            - John Mettraux
         
     | 
| 
         @@ -9,7 +9,7 @@ autorequire: 
     | 
|
| 
       9 
9 
     | 
    
         
             
            bindir: bin
         
     | 
| 
       10 
10 
     | 
    
         
             
            cert_chain: []
         
     | 
| 
       11 
11 
     | 
    
         | 
| 
       12 
     | 
    
         
            -
            date:  
     | 
| 
      
 12 
     | 
    
         
            +
            date: 2009-04-25 00:00:00 +09:00
         
     | 
| 
       13 
13 
     | 
    
         
             
            default_executable: 
         
     | 
| 
       14 
14 
     | 
    
         
             
            dependencies: 
         
     | 
| 
       15 
15 
     | 
    
         
             
            - !ruby/object:Gem::Dependency 
         
     | 
| 
         @@ -34,8 +34,8 @@ dependencies: 
     | 
|
| 
       34 
34 
     | 
    
         
             
                version: 
         
     | 
| 
       35 
35 
     | 
    
         
             
            description: 
         
     | 
| 
       36 
36 
     | 
    
         
             
            email: jmettraux@gmail.com
         
     | 
| 
       37 
     | 
    
         
            -
            executables:  
     | 
| 
       38 
     | 
    
         
            -
             
     | 
| 
      
 37 
     | 
    
         
            +
            executables: 
         
     | 
| 
      
 38 
     | 
    
         
            +
            - rufus_decide
         
     | 
| 
       39 
39 
     | 
    
         
             
            extensions: []
         
     | 
| 
       40 
40 
     | 
    
         | 
| 
       41 
41 
     | 
    
         
             
            extra_rdoc_files: 
         
     | 
| 
         @@ -43,20 +43,26 @@ extra_rdoc_files: 
     | 
|
| 
       43 
43 
     | 
    
         
             
            - CHANGELOG.txt
         
     | 
| 
       44 
44 
     | 
    
         
             
            - CREDITS.txt
         
     | 
| 
       45 
45 
     | 
    
         
             
            files: 
         
     | 
| 
       46 
     | 
    
         
            -
            -  
     | 
| 
      
 46 
     | 
    
         
            +
            - bin/rufus_decide
         
     | 
| 
       47 
47 
     | 
    
         
             
            - lib/rufus/decision.rb
         
     | 
| 
       48 
48 
     | 
    
         
             
            - lib/rufus/hashes.rb
         
     | 
| 
       49 
49 
     | 
    
         
             
            - lib/rufus-decision.rb
         
     | 
| 
       50 
50 
     | 
    
         
             
            - test/decision_0_test.rb
         
     | 
| 
       51 
51 
     | 
    
         
             
            - test/decision_1_test.rb
         
     | 
| 
       52 
     | 
    
         
            -
            - test/dmixin.rb
         
     | 
| 
       53 
52 
     | 
    
         
             
            - test/eval_test.rb
         
     | 
| 
      
 53 
     | 
    
         
            +
            - test/goal.csv
         
     | 
| 
      
 54 
     | 
    
         
            +
            - test/input.csv
         
     | 
| 
      
 55 
     | 
    
         
            +
            - test/table.csv
         
     | 
| 
       54 
56 
     | 
    
         
             
            - test/test.rb
         
     | 
| 
      
 57 
     | 
    
         
            +
            - test/test_base.rb
         
     | 
| 
      
 58 
     | 
    
         
            +
            - test/transpose_test.rb
         
     | 
| 
       55 
59 
     | 
    
         
             
            - README.txt
         
     | 
| 
       56 
60 
     | 
    
         
             
            - CHANGELOG.txt
         
     | 
| 
       57 
61 
     | 
    
         
             
            - CREDITS.txt
         
     | 
| 
       58 
62 
     | 
    
         
             
            has_rdoc: true
         
     | 
| 
       59 
63 
     | 
    
         
             
            homepage: http://rufus.rubyforge.org/rufus-decision
         
     | 
| 
      
 64 
     | 
    
         
            +
            licenses: []
         
     | 
| 
      
 65 
     | 
    
         
            +
             
     | 
| 
       60 
66 
     | 
    
         
             
            post_install_message: 
         
     | 
| 
       61 
67 
     | 
    
         
             
            rdoc_options: []
         
     | 
| 
       62 
68 
     | 
    
         | 
| 
         @@ -78,9 +84,9 @@ requirements: 
     | 
|
| 
       78 
84 
     | 
    
         
             
            - rufus-dollar
         
     | 
| 
       79 
85 
     | 
    
         
             
            - rufus-treechecker
         
     | 
| 
       80 
86 
     | 
    
         
             
            rubyforge_project: rufus
         
     | 
| 
       81 
     | 
    
         
            -
            rubygems_version: 1.2 
     | 
| 
      
 87 
     | 
    
         
            +
            rubygems_version: 1.3.2
         
     | 
| 
       82 
88 
     | 
    
         
             
            signing_key: 
         
     | 
| 
       83 
     | 
    
         
            -
            specification_version:  
     | 
| 
      
 89 
     | 
    
         
            +
            specification_version: 3
         
     | 
| 
       84 
90 
     | 
    
         
             
            summary: CSV based Ruby decision tables
         
     | 
| 
       85 
91 
     | 
    
         
             
            test_files: 
         
     | 
| 
       86 
92 
     | 
    
         
             
            - test/test.rb
         
     | 
    
        data/test/dmixin.rb
    DELETED
    
    | 
         @@ -1,55 +0,0 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
             
     | 
| 
       2 
     | 
    
         
            -
            #
         
     | 
| 
       3 
     | 
    
         
            -
            # Testing rufus-deciision
         
     | 
| 
       4 
     | 
    
         
            -
            #
         
     | 
| 
       5 
     | 
    
         
            -
            # John Mettraux at openwfe.org
         
     | 
| 
       6 
     | 
    
         
            -
            #
         
     | 
| 
       7 
     | 
    
         
            -
            # Mon Jan 28 13:22:51 JST 2008
         
     | 
| 
       8 
     | 
    
         
            -
            #
         
     | 
| 
       9 
     | 
    
         
            -
             
     | 
| 
       10 
     | 
    
         
            -
            require 'rufus/decision'
         
     | 
| 
       11 
     | 
    
         
            -
             
     | 
| 
       12 
     | 
    
         
            -
             
     | 
| 
       13 
     | 
    
         
            -
            module DecisionTestMixin
         
     | 
| 
       14 
     | 
    
         
            -
             
     | 
| 
       15 
     | 
    
         
            -
              protected
         
     | 
| 
       16 
     | 
    
         
            -
             
     | 
| 
       17 
     | 
    
         
            -
                def do_test (table_data, h, options, expected_result, verbose=false)
         
     | 
| 
       18 
     | 
    
         
            -
             
     | 
| 
       19 
     | 
    
         
            -
                  table = Rufus::DecisionTable.new table_data
         
     | 
| 
       20 
     | 
    
         
            -
             
     | 
| 
       21 
     | 
    
         
            -
                  if verbose
         
     | 
| 
       22 
     | 
    
         
            -
                    puts
         
     | 
| 
       23 
     | 
    
         
            -
                    puts "table :"
         
     | 
| 
       24 
     | 
    
         
            -
                    puts table.to_csv
         
     | 
| 
       25 
     | 
    
         
            -
                    puts
         
     | 
| 
       26 
     | 
    
         
            -
                    puts "before :"
         
     | 
| 
       27 
     | 
    
         
            -
                    puts wi
         
     | 
| 
       28 
     | 
    
         
            -
                  end
         
     | 
| 
       29 
     | 
    
         
            -
             
     | 
| 
       30 
     | 
    
         
            -
                  h = table.transform! h, options
         
     | 
| 
       31 
     | 
    
         
            -
             
     | 
| 
       32 
     | 
    
         
            -
                  if verbose
         
     | 
| 
       33 
     | 
    
         
            -
                    puts
         
     | 
| 
       34 
     | 
    
         
            -
                    puts "after :"
         
     | 
| 
       35 
     | 
    
         
            -
                    puts h
         
     | 
| 
       36 
     | 
    
         
            -
                  end
         
     | 
| 
       37 
     | 
    
         
            -
             
     | 
| 
       38 
     | 
    
         
            -
                  expected_result.each do |k, v|
         
     | 
| 
       39 
     | 
    
         
            -
             
     | 
| 
       40 
     | 
    
         
            -
                    #if wi.attributes[k] != v
         
     | 
| 
       41 
     | 
    
         
            -
                    #end
         
     | 
| 
       42 
     | 
    
         
            -
             
     | 
| 
       43 
     | 
    
         
            -
                    value = h[k]
         
     | 
| 
       44 
     | 
    
         
            -
             
     | 
| 
       45 
     | 
    
         
            -
                    value = value.join(';') if value.is_a?(Array)
         
     | 
| 
       46 
     | 
    
         
            -
             
     | 
| 
       47 
     | 
    
         
            -
                    assert \
         
     | 
| 
       48 
     | 
    
         
            -
                      value == v,
         
     | 
| 
       49 
     | 
    
         
            -
                      "attribute '#{k}' should be set to '#{v}' "+
         
     | 
| 
       50 
     | 
    
         
            -
                      "but is set to '#{value}'"
         
     | 
| 
       51 
     | 
    
         
            -
                  end
         
     | 
| 
       52 
     | 
    
         
            -
                end
         
     | 
| 
       53 
     | 
    
         
            -
             
     | 
| 
       54 
     | 
    
         
            -
            end
         
     | 
| 
       55 
     | 
    
         
            -
             
     |