nicolus 1.1.0 → 1.2.0
Sign up to get free protection for your applications and to get access to all the features.
- data/README.txt +14 -4
- data/lib/nicolus.rb +28 -5
- data/lib/opt_parse.rb +11 -1
- data/test/test_nicolus.rb +20 -0
- metadata +3 -3
data/README.txt
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
= nicolus
|
2
|
-
http://
|
2
|
+
http://benjamin.francisoud.googlepages.com/nicolus
|
3
3
|
by Benjamin Francisoud
|
4
4
|
|
5
5
|
== DESCRIPTION:
|
@@ -14,16 +14,26 @@ Nicolus is a simple program to make all possible combination out of 2 or more li
|
|
14
14
|
== SYNOPSIS:
|
15
15
|
|
16
16
|
For example:
|
17
|
-
listA = aaa, bbb, ccc
|
18
|
-
listB = 111, 222
|
17
|
+
listA = [aaa, bbb, ccc]
|
18
|
+
listB = [111, 222]
|
19
19
|
|
20
20
|
Combination will be:
|
21
|
-
result= aaa 111, aaa 222, bbb 111, bbb 222, ccc 111, ccc 222
|
21
|
+
result= [aaa 111, aaa 222, bbb 111, bbb 222, ccc 111, ccc 222]
|
22
22
|
|
23
23
|
== INSTALL:
|
24
24
|
|
25
25
|
* gem install nicolus
|
26
26
|
|
27
|
+
== USAGE
|
28
|
+
|
29
|
+
* C:\>nicolus
|
30
|
+
|
31
|
+
== LINKS
|
32
|
+
|
33
|
+
* Homepage http://benjamin.francisoud.googlepages.com/nicolus
|
34
|
+
* RDoc http://nicolus.rubyforge.org/
|
35
|
+
* Rubyforge Page http://www.rubyforge.org/projects/nicolus
|
36
|
+
|
27
37
|
== LICENSE:
|
28
38
|
|
29
39
|
(The MIT License)
|
data/lib/nicolus.rb
CHANGED
@@ -1,4 +1,5 @@
|
|
1
1
|
require 'matrix'
|
2
|
+
require 'iconv'
|
2
3
|
|
3
4
|
class Object
|
4
5
|
def blank?
|
@@ -7,6 +8,16 @@ class Object
|
|
7
8
|
end
|
8
9
|
|
9
10
|
class String
|
11
|
+
|
12
|
+
def utf16_to_iso
|
13
|
+
converter = Iconv.new('ISO-8859-1//IGNORE//TRANSLIT', 'UTF-16')
|
14
|
+
converter.iconv(self)
|
15
|
+
end
|
16
|
+
|
17
|
+
def nicolus_split
|
18
|
+
self.chomp.gsub("\t", ',').split(',')
|
19
|
+
end
|
20
|
+
|
10
21
|
def unquote!
|
11
22
|
# remove first
|
12
23
|
unless (gsub!(/\A\"/, '').nil?)
|
@@ -17,12 +28,16 @@ class String
|
|
17
28
|
end
|
18
29
|
|
19
30
|
module Nicolus
|
20
|
-
VERSION = '1.
|
31
|
+
VERSION = '1.2.0'
|
21
32
|
|
33
|
+
# Usage
|
34
|
+
# comb = Nicolus::Combinaison.new("input.csv", "output.csv", true, true)
|
35
|
+
# comb.run
|
22
36
|
class Combinaison
|
23
|
-
def initialize(input_file, filename, inv=false)
|
37
|
+
def initialize(input_file, filename, inv=false, unicode=false)
|
24
38
|
@input_file, @filename = input_file, filename
|
25
39
|
@inv = inv
|
40
|
+
@unicode = unicode
|
26
41
|
end
|
27
42
|
|
28
43
|
def inverse?
|
@@ -35,9 +50,17 @@ module Nicolus
|
|
35
50
|
# => [[a, b, c], [1, 2, 3], [A, B, C]]
|
36
51
|
def create_lists
|
37
52
|
list = []
|
38
|
-
|
39
|
-
|
40
|
-
|
53
|
+
if (@unicode)
|
54
|
+
content = IO.read(@input_file).utf16_to_iso
|
55
|
+
content.split("\n").each do |line|
|
56
|
+
columns = line.nicolus_split # chomp.gsub("\t", ',').split(',')
|
57
|
+
list << columns
|
58
|
+
end
|
59
|
+
else
|
60
|
+
IO.foreach(@input_file) do |line|
|
61
|
+
columns = line.nicolus_split # chomp.gsub("\t", ',').split(',')
|
62
|
+
list << columns
|
63
|
+
end
|
41
64
|
end
|
42
65
|
# [[a, 1, A], [b, 2, B], [c, 3, C]] => [[a, b, c], [1, 2, 3], [A, B, C]]
|
43
66
|
@listes = (Matrix.rows list).transpose.to_a
|
data/lib/opt_parse.rb
CHANGED
@@ -3,6 +3,12 @@ require File.dirname(__FILE__) + '/nicolus.rb'
|
|
3
3
|
|
4
4
|
module Nicolus
|
5
5
|
|
6
|
+
# Usage:
|
7
|
+
# options = Nicolus::OptParse.parse(ARGV)
|
8
|
+
# puts options[:input]
|
9
|
+
# puts options[:output]
|
10
|
+
# puts options[:inverse]
|
11
|
+
# puts options[:unicode]
|
6
12
|
class OptParse
|
7
13
|
# Return a structure describing the options.
|
8
14
|
def self.parse(args)
|
@@ -27,6 +33,10 @@ module Nicolus
|
|
27
33
|
options[:inverse] = inv
|
28
34
|
end
|
29
35
|
|
36
|
+
opts.on("-U", "--unicode", "Input is Unicode") do |unicode|
|
37
|
+
options[:unicode] = unicode
|
38
|
+
end
|
39
|
+
|
30
40
|
opts.separator ""
|
31
41
|
opts.separator "Common options:"
|
32
42
|
|
@@ -50,5 +60,5 @@ module Nicolus
|
|
50
60
|
end # module Nicolus
|
51
61
|
|
52
62
|
options = Nicolus::OptParse.parse(ARGV)
|
53
|
-
comb = Nicolus::Combinaison.new(options[:input], options[:output], options[:inverse])
|
63
|
+
comb = Nicolus::Combinaison.new(options[:input], options[:output], options[:inverse], options[:unicode])
|
54
64
|
comb.run
|
data/test/test_nicolus.rb
CHANGED
@@ -1,4 +1,5 @@
|
|
1
1
|
require 'test/unit'
|
2
|
+
require 'fileutils.rb'
|
2
3
|
require File.dirname(__FILE__) + '/../lib/nicolus.rb'
|
3
4
|
|
4
5
|
class TestNicolus < Test::Unit::TestCase
|
@@ -29,7 +30,19 @@ class TestNicolus < Test::Unit::TestCase
|
|
29
30
|
assert File.exist?("test/combinaison_3_col_inverse.csv")
|
30
31
|
File.delete "test/combinaison_3_col_inverse.csv"
|
31
32
|
end
|
33
|
+
|
34
|
+
def test_run_tabs_utf
|
35
|
+
comb = Nicolus::Combinaison.new("test/listes_tabs_utf.csv", "test/combinaison_tabs_utf.csv", false, true)
|
36
|
+
comb.run
|
37
|
+
assert File.exist?("test/combinaison_tabs_utf.csv")
|
38
|
+
end
|
32
39
|
|
40
|
+
def test_run_tabs_no_utf
|
41
|
+
comb = Nicolus::Combinaison.new("test/listes_tabs.csv", "test/combinaison_tabs.csv") #, true)
|
42
|
+
comb.run
|
43
|
+
assert File.exist?("test/combinaison_tabs.csv")
|
44
|
+
end
|
45
|
+
|
33
46
|
def test_unquote_normal
|
34
47
|
to_unquote = "abc"
|
35
48
|
to_unquote.unquote!
|
@@ -53,4 +66,11 @@ class TestNicolus < Test::Unit::TestCase
|
|
53
66
|
to_unquote.unquote!
|
54
67
|
assert_equal "ab\"c", to_unquote
|
55
68
|
end
|
69
|
+
<<<<<<< .mine
|
56
70
|
end
|
71
|
+
=======
|
72
|
+
|
73
|
+
def teardown
|
74
|
+
FileUtils.rm_f Dir['test/combinaison*']
|
75
|
+
end
|
76
|
+
end>>>>>>> .r12
|
metadata
CHANGED
@@ -3,13 +3,13 @@ rubygems_version: 0.9.4
|
|
3
3
|
specification_version: 1
|
4
4
|
name: nicolus
|
5
5
|
version: !ruby/object:Gem::Version
|
6
|
-
version: 1.
|
7
|
-
date: 2008-02-
|
6
|
+
version: 1.2.0
|
7
|
+
date: 2008-02-19 00:00:00 +01:00
|
8
8
|
summary: Nicolus is a simple program to make all possible combination out of 2 or more lists of words.
|
9
9
|
require_paths:
|
10
10
|
- lib
|
11
11
|
email: pub.cog@gmail.com
|
12
|
-
homepage: http://
|
12
|
+
homepage: http://benjamin.francisoud.googlepages.com/nicolus
|
13
13
|
rubyforge_project: nicolus
|
14
14
|
description: "Nicolus is a simple program to make all possible combination out of 2 or more lists of words. == FEATURES/PROBLEMS: * Command line parser * \"inverse\" generate \"aaa 111\" and \"111 aaa\" == SYNOPSIS:"
|
15
15
|
autorequire:
|