eitil 1.0.1.e.4 → 1.0.4

Sign up to get free protection for your applications and to get access to all the features.
Files changed (47) hide show
  1. checksums.yaml +4 -4
  2. data/Rakefile +0 -1
  3. data/eitil_core/README.md +93 -4
  4. data/eitil_core/lib/eitil_core.rb +1 -0
  5. data/eitil_core/lib/eitil_core/argument_helpers.rb +8 -0
  6. data/eitil_core/lib/eitil_core/argument_helpers/all_args_to_ivars_bang.rb +15 -0
  7. data/eitil_core/lib/eitil_core/argument_helpers/all_kwargs_to_ivars_bang.rb +15 -0
  8. data/eitil_core/lib/eitil_core/argument_helpers/args_to_h.rb +15 -0
  9. data/eitil_core/lib/eitil_core/argument_helpers/args_to_h_bang.rb +17 -0
  10. data/eitil_core/lib/eitil_core/argument_helpers/args_to_ivars_bang.rb +15 -0
  11. data/eitil_core/lib/eitil_core/float/safe_to_i.rb +3 -0
  12. data/eitil_core/lib/eitil_core/lookups.rb +2 -1
  13. data/eitil_core/lib/eitil_core/lookups/gem_path.rb +10 -0
  14. data/eitil_core/lib/eitil_core/mocks.rb +6 -0
  15. data/eitil_core/lib/eitil_core/mocks/array.rb +39 -0
  16. data/eitil_core/lib/eitil_core/mocks/hash.rb +36 -0
  17. data/eitil_core/lib/eitil_core/mocks/string.rb +11 -0
  18. data/eitil_integrate/README.md +11 -0
  19. data/eitil_integrate/lib/eitil_integrate.rb +4 -0
  20. data/eitil_integrate/lib/eitil_integrate/application_exporter.rb +22 -0
  21. data/eitil_integrate/lib/eitil_integrate/application_exporter/auto_sum.rb +10 -0
  22. data/eitil_integrate/lib/eitil_integrate/application_exporter/auto_sum/drop_data.rb +54 -0
  23. data/eitil_integrate/lib/eitil_integrate/application_exporter/auto_sum/format_data.rb +27 -0
  24. data/eitil_integrate/lib/eitil_integrate/application_exporter/auto_sum/initialize.rb +22 -0
  25. data/eitil_integrate/lib/eitil_integrate/application_exporter/auto_sum/present_data.rb +31 -0
  26. data/eitil_integrate/lib/eitil_integrate/application_exporter/auto_sum/reduce_data.rb +18 -0
  27. data/eitil_integrate/lib/eitil_integrate/application_exporter/auto_sum/sum_data.rb +56 -0
  28. data/eitil_integrate/lib/eitil_integrate/application_exporter/default_export.rb +43 -0
  29. data/eitil_integrate/lib/eitil_integrate/application_exporter/helpers.rb +50 -0
  30. data/eitil_integrate/lib/eitil_integrate/application_exporter/infos.rb +20 -0
  31. data/eitil_integrate/lib/eitil_integrate/application_exporter/initialize.rb +28 -0
  32. data/eitil_integrate/lib/eitil_integrate/application_exporter/lookups.rb +40 -0
  33. data/eitil_integrate/lib/eitil_integrate/application_exporter/selectors.rb +58 -0
  34. data/eitil_integrate/lib/eitil_integrate/application_exporter/setters.rb +27 -0
  35. data/eitil_integrate/lib/eitil_integrate/application_exporter/store_file.rb +34 -0
  36. data/eitil_integrate/lib/eitil_integrate/application_exporter/style_cells.rb +97 -0
  37. data/eitil_integrate/lib/eitil_integrate/application_exporter/validations.rb +28 -0
  38. data/eitil_integrate/lib/eitil_integrate/application_exporter/write_cells.rb +78 -0
  39. data/eitil_integrate/lib/eitil_integrate/application_exporter/write_messages.rb +18 -0
  40. data/eitil_support/lib/eitil_support/directory/lookups.rb +3 -0
  41. data/lib/eitil.rb +0 -1
  42. data/lib/eitil/all.rb +2 -3
  43. data/lib/eitil/railtie.rb +28 -1
  44. data/lib/eitil/version.rb +1 -1
  45. metadata +62 -6
  46. data/lib/eitil/engine.rb +0 -38
  47. data/lib/tasks/eitil_tasks.rake +0 -4
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 5232de873f2bceae1b35b083d012bfce49232bc8ca31f44dd8ca59813817dfb9
4
- data.tar.gz: 1db3364578e717a1cf277f5716d22b9d2e4d13a993bd814861cc4a2ad6a3adc5
3
+ metadata.gz: 2bf167d056adee32eeba94ac5282d6a9890575a309c775bd53da822f4817501e
4
+ data.tar.gz: '08bbebecb6e9d84567d522d9c7b62e23ff8b3a6e3b3b1fee5639a58aa9f6bc68'
5
5
  SHA512:
