spreadsheet_architect 1.2.1 → 1.2.2

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: f42b3c3c331719c8914df16900f0cda7a976fb16
4
- data.tar.gz: 75602032e0744ffd5d95660b211e2d3cde828696
3
+ metadata.gz: 4e6911d8fb0ff208566956b06e86539b556f4645
4
+ data.tar.gz: ba207bef1497f6ddc468ad48dda064f14fbc80f1
5
5
  SHA512:
6
- metadata.gz: 1ce5f2ad942a49b12aab8485dba755d86091b0529d36ad7c118f777244181d26f45a20ca01085aa8af3b1b8183cb3d530efcd7ae2a7fcc74446ec1c05aa10223
7
- data.tar.gz: f44c437e1ce567701a7d01f3f1db2f98f6ce834deb49954d7481d2e754cc60b7b90e5cd086d1053f01ef1fa514f88b9b55173eaff0f07dbe9bdeb5c4b972c1ce
6
+ metadata.gz: b39d5bc1b8289309f89c78782b395d18131a7c582d126d5964f9c80d3b4d36265dac085a198b7bce3a19690ad8e06bb9bbabd8420360cc7c0d24435563ec0373
7
+ data.tar.gz: 8cd7b96a7471c55114c5d6e8f616e1d3cb94d16b2e1659f89feab82ce36f6eb2121d6a7b2b57e0b6a923d1e38537f3fae773d03732490a2e4417b67d2098c6a8
data/CHANGELOG.md CHANGED
@@ -1,6 +1,13 @@
1
1
  CHANGELOG
2
2
  ---------
3
3
 
4
+ - **March.3.2016**: 1.2.2
5
+ - Make cell type numeric if value is numeric
6
+ - **March.3.2016**: 1.2.1
7
+ - Better error reporting
8
+ - Fix for Plain ruby models
9
+ - **March.3.2016**: 1.2.0
10
+ - Fix Bug: first row data repeated for all records on custom values
4
11
  - **March.3.2016**: 1.1.0 - Breaking Changes
5
12
  - Move spreadsheet_columns method from the class to the instance
6
13
  - Fix Bug: remove default underline on cells
data/README.md CHANGED
@@ -16,9 +16,6 @@ Post.order(name: :asc).where(published: true).to_ods
16
16
  Post.order(name: :asc).where(published: true).to_csv
17
17
  ```
18
18
 
19
- ## Note: Major bug fix in 1.2.0
20
- v.1.1.0 had a major bug in it where it would use only the first records data for non-symbol methods. Please update to 1.2.0 from 1.1.0 as soon as possible.
21
-
22
19
  ## Note: Breaking Changes in 1.1.0
23
20
  The `spreadsheet_columns` method has been moved from the class to the instance. So now you can use string interpolation in your values. Please re-read the Model section below to see the changes. The side effect of this is if you are using the spreadsheet_columns option directly on the .to_* methods.
24
21
 
@@ -42,6 +39,7 @@ class Post < ActiveRecord::Base #activerecord not required
42
39
 
43
40
  #optional for activerecord classes, defaults to the models column_names
44
41
  def spreadsheet_columns
42
+
45
43
  #[[Label, Method/Statement to Call on each Instance]....]
46
44
  [
47
45
  ['Title', :title],
@@ -55,7 +53,7 @@ class Post < ActiveRecord::Base #activerecord not required
55
53
  [:title, content, (author.name rescue nil), :published]
56
54
 
57
55
  # OR a Combination of Both
58
- [:title, :content, ['Author',(author.name rescue nil)], :published, ]
56
+ [:title, :content, ['Author',(author.name rescue nil)], :published]
59
57
  end
60
58
  end
61
59
  ```
@@ -28,7 +28,18 @@ module SpreadsheetArchitect
28
28
  if capitalize
29
29
  str = str.gsub(/(\A|\ )\w/){|x| x.upcase}
30
30
  end
