eitil 1.1.2 → 1.1.3

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 1e3982f2e32bcdb5ed52c9e58a0a811278229b59fd6e2f33aed590f0b7489ca5
4
- data.tar.gz: 2046136ba0059bc70a850744685406629e00571d793668303935451892b03740
3
+ metadata.gz: f1d078f5e3e79e4849d54692fcbfa418bec803333e69dcc6f4df72b09941ff31
4
+ data.tar.gz: 9e1232d63ae999afbbb5d0df2405fdb1ca038269096a73a8f8b82dc29de9ab1e
5
5
  SHA512:
6
- metadata.gz: 938b21d23f8e02911df52706504d1448df1cb9ec4dadbc44ae73075a45d7555b98c8c6b8ff2ac44647fdefe76f70cf7068be3f8ed2a4a73ab1430830460a2334
7
- data.tar.gz: cd61ca8e8d1a2fbc06a40c2af036be4fdd11b4785b34384344c442f454e40f441ee6550e557c1716c1f9671ecfeefb1ad816ba98ee62c34260f2e9e1d08b4980
6
+ metadata.gz: 6d80703adbc3faf1be7faf8ffdbed5d70b7e04f9edbd7f88dba9baef9b5e3b7b79cf8091732d0e03aaa28fa0ec8efe66260da9d64ca595fd31b64f667e742160
7
+ data.tar.gz: cf450d841ca4f1a528ba3aa2d7be7a018b9a4ae08f2a16e491cec44ce69245e8f7a3193ce00824a3b7fda959917c0127d1528c979bce14a4b5c221a79b4bfdec
data/eitil_core/README.md CHANGED
@@ -214,6 +214,49 @@ safe_to_i
214
214
  ```
215
215
 
216
216
 
217
+ ## Formatters
218
+
219
+ ```ruby
220
+
221
+ require "eitil_core/formatters"
222
+
223
+ ```
224
+
225
+ ```ruby
226
+ # require "eitil_core/formatters/sql"
227
+
228
+ Date.today.strfsql
229
+ # => "2021-06-23"
230
+
231
+ Date.today.strfsql(:date)
232
+ # => "2021-06-23"
233
+
234
+ DateTime.now.strfsql
235
+ # => "2021-06-23 13:15:37.945083"
236
+
237
+ DateTime.now.strfsql(:datetime)
238
+ # => "2021-06-23 13:15:37.945083"
239
+
240
+ DateTime.now.strfsql(:date)
241
+ # => "2021-06-23"
242
+
243
+ DateTime.now.strfsql(:time)
244
+ # => "13:16:23"
245
+
246
+ Time.now.strfsql
247
+ # => "13:16:23"
248
+
249
+ Time.now.strfsql(:datetime)
250
+ # => "2021-06-23 13:15:37.945083"
251
+
252
+ Time.now.strfsql(:date)
253
+ # => "2021-06-23"
254
+
255
+ Time.now.strfsql(:time)
256
+ # => "13:16:23"
257
+ ```
258
+
259
+
217
260
  ## Hash
218
261
 
219
262
  ```ruby
@@ -8,6 +8,7 @@ require "eitil_core/datetime"
8
8
 
9
9
  # multi class patches
10
10
  require "eitil_core/type_checkers"
11
+ require "eitil_core/formatters"
11
12
  require "eitil_core/mocks"
12
13
 
13
14
  # rails class patches
@@ -0,0 +1,4 @@
1
+
2
+ # require "eitil_core/formatters"
3
+
4
+ require "eitil_core/formatters/sql"
@@ -0,0 +1,72 @@
1
+
2
+ # require "eitil_core/formatters/sql"
3
+
4
+
5
+ class Date
6
+
7
+ def strfsql(type = :date)
8
+
9
+ type = type.kind_of?(String) ? type.to_sym : type
10
+
11
+ case type
12
+
13
+ when :date
14
+ return self.strftime "%Y-%m-%d"
15
+
16
+ end
17
+ return
18
+
19
+ end
20
+
21
+ end
22
+
23
+
24
+ class DateTime
25
+
26
+ def strfsql(type = :datetime)
27
+
28
+ type = type.kind_of?(String) ? type.to_sym : type
29
+
30
+ case type
31
+
32
+ when :datetime
33
+ return self.strftime "%Y-%m-%d %H:%M:%S.%6N"
34
+
35
+ when :date
36
+ return self.strftime "%Y-%m-%d"
37
+
38
+ when :time
39
+ return self.strftime "%H:%M:%S"
40
+
41
+ end
42
+ return
43
+
44
+ end
45
+
46
+ end
47
+
48
+
49
+ class Time
50
+
51
+ def strfsql(type = :time)
52
+
53
+ type = type.kind_of?(String) ? type.to_sym : type
54
+
55
+ case type
56
+
57
+ when :datetime
58
+ return self.strftime "%Y-%m-%d %H:%M:%S.%6N"
59
+
60
+ when :date
61
+ return self.strftime "%Y-%m-%d"
62
+
63
+ when :time
64
+ return self.strftime "%H:%M:%S"
65
+
66
+ end
67
+ return
68
+
69
+ end
70
+
71
+ end
72
+
@@ -4,42 +4,78 @@
4
4
  module EitilIntegrate::RubyXL