6
- metadata.gz: b3cae8cfdd62e6dfa886bc74dd3df3c360eaed551a372969caa5fb0667e56b80ba00a41c8916fe4ab3edbc1467a83a00157f0bf02490e93f00b0f8a81dd5d420
7
- data.tar.gz: fbff1d6ed87e89fcb9082e8b04d5cc980d7e152817f3fb590f710abb536b5ad7125f08809df106debfe964f15ea89a515669705fe37327450a9c8493300c435f
6
+ metadata.gz: cab736bd8a72ba50468f017d91f12fabe1a8a8887bb892797c7466296227fb763e413a5ae372c535ef134963181414ac8ef3d7cae497d708b178f05a93c03ce1
7
+ data.tar.gz: dc057b62c574bea1b96e4074c9af724cf3ad59d957f9a62790cbe63ec998503c1ae1a1b5f253388d293ab1bfb5eeeb41b7f247dc61e1b635dacadc7bf644ddd0
data/Rakefile CHANGED
@@ -1,7 +1,6 @@
1
1
  require "bundler/setup"
2
2
 
3
3
  APP_RAKEFILE = File.expand_path("test/dummy/Rakefile", __dir__)
4
- load "rails/tasks/engine.rake"
5
4
 
6
5
  load "rails/tasks/statistics.rake"
7
6
 
data/eitil_core/README.md CHANGED
@@ -76,11 +76,11 @@ all_args_to_ivars(binding)
76
76
 
77
77
 
78
78
  ```ruby
79
- # require "eitil_core/argument_helpers/args_to_ivars"
79
+ # require "eitil_core/argument_helpers/all_args_to_ivars_bang"
80
80
 
81
- args_to_ivars(binding, *local_vars)
82
- # sets specified keywords arguments of the method's local binding to instance variables
83
- # call as: all_args_to_ivars binding :user_id, :user_name
81
+ all_args_to_ivars!
82
+ # works the same as .all_args_to_ivars, except that passing the binding is no longer required
83
+ # production usage is discouraged by the creator of the supporting gem
84
84
  ```
85
85
 
86
86
 
@@ -94,6 +94,52 @@ all_kwargs_to_ivars(local_binding, namespace= :kwargs)
94
94
  ```
95
95
 
96
96
 
97
+ ```ruby
98
+ # require "eitil_core/argument_helpers/all_kwargs_to_ivars_bang"
99
+
100
+ all_kwargs_to_ivars!(namespace= :kwargs)
101
+ # works the same as .all_kwargs_to_ivars, except that passing the binding is no longer required
102
+ # production usage is discouraged by the creator of the supporting gem
103
+ ```
104
+
105
+
106
+ ```ruby
107
+ # require "eitil_core/argument_helpers/args_to_h"
108
+
109
+ args_to_h(binding, *local_vars)
110
+ # creates a hash, with a given local_var as keys and its value as value
111
+ # call as: args_to_h(binding, :username, :password)
112
+ # => { username: 'jurriaan', password: 'matz_is_nice' }
113
+ ```
114
+
115
+
116
+ ```ruby
117
+ # require "eitil_core/argument_helpers/args_to_h_bang"
118
+
119
+ args_to_h!(*local_vars)
120
+ # works the same as .args_to_h, except that passing the binding is no longer required
121
+ # production usage is discouraged by the creator of the supporting gem
122
+ ```
123
+
124
+
125
+ ```ruby
126
+ # require "eitil_core/argument_helpers/args_to_ivars"
127
+
128
+ args_to_ivars(binding, *local_vars)
129
+ # sets specified keywords arguments of the method's local binding to instance variables
130
+ # call as: all_args_to_ivars binding :user_id, :user_name
131
+ ```
132
+
133
+
134
+ ```ruby
135
+ # require "eitil_core/argument_helpers/args_to_ivars_bang"
136
+
137
+ args_to_ivars!(*local_vars)
138
+ # works the same as .args_to_ivars, except that passing the binding is no longer required
139
+ # production usage is discouraged by the creator of the supporting gem
140
+ ```
141
+
142
+
97
143
  ## Concerns
98
144
 
99
145
  ```ruby
