eitil 1.1.2 → 1.1.3

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
  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