5
5
  class ApplicationExporter
6
6
 
7
- private
7
+ private
8
8
 
9
- def log_state
9
+ def log_state
10
10
 
11
- return unless write_log == true
11
+ return unless write_log == true
12
12
 
13
- # create_log_sheet
14
- book.add_worksheet('log')
13
+ # create_log_sheet
14
+ book.add_worksheet('log')
15
15
 
16
- # manage sheets
17
- previous_sheet = @sheet.sheet_name
18
- @sheet = @book["log"]
16
+ # manage sheets
17
+ previous_sheet = @sheet.sheet_name
18
+ @sheet = @book["log"]
19
19
 
20
- # manage coordinates
21
- previous_x = @x
22
- @x = 0
20
+ # manage coordinates
21
+ previous_x = @x
22
+ @x = 0
23
23
 
24
- # log everything we want to log
25
- report_state
24
+ # log everything we want to log
25
+ report_state
26
26
 
27
- # restore what was previously active
28
- @sheet = @book[previous_sheet]
29
- @x = previous_x
27
+ # style logs
28
+ style_first_x_columns_width(1, 40)
29
+ style_first_column_bold
30
30
 
31
- end
31
+ # restore what was previously active
32
+ @sheet = @book[previous_sheet]
33
+ @x = previous_x
32
34
 
33
- def report_state
34
- instance_variables.each do |ivar|
35
+ end
36
+
37
+ def report_state
38
+ instance_variables.each do |ivar|
39
+
40
+ variable_name = ivar.to_s
41
+ variable_value = format_value(instance_variable_get(ivar))
42
+
43
+ array_to_row [variable_name, variable_value]
44
+
45
+ end
46
+ end
47
+
48
+ # formatting the values to a human readably format is important, because otherwise Excel warns
49
+ # users on safety when opening the file.
50
+ def format_value(value)
51
+ value_class = value.class
52
+
53
+ if value_class == Hash
54
+ value.map {|k,v| "#{k.to_s.split('_').map(&:capitalize).join(' ')}: #{v}"}.join(' // ')
55
+
56
+ elsif value_class == Array && value.all? { |item| item.class.superclass == ApplicationRecord }
57
+ "#{value.class} #{value.map(&:id).join(', ')}"
58
+
59
+ elsif value_class.superclass == ApplicationRecord
60
+ "#{value.class} ##{value.id}"
61
+
62
+ elsif value_class.superclass == ActiveRecord::Relation
63
+ "#{value.class.to_s.split('::').first} #{value.ids.to_s.delete('[]')}"
64
+
65
+ elsif value_class.superclass == ActiveRecord::Associations::CollectionProxy
66
+ "#{value.class.to_s.split('::').first} #{value.ids.to_s.delete('[]')}"
67
+
68
+ elsif value_class == RubyXL::Workbook
69
+ value_class.name
35
70
 
36
- variable_name = ivar.to_s
37
- variable_value = instance_variable_get(ivar).to_s
71
+ elsif value_class == RubyXL::Worksheet
72
+ value_class.name
38
73
 
39
- array_to_row [variable_name, variable_value]
74
+ else
75
+ value.to_s
40
76
 
77
+ end
41
78
  end
42
- end
43
79
 
44
80
  end
45
81
  end
data/lib/eitil/all.rb CHANGED
@@ -7,7 +7,7 @@ Eitil::Layers.each do |layer|
7
7
  begin
8
8
  require "#{layer}/railtie"
9
9
  require "#{layer}"
10
- puts "succesfully required #{layer} and #{layer}/railtie"
10
+ puts "succesfully required #{layer} and #{layer}/railtie" if Rails.env.development?
11
11
 
12
12
  rescue LoadError => e
13
13
  puts "failed to require #{layer} and #{layer}/railtie"
data/lib/eitil/version.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  module Eitil
2
2
 
3
- VERSION = '1.1.2'
3
+ VERSION = '1.1.3'
4
4
 
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: eitil
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.2
4
+ version: 1.1.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jurriaan Schrofer
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-06-23 00:00:00.000000000 Z
11
+ date: 2021-06-25 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -105,6 +105,8 @@ files:
105
105
  - eitil_core/lib/eitil_core/errors/raise_error.rb
106
106
  - eitil_core/lib/eitil_core/float.rb
107
107
  - eitil_core/lib/eitil_core/float/safe_to_i.rb
108
+ - eitil_core/lib/eitil_core/formatters.rb
109
+ - eitil_core/lib/eitil_core/formatters/sql.rb
108
110
  - eitil_core/lib/eitil_core/hash.rb
109
111
  - eitil_core/lib/eitil_core/hash/auto_dig.rb
110
112
  - eitil_core/lib/eitil_core/lookups.rb