@@ -203,6 +249,49 @@ all_methods(include_ancestors = true, grep: nil)
203
249
  ```
204
250
 
205
251
 
252
+ ```ruby
253
+ # require "eitil_core/lookups/gem_path"
254
+
255
+ Find.gem_path(gem_name)
256
+ # finds the root of an installed gem, allowing you to traverse its paths from there.
257
+ # call as: Find.gem_path("rails")
258
+ # => "/Users/jurriaanschrofer/.rvm/gems/ruby-2.6.5/gems/rails-5.2.3"
259
+ ```
260
+
261
+
262
+ ## Mocks
263
+
264
+ ```ruby
265
+
266
+ require "eitil_core/mocks"
267
+
268
+ ```
269
+
270
+ ```ruby
271
+ # require "eitil_core/mocks/string"
272
+
273
+ String.mock(n=25)
274
+ # String.mock(10) # ==> "oooooo c nnnnnnnnnn ttttttttt p kkk r ppppp rrrrrrr uuu"
275
+ ```
276
+
277
+ ```ruby
278
+ # require "eitil_core/mocks/array"
279
+
280
+ Array.mock(n=10, type=Integer, &block)
281
+ # Array.mock # ==> [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
282
+ # Array.mock(10, Float) #==> [1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0]
283
+ # Built-in methods are provided for classes Integer, Float, String, Date, Time
284
+ # But any other class is accepted as well, also your own classes such as User, Shift and Environment
285
+ ```
286
+
287
+ ```ruby
288
+ # require "eitil_core/mocks/hash"
289
+
290
+ Hash.mock(n=10)
291
+ # Hash.mock(10) #==> {"a"=>1, "b"=>2, "c"=>3, "d"=>4, "e"=>5, "f"=>6, "g"=>7, "h"=>8, "i"=>9, "j"=>10}
292
+ ```
293
+
294
+
206
295
  ## SafeExecutions
207
296
 
208
297
  ```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/mocks"
11
12
 
12
13
  # rails class patches
13
14
  require "eitil_core/application_record"
@@ -1,5 +1,13 @@
1
1
  # require "eitil_core/arugment_helpers"
2
2
 
3
3
  require "eitil_core/argument_helpers/all_args_to_ivars"
4
+ require "eitil_core/argument_helpers/all_args_to_ivars_bang"
5
+
4
6
  require "eitil_core/argument_helpers/args_to_ivars"
7
+ require "eitil_core/argument_helpers/args_to_ivars_bang"
8
+
9
+ require "eitil_core/argument_helpers/args_to_h"
10
+ require "eitil_core/argument_helpers/args_to_h_bang"
11
+
5
12
  require "eitil_core/argument_helpers/all_kwargs_to_ivars"
13
+ require "eitil_core/argument_helpers/all_kwargs_to_ivars_bang"
@@ -0,0 +1,15 @@
1
+
2
+ # require "eitil_core/argument_helpers/all_args_to_ivars_bang"
3
+
4
+ require "eitil_core/lookups/gem_path"
5
+ require "#{Find.gem_path('binding_of_caller')}/lib/binding_of_caller/mri.rb"
6
+
7
+ Kernel.module_eval do
8
+
9
+ def all_args_to_ivars!
10
+ binding.of_caller(1).local_variables.each do |lvar|
11
+ instance_variable_set("@#{lvar}", binding.of_caller(2).local_variable_get(lvar))
12
+ end
13
+ end
14
+
15
+ end
@@ -0,0 +1,15 @@
1
+
2
+ # require "eitil_core/argument_helpers/all_kwargs_to_ivars_bang"
3
+
4
+ require "eitil_core/lookups/gem_path"
5
+ require "#{Find.gem_path('binding_of_caller')}/lib/binding_of_caller/mri.rb"
6
+
7
+ Kernel.module_eval do
8
+
9
+ def all_kwargs_to_ivars!(namespace=:kwargs)
10
+ binding.of_caller(1).local_variable_get(namespace).each do |name, value|
11
+ instance_variable_set "@#{name}", value
12
+ end
13
+ end
14
+
15
+ end
@@ -0,0 +1,15 @@
1
+
2
+ # require "eitil_core/argument_helpers/args_to_h"
3
+
4
+ Kernel.module_eval do
5
+
6
+ def args_to_h(local_binding, *local_vars)
7
+
8
+ local_vars.reject { |lvar| lvar == local_binding }
9
+ .reject { |lvar| lvar.to_s.starts_with?('_') }
10
+ .map { |lvar| { "#{lvar}": local_binding.local_variable_get(lvar) } }
11
+ .inject &:merge
12
+
13
+ end
14
+
15
+ end
@@ -0,0 +1,17 @@
1
+
2
+ # require "eitil_core/argument_helpers/args_to_h_bang"
3
+
4
+ require "eitil_core/lookups/gem_path"
5
+ require "#{Find.gem_path('binding_of_caller')}/lib/binding_of_caller/mri.rb"
6
+
7
+ Kernel.module_eval do
8
+
9
+ def args_to_h!(*local_vars)
10
+
11
+ local_vars.reject { |lvar| lvar.to_s.starts_with?('_') }
12
+ .map { |lvar| { "#{lvar}": binding.of_caller(2).local_variable_get(lvar) } }
13
+ .inject &:merge
14
+
15
+ end
16
+
17
+ end
@@ -0,0 +1,15 @@
1
+
2
+ # require "eitil_core/argument_helpers/args_to_ivars_bang"
3
+
4
+ require "eitil_core/lookups/gem_path"
5
+ require "#{Find.gem_path('binding_of_caller')}/lib/binding_of_caller/mri.rb"
6
+
7
+ Kernel.module_eval do
8
+
9
+ def args_to_ivars!(*local_vars)
10
+ local_vars.each do |lvar|
11
+ instance_variable_set("@#{lvar}", binding.of_caller(2).local_variable_get(lvar))
12
+ end
13
+ end
14
+
15
+ end
@@ -1,3 +1,6 @@
1
+
2
+ # require "eitil_core/float/safe_to_i"
3
+
1
4
  class Float
