ss2json 0.1.1 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
data/Changelog CHANGED
@@ -1,3 +1,8 @@
1
+ 2012-05-29 Guillermo Alvarez <guillermo@cientifico.net>
2
+
3
+ * cli.rb (process_horizontal): Support for generating hash output instead of
4
+ an array using one of the keys.
5
+
1
6
  2012-05-24 Guillermo Alvarez <guillermo@cientifico.net>
2
7
 
3
8
  * cli.rb (initi_document) : If you specify an invalid sheets, the message
data/lib/ss2json/cli.rb CHANGED
@@ -38,6 +38,7 @@ class Ss2Json
38
38
  @doc.sheets.join("\n")
39
39
  else
40
40
  if options[:orientation] == :horizontal
41
+ @options[:first_row] += 1
41
42
  process_horizontal
42
43
  elsif options[:orientation] == :vertical
43
44
  process_vertical
@@ -61,20 +62,42 @@ class Ss2Json
61
62
  end
62
63
 
63
64
  def process_horizontal
64
- @content = []
65
- (@options[:first_row]+1).upto(@doc.last_row).each do |row_n|
66
- row = @doc.find(row_n)[0]
67
- object = RowConverter.new(row, @options[:converter])
68
- if @options[:check_column]
69
- next unless object[@options[:check_column]]
65
+ if @options[:hash_key]
66
+ @content = {}
67
+ each_hash_row do |hash|
68
+ if value = hash.get(@options[:hash_key])
69
+ hash.delete(@options[:hash_key]) unless @options[:dont_remove_key]
70
+ @content[value] = hash
71
+ end
70
72
  end
71
- @content << object
73
+
74
+ else
75
+ @content = []
76
+ each_hash_row do |hash|
77
+ @options[:hash_key]
78
+ @content << hash
79
+ end
80
+ end
81
+ end
82
+
83
+ def each_row
84
+ (@options[:first_row]).upto(@doc.last_row).each do |row_n|
85
+ yield row_n
86
+ end
87
+ end
88
+
89
+ def each_hash_row
90
+ each_row do |row|
91
+ row = @doc.find(row)[0]
92
+ object = RowConverter.new(row,@options[:converter])
93
+ next if @options[:check_column] && object[@options[:check_column]].nil?
94
+ yield object
72
95
  end
73
96
  end
74
97
 
75
98
  def process_vertical
76
99
  hash = {}
77
- @options[:first_row].upto(@doc.last_row) do |row|
100
+ each_row do |row|
78
101
  key = @doc.cell(row, @options[:key_column])
79
102
  value = @doc.cell(row, @options[:value_column])
80
103
  hash[key] = value
@@ -66,14 +66,24 @@ class Ss2Json
66
66
  @options[:first_row] = row.to_i
67
67
  end
68
68
 
69
+ opts.separator "\nHorizontal mode options:"
70
+
71
+ opts.on("-u", "--use-key KEY", "Generate a hash instead of an array using KEY as the hash index key") do |key|
72
+ @options[:hash_key] = key
73
+ end
74
+
75
+ opts.on("--dont-remove-key", "Don't remove key from the hash") do
76
+ @options[:dont_remove_key] = true
77
+ end
78
+
69
79
  opts.separator "\nVertical mode options:"
70
80
 
71
- opts.on("-k", "--key-column", "Column where the keys are (Default to 1)") do |column|
81
+ opts.on("-k", "--key-column COLUMN_NUMBER", "Column where the keys are (Default to 1)") do |column|
72
82
  die("Can't understand the column #{column}. Use a number") unless column =~ /\A\d*\z/
73
83
  @options[:key_column] = column.to_i
74
84
  end
75
85
 
76
- opts.on("-a", "--value-column", "Column where the values are (Default to 2)") do |column|
86
+ opts.on("-a", "--value-column COLUMN_NUMBER", "Column where the values are (Default to 2)") do |column|
77
87
  die("Can't understand the column #{column}. Use a number") unless column =~ /\A\d*\z/
78
88
  @options[:value_column] = column.to_i
79
89
  end
@@ -26,7 +26,7 @@ class Ss2Json
26
26
  false
27
27
  end
28
28
 
29
- def process(key,value)
29
+ def set(key,value)
30
30
  super if valid_value?(value)
31
31
  end
32
32
 
@@ -1,3 +1,3 @@
1
1
  class Ss2Json
2
- VERSION = "0.1.1"
2
+ VERSION = "0.2.0"
3
3
  end
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ss2json
3
3
  version: !ruby/object:Gem::Version
4
- hash: 25
4
+ hash: 23
5
5
  prerelease:
6
6
  segments:
7
7
  - 0
8
- - 1
9
- - 1
10
- version: 0.1.1
8
+ - 2
9
+ - 0
10
+ version: 0.2.0
11
11
  platform: ruby
12
12
  authors:
13
13
  - "Guillermo A\xCC\x81lvarez"
@@ -15,7 +15,7 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2012-05-24 00:00:00 +00:00
18
+ date: 2012-05-29 00:00:00 +00:00
19
19
  default_executable:
20
20
  dependencies:
21
21
  - !ruby/object:Gem::Dependency