ss2json 0.1.1 → 0.2.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 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