2
5
 
3
6
  # converts a float to an integer, only when no decimal values are lost.
@@ -1,2 +1,3 @@
1
1
 
2
- require "eitil_core/lookups/all_methods"
2
+ require "eitil_core/lookups/all_methods"
3
+ require "eitil_core/lookups/gem_path"
@@ -0,0 +1,10 @@
1
+
2
+ # require "eitil_core/lookups/gem_path"
3
+
4
+ module Find
5
+
6
+ def self.gem_path(gem_name)
7
+ Gem.loaded_specs[gem_name].full_gem_path
8
+ end
9
+
10
+ end
@@ -0,0 +1,6 @@
1
+
2
+ # require "eitil_core/mocks"
3
+
4
+ require "eitil_core/mocks/array"
5
+ require "eitil_core/mocks/hash"
6
+ require "eitil_core/mocks/string"
@@ -0,0 +1,39 @@
1
+
2
+ # require "eitil_core/mocks/array"
3
+
4
+ class Array
5
+
6
+ def self.mock(n=10, type=Integer, &block)
7
+
8
+ return Array.new(n,&block) if block_given?
9
+
10
+ case type.to_s
11
+
12
+ when 'Integer'
13
+ Array.new(n) {|i| i+1}
14
+
15
+ when 'Float'
16
+ Array.new(n) {|i| i+1.0}
17
+
18
+ when 'String'
19
+ words = String.mock(n).split
20
+ Array.new(n) {|i| words[i]}
21
+
22
+ when 'Time'
23
+ time_now = Time.now
24
+ Array.new(n) {|i| time_now + (i * (60 * 60 * 24)) }
25
+
26
+ when 'Date'
27
+ date_now = Date.today
28
+ Array.new(n) {|i| date_now + (i * 1) }
29
+
30
+ else
31
+ Array.new(n) do
32
+ type.send(:new) rescue
33
+ raise NoNewMethodError, 'Please provide Object that responds to `new` call'
34
+ end
35
+ end
36
+
37
+ end
38
+
39
+ end
@@ -0,0 +1,36 @@
1
+
2
+ # require "eitil_core/mocks/hash"
3
+
4
+ class Hash
5
+
6
+ def self.mock(n=10)
7
+ range = mock_size(n).to_a
8
+ Hash[Array.mock(n) {|m| range[m] }.zip(Array.mock(n))]
9
+ end
10
+
11
+ private
12
+
13
+ def self.mock_size(n)
14
+ EitilCore::Mock.hash_range_for(n)
15
+ end
16
+
17
+ end
18
+
19
+
20
+ module EitilCore
21
+ module Mock
22
+
23
+ def self.hash_range_for(n)
24
+ range = nil
25
+ i = 0
26
+
27
+ until range != nil do
28
+ range = ('a'..'z') if n <= 26
29
+ range = ('a'.."z#{'z'*i}") if n < (26 + (26 ** (i+1) )) && !range
30
+ i += 1
31
+ end
32
+ range
33
+ end
34
+
35
+ end
36
+ end
@@ -0,0 +1,11 @@
1
+
2
+ # require "eitil_core/mocks/string"
3
+
4
+ class String
5
+
6
+ def self.mock(n=25)
7
+ alphabet = ('a'..'z').to_a
8
+ n.times.map { alphabet.sample * rand(1..10) } * ' '
9
+ end
10
+
11
+ end
@@ -6,3 +6,14 @@
6
6
  EitilIntegrate provides seamless integrations with select gems and API's, through helper methods stored in PORO's.