31
- str
31
+ return str
32
+ end
33
+
34
+ def self.get_type(value, type=nil)
35
+ #return type.to_sym if !type.blank?
36
+ return :string if value.blank?
37
+ if value.is_a?(Numeric)
38
+ type = :float
39
+ else
40
+ type = :string
41
+ end
42
+ return type
32
43
  end
33
44
 
34
45
  def self.get_options(options={}, klass)
@@ -43,20 +54,26 @@ module SpreadsheetArchitect
43
54
  end
44
55
 
45
56
  if !has_custom_columns && defined?(ActiveRecord) && klass.ancestors.include?(ActiveRecord::Base)
46
- the_column_names = (klass.column_names - ["id","created_at","updated_at","deleted_at"])
57
+ ignored_columns = ["id","created_at","updated_at","deleted_at"]
58
+ the_column_names = (klass.column_names - ignored_columns)
47
59
  headers = the_column_names.map{|x| str_humanize(x)}
48
60
  columns = the_column_names.map{|x| x.to_sym}
61
+ types = klass.columns.keep_if{|x| !ignored_columns.include?(x.name)}.collect(&:type)
62
+ types.map!{|type| self.get_type(nil, type)}
49
63
  elsif has_custom_columns
50
64
  headers = []
51
65
  columns = []
66
+ types = []
52
67
  array = options[:spreadsheet_columns] || options[:data].first.spreadsheet_columns
53
68
  array.each do |x|
54
69
  if x.is_a?(Array)
55
70
  headers.push x[0].to_s
56
71
  columns.push x[1]
72
+ types.push self.get_type(x[1], x[2])
57
73
  else
58
74
  headers.push str_humanize(x.to_s)
59
75
  columns.push x
76
+ types.push self.get_type(x, nil)
60
77
  end
61
78
  end
62
79
  else
@@ -97,8 +114,6 @@ module SpreadsheetArchitect
97
114
 
98
115
  sheet_name = options[:sheet_name] || klass.name
99
116
 
100
- types = (options[:types] || []).flatten
101
-
102
117
  return {headers: headers, header_style: header_style, row_style: row_style, types: types, sheet_name: sheet_name, data: data}
103
118
  end
104
119
  end
@@ -164,8 +179,8 @@ module SpreadsheetArchitect
164
179
  end
165
180
  options[:data].each do |row_data|
166
181
  row do
167
- row_data.each do |y|
168
- cell y, style: :row_style
182
+ row_data.each_with_index do |y,i|
183
+ cell y, style: :row_style, type: options[:types][i]
169
184
  end
170
185
  end
171
186
  end
@@ -1,3 +1,3 @@
1
1
  module SpreadsheetArchitect
2
- VERSION = "1.2.1"
2
+ VERSION = "1.2.2"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: spreadsheet_architect
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.2.1
4
+ version: 1.2.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Weston Ganger
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-03-14 00:00:00.000000000 Z
11
+ date: 2016-03-19 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: axlsx
@@ -127,6 +127,7 @@ files:
127
127
  - lib/spreadsheet_architect/version.rb
128
128
  - test/database.yml
129
129
  - test/helper.rb
130
+ - test/spreadsheet_architect.sqlite3.db
130
131
  - test/tc_spreadsheet_architect.rb
131
132
  homepage: https://github.com/westonganger/spreadsheet_architect
132
133
  licenses: []
@@ -147,11 +148,12 @@ required_rubygems_version: !ruby/object:Gem::Requirement
147
148
  version: '0'
148
149
  requirements: []
149
150
  rubyforge_project:
150
- rubygems_version: 2.4.5.1
151
+ rubygems_version: 2.5.2
151
152
  signing_key:
152
153
  specification_version: 4
153
154
  summary: Spreadsheet Generator for ActiveRecord Models and Ruby Classes/Modules
154
155
  test_files:
155
- - test/helper.rb
156
156
  - test/database.yml
157
+ - test/helper.rb
158
+ - test/spreadsheet_architect.sqlite3.db
157
159
  - test/tc_spreadsheet_architect.rb