decisive 0.6.3 → 0.7.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.
- checksums.yaml +4 -4
- data/lib/decisive/template_handler.rb +66 -2
- data/lib/decisive/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 742329de188507c7ce038ec1ea99f1ba3cea0bb19d2e04c7beefc71508dd6c54
|
4
|
+
data.tar.gz: 7afeea4003a213b3d5b4abd385e4fc02c434c9ea7fdcae117ff2688b89aa19ac
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a0f51f83d168340baa2c8d8e430c0f89255ee87cbd95d42e4164843425a3d82354f492923c8a1f7288d28bead52aa25fee7c8fbed5181d6208e86a6930b7e2e8
|
7
|
+
data.tar.gz: 237224e0ff57647f4aadd4d6ea5e470378fd8863c6e6a6d73e7e341450e6f0c68b348f89f34ab921ddd23ba74faf4b4dc3e15051379cdea796bfb0cfea8a1e55
|
@@ -64,11 +64,75 @@ module Decisive
|
|
64
64
|
end
|
65
65
|
end
|
66
66
|
|
67
|
-
def xls worksheets, filename:, &block
|
68
|
-
|
67
|
+
def xls worksheets=nil, filename:, &block
|
68
|
+
if worksheets
|
69
|
+
XLSContext.new(worksheets, filename, block)
|
70
|
+
else
|
71
|
+
XLSWithWorksheetsContext.new(filename, [], &block)
|
72
|
+
end
|
69
73
|
end
|
70
74
|
end
|
71
75
|
|
76
|
+
class XLSWithWorksheetsContext < Struct.new(:filename, :worksheets)
|
77
|
+
class Worksheet < Struct.new(:records, :name, :block); end
|
78
|
+
|
79
|
+
def initialize *args, &block
|
80
|
+
super
|
81
|
+
instance_eval &block
|
82
|
+
end
|
83
|
+
|
84
|
+
def to_xls
|
85
|
+
to_string(render(Spreadsheet::Workbook.new))
|
86
|
+
end
|
87
|
+
|
88
|
+
def csv?
|
89
|
+
false
|
90
|
+
end
|
91
|
+
|
92
|
+
private
|
93
|
+
|
94
|
+
def worksheet records, name:, &block
|
95
|
+
worksheets.push Worksheet.new(records, name, block)
|
96
|
+
end
|
97
|
+
|
98
|
+
def render xls
|
99
|
+
worksheets.each do |worksheet|
|
100
|
+
sheet = xls.create_worksheet(name: sanitize_name(worksheet.name))
|
101
|
+
|
102
|
+
rows = to_array(worksheet)
|
103
|
+
|
104
|
+
rows.each.with_index do |row, index|
|
105
|
+
sheet.row(index).concat row
|
106
|
+
end
|
107
|
+
end
|
108
|
+
xls
|
109
|
+
end
|
110
|
+
|
111
|
+
def sanitize_name name
|
112
|
+
name
|
113
|
+
.gsub(/[\[\]\*\?:\/\\\t\n\r]/, " ")
|
114
|
+
.gsub(/^'/, "")
|
115
|
+
.gsub(/'$/, "")
|
116
|
+
.strip
|
117
|
+
.slice(0,31)
|
118
|
+
end
|
119
|
+
|
120
|
+
def to_array worksheet
|
121
|
+
context = RenderContext.new(worksheet.records, nil, worksheet.block)
|
122
|
+
context.send(:header) + context.send(:body)
|
123
|
+
end
|
124
|
+
|
125
|
+
def to_string xls
|
126
|
+
io = StringIO.new
|
127
|
+
xls.write(io)
|
128
|
+
io.rewind
|
129
|
+
string = io.read
|
130
|
+
string.force_encoding(Encoding::ASCII_8BIT)
|
131
|
+
string
|
132
|
+
end
|
133
|
+
end
|
134
|
+
|
135
|
+
|
72
136
|
class XLSContext < Struct.new(:worksheets, :filename, :block)
|
73
137
|
def to_xls
|
74
138
|
to_string(render(Spreadsheet::Workbook.new))
|
data/lib/decisive/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: decisive
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.7.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Micah Geisel
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2021-05-07 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: actionview
|