7
7
 
8
8
 
9
+ ## EitilIntegrate::RubyXL::ApplicationExporter
10
+
11
+ ```ruby
12
+
13
+ require "eitil_integrate/application_exporter"
14
+
15
+ ```
16
+
17
+ EitilIntegrate::RubyXL::ApplicationExporter provides an extensive wrapper around the RubyXL gem, and can be used by setting it as the superclass of your application's exporter classes.
18
+
19
+ Since the functionality is diverse and changing, you can best look at the source code files for the options and methods.
@@ -0,0 +1,4 @@
1
+
2
+ # require "eitil_integrate"
3
+
4
+ require "eitil_integrate/application_exporter"
@@ -0,0 +1,22 @@
1
+ # require "eitil_integrate/application_exporter"
2
+
3
+ # base file, which is required by all others
4
+ require_relative "application_exporter/initialize"
5
+
6
+ # temp file, with methods that should, at some point, moved elsewhere
7
+ require_relative "application_exporter/helpers"
8
+
9
+ # files split by theme and purpose, feel free to cherry-pick
10
+ require_relative "application_exporter/default_export"
11
+ require_relative "application_exporter/validations"
12
+ require_relative "application_exporter/write_cells"
13
+ require_relative "application_exporter/write_messages"
14
+ require_relative "application_exporter/style_cells"
15
+ require_relative "application_exporter/store_file"
16
+ require_relative "application_exporter/setters"
17
+ require_relative "application_exporter/selectors"
18
+ require_relative "application_exporter/lookups"
19
+ require_relative "application_exporter/infos"
20
+
21
+ # the AutoSum module, which is a seperately functioning module (service)
22
+ require_relative "application_exporter/auto_sum"
@@ -0,0 +1,10 @@
1
+
2
+ # require "eitil_integrate/application_exporter/auto_sum"
3
+
4
+ require_relative "auto_sum/initialize"
5
+
6
+ require_relative "auto_sum/drop_data"
7
+ require_relative "auto_sum/format_data"
8
+ require_relative "auto_sum/reduce_data"
9
+ require_relative "auto_sum/sum_data"
10
+ require_relative "auto_sum/present_data"
@@ -0,0 +1,54 @@
1
+
2
+ # require "eitil_integrate/application_exporter/auto_sum/drop_data"
3
+
4
+ module EitilIntegrate::RubyXL
5
+ module AutoSum
6
+ class << self
7
+
8
+ def drop_data
9
+ # since excel layout consistency requires stringified values, we first need
10
+ # to convert strings back to floats.
11
+ try_float_conversion
12
+
13
+ # after the required conversions, drop all values that should not be accepted.
14
+ drop_nil_values
15
+ drop_empty_values
16
+ drop_non_accepted_values
17
+ end
18
+
19
+ def try_float_conversion
20
+ @hash.transform_values! { |array| array.map { |item| item.is_num? ? item.to_f : item } }
21
+ end
22
+
23
+ def drop_nil_values
24
+ @hash.transform_values! &:compact
25
+ end
26
+
27
+ def drop_empty_values
28
+ @hash.transform_values! { |array| array.reject { |item| item.safe_send :empty? } }
29
+ end
30
+
31
+ def drop_non_accepted_values
32
+ @hash.transform_values! { |array| array.reject { |item| !accepted_value? item } }
33
+ end
34
+
35
+ def accepted_value?(value)
36
+ @value = value
37
+ value_is_a_int || value_is_a_float || value_is_a_time_string
38
+ end
39
+
40
+ def value_is_a_int
41
+ @value.is_a? Integer
42
+ end
43
+
44
+ def value_is_a_float
45
+ @value.is_a? Float
46
+ end
47
+
48
+ def value_is_a_time_string
49
+ @value.scan(/\d{2}:\d{2}:\d{2}/).first || @value.scan(/\d{2}:\d{2}/).first
50
+ end
51
+
52
+ end
53
+ end
54
+ end