eitil 1.0.0 → 1.0.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/eitil_core/README.md +288 -0
- data/eitil_core/lib/eitil_core.rb +24 -0
- data/eitil_core/lib/eitil_core/application_controller.rb +2 -0
- data/eitil_core/lib/eitil_core/application_controller/slice_params.rb +14 -0
- data/eitil_core/lib/eitil_core/application_record.rb +4 -0
- data/eitil_core/lib/eitil_core/application_record/all_associations.rb +16 -0
- data/eitil_core/lib/eitil_core/application_record/find_by_like.rb +15 -0
- data/eitil_core/lib/eitil_core/application_record/where_like.rb +15 -0
- data/eitil_core/lib/eitil_core/argument_helpers.rb +5 -0
- data/eitil_core/lib/eitil_core/argument_helpers/all_args_to_ivars.rb +12 -0
- data/eitil_core/lib/eitil_core/argument_helpers/all_kwargs_to_ivars.rb +12 -0
- data/eitil_core/lib/eitil_core/argument_helpers/args_to_ivars.rb +12 -0
- data/eitil_core/lib/eitil_core/concerns.rb +2 -0
- data/eitil_core/lib/eitil_core/concerns/include_concerns_of.rb +15 -0
- data/eitil_core/lib/eitil_core/datetime.rb +2 -0
- data/eitil_core/lib/eitil_core/datetime/prettify.rb +10 -0
- data/eitil_core/lib/eitil_core/errors.rb +2 -0
- data/eitil_core/lib/eitil_core/errors/raise_error.rb +11 -0
- data/eitil_core/lib/eitil_core/float.rb +2 -0
- data/eitil_core/lib/eitil_core/float/safe_to_i.rb +9 -0
- data/eitil_core/lib/eitil_core/hash.rb +2 -0
- data/eitil_core/lib/eitil_core/hash/auto_dig.rb +17 -0
- data/eitil_core/lib/eitil_core/lookups.rb +2 -0
- data/eitil_core/lib/eitil_core/lookups/all_methods.rb +32 -0
- data/eitil_core/lib/eitil_core/railtie.rb +37 -0
- data/eitil_core/lib/eitil_core/safe_executions.rb +3 -0
- data/eitil_core/lib/eitil_core/safe_executions/safe_call.rb +12 -0
- data/eitil_core/lib/eitil_core/safe_executions/safe_send.rb +12 -0
- data/eitil_core/lib/eitil_core/setters.rb +2 -0
- data/eitil_core/lib/eitil_core/setters/set_ivars.rb +12 -0
- data/eitil_core/lib/eitil_core/type_checkers.rb +2 -0
- data/eitil_core/lib/eitil_core/type_checkers/is_num_or_nan.rb +96 -0
- data/eitil_core/lib/eitil_core/validations.rb +2 -0
- data/eitil_core/lib/eitil_core/validations/run_validations.rb +10 -0
- data/eitil_integrate/README.md +8 -0
- data/eitil_integrate/lib/eitil_integrate.rb +0 -0
- data/eitil_integrate/lib/eitil_integrate/railtie.rb +10 -0
- data/eitil_store/README.md +16 -0
- data/eitil_store/lib/eitil_store.rb +4 -0
- data/eitil_store/lib/eitil_store/railtie.rb +10 -0
- data/eitil_store/lib/eitil_store/regex.rb +4 -0
- data/eitil_store/lib/eitil_store/regex/regex.rb +41 -0
- data/eitil_support/README.md +78 -0
- data/eitil_support/lib/eitil_support.rb +5 -0
- data/eitil_support/lib/eitil_support/directory.rb +2 -0
- data/eitil_support/lib/eitil_support/directory/lookups.rb +23 -0
- data/eitil_support/lib/eitil_support/railtie.rb +10 -0
- data/eitil_support/lib/eitil_support/stacktrace.rb +4 -0
- data/eitil_support/lib/eitil_support/stacktrace/audit.rb +15 -0
- data/eitil_support/lib/eitil_support/stacktrace/call.rb +17 -0
- data/eitil_support/lib/eitil_support/stacktrace/stack.rb +28 -0
- data/eitil_wrapper/README.md +181 -0
- data/eitil_wrapper/lib/eitil_wrapper.rb +7 -0
- data/eitil_wrapper/lib/eitil_wrapper/decorators.rb +3 -0
- data/eitil_wrapper/lib/eitil_wrapper/decorators/application_decorator.rb +19 -0
- data/eitil_wrapper/lib/eitil_wrapper/decorators/controller_decorator.rb +60 -0
- data/eitil_wrapper/lib/eitil_wrapper/jobs.rb +4 -0
- data/eitil_wrapper/lib/eitil_wrapper/jobs/new_job.rb +34 -0
- data/eitil_wrapper/lib/eitil_wrapper/jobs/new_job_debugger.rb +37 -0
- data/eitil_wrapper/lib/eitil_wrapper/jobs/single_method_job.rb +8 -0
- data/eitil_wrapper/lib/eitil_wrapper/railtie.rb +49 -0
- data/eitil_wrapper/lib/eitil_wrapper/routes.rb +2 -0
- data/eitil_wrapper/lib/eitil_wrapper/routes/extended_resources.rb +40 -0
- data/eitil_wrapper/lib/eitil_wrapper/scopes.rb +2 -0
- data/eitil_wrapper/lib/eitil_wrapper/scopes/default_scopes.rb +80 -0
- data/lib/eitil/all.rb +4 -1
- data/lib/eitil/version.rb +1 -1
- metadata +66 -1
@@ -0,0 +1,15 @@
|
|
1
|
+
|
2
|
+
# require "eitil_core/concerns/include_concerns_of"
|
3
|
+
|
4
|
+
class Module
|
5
|
+
|
6
|
+
def include_concerns_of(*directories, namespace: nil)
|
7
|
+
directories.map! { |dir| "#{namespace}::#{dir.to_s.camelcase}" }
|
8
|
+
|
9
|
+
directories.each do |dir|
|
10
|
+
konstants = dir.constantize.constants(false)
|
11
|
+
konstants.each { |kon| include(const_get "#{dir}::#{kon}") }
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
end
|
@@ -0,0 +1,11 @@
|
|
1
|
+
|
2
|
+
# require "eitil_core/errors/raise_error"
|
3
|
+
|
4
|
+
Kernel.module_eval do
|
5
|
+
|
6
|
+
def raise_error(_class_name, message = nil)
|
7
|
+
Object.const_set(_class_name, Class.new(StandardError)) unless Object.const_defined?(_class_name)
|
8
|
+
raise _class_name.constantize.new message
|
9
|
+
end
|
10
|
+
|
11
|
+
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
|
2
|
+
# require "eitil_core/hash/auto_dig"
|
3
|
+
|
4
|
+
class Hash
|
5
|
+
|
6
|
+
def auto_dig(_hash = self, _key)
|
7
|
+
return _hash[_key] if _hash.fetch(_key, false)
|
8
|
+
|
9
|
+
_hash.keys.each do |k|
|
10
|
+
answer = auto_dig(_hash[k], _key) if _hash[k].is_a? Hash
|
11
|
+
return answer if answer
|
12
|
+
end
|
13
|
+
|
14
|
+
nil
|
15
|
+
end
|
16
|
+
|
17
|
+
end
|
@@ -0,0 +1,32 @@
|
|
1
|
+
|
2
|
+
# require "eitil_core/lookups/all_methods"
|
3
|
+
|
4
|
+
require "awesome_print"
|
5
|
+
|
6
|
+
class Object
|
7
|
+
|
8
|
+
def all_methods(include_ancestors = true, grep: nil)
|
9
|
+
|
10
|
+
_introspection_methods = %i$
|
11
|
+
methods
|
12
|
+
singleton_methods
|
13
|
+
instance_methods
|
14
|
+
private_methods
|
15
|
+
public_methods
|
16
|
+
protected_methods
|
17
|
+
private_instance_methods
|
18
|
+
public_instance_methods
|
19
|
+
protected_instance_methods
|
20
|
+
$
|
21
|
+
|
22
|
+
_introspection_methods.map! do |_m|
|
23
|
+
_methods = safe_send _m, include_ancestors
|
24
|
+
_methods = grep ? _methods&.grep(grep) : _methods
|
25
|
+
{ _m => _methods }
|
26
|
+
end
|
27
|
+
|
28
|
+
ap _introspection_methods.inject &:merge
|
29
|
+
|
30
|
+
end
|
31
|
+
|
32
|
+
end
|
@@ -0,0 +1,37 @@
|
|
1
|
+
|
2
|
+
require "rails"
|
3
|
+
require "eitil_core"
|
4
|
+
|
5
|
+
module EitilCore
|
6
|
+
|
7
|
+
class Railtie < Rails::Railtie
|
8
|
+
|
9
|
+
initializer "my_railtie.configure_rails_initialization", options: :after do |app|
|
10
|
+
|
11
|
+
# Dynamic dispatching after initialization of Rails classes.
|
12
|
+
|
13
|
+
# ApplicationRecord
|
14
|
+
|
15
|
+
if Object.const_defined?('EitilCore::ApplicationRecord::WhereLike')
|
16
|
+
::ApplicationRecord.send(:extend, EitilCore::ApplicationRecord::WhereLike)
|
17
|
+
end
|
18
|
+
|
19
|
+
if Object.const_defined?('EitilCore::ApplicationRecord::FindByLike')
|
20
|
+
::ApplicationRecord.send(:extend, EitilCore::ApplicationRecord::FindByLike)
|
21
|
+
end
|
22
|
+
|
23
|
+
if Object.const_defined?('EitilCore::ApplicationRecord::AllAssociations')
|
24
|
+
::ApplicationRecord.send(:extend, EitilCore::ApplicationRecord::AllAssociations)
|
25
|
+
end
|
26
|
+
|
27
|
+
# ApplicationController
|
28
|
+
|
29
|
+
if Object.const_defined?('EitilCore::ApplicationController::SliceParams')
|
30
|
+
::ActionController::API.send(:include, EitilCore::ApplicationController::SliceParams)
|
31
|
+
end
|
32
|
+
|
33
|
+
end
|
34
|
+
|
35
|
+
end
|
36
|
+
|
37
|
+
end
|
@@ -0,0 +1,96 @@
|
|
1
|
+
|
2
|
+
# require "eitil_core/type_checkers/is_num_or_nan"
|
3
|
+
|
4
|
+
require "eitil_store/regex/regex"
|
5
|
+
|
6
|
+
class String
|
7
|
+
|
8
|
+
def is_nan?
|
9
|
+
self !~ EitilStore::Regex::IsNum
|
10
|
+
end
|
11
|
+
|
12
|
+
def is_num?
|
13
|
+
!is_nan?
|
14
|
+
end
|
15
|
+
|
16
|
+
end
|
17
|
+
|
18
|
+
# Descending classes which are always numeric
|
19
|
+
|
20
|
+
class Numeric
|
21
|
+
|
22
|
+
def is_nan?
|
23
|
+
false
|
24
|
+
end
|
25
|
+
|
26
|
+
def is_num?
|
27
|
+
true
|
28
|
+
end
|
29
|
+
|
30
|
+
end
|
31
|
+
|
32
|
+
# Classes which are never numeric
|
33
|
+
|
34
|
+
class NilClass
|
35
|
+
|
36
|
+
def is_nan?
|
37
|
+
true
|
38
|
+
end
|
39
|
+
|
40
|
+
def is_num?
|
41
|
+
false
|
42
|
+
end
|
43
|
+
|
44
|
+
end
|
45
|
+
|
46
|
+
|
47
|
+
class TrueClass
|
48
|
+
|
49
|
+
def is_nan?
|
50
|
+
true
|
51
|
+
end
|
52
|
+
|
53
|
+
def is_num?
|
54
|
+
false
|
55
|
+
end
|
56
|
+
|
57
|
+
end
|
58
|
+
|
59
|
+
|
60
|
+
class FalseClass
|
61
|
+
|
62
|
+
def is_nan?
|
63
|
+
true
|
64
|
+
end
|
65
|
+
|
66
|
+
def is_num?
|
67
|
+
false
|
68
|
+
end
|
69
|
+
|
70
|
+
end
|
71
|
+
|
72
|
+
|
73
|
+
class Hash
|
74
|
+
|
75
|
+
def is_nan?
|
76
|
+
true
|
77
|
+
end
|
78
|
+
|
79
|
+
def is_num?
|
80
|
+
false
|
81
|
+
end
|
82
|
+
|
83
|
+
end
|
84
|
+
|
85
|
+
|
86
|
+
class Array
|
87
|
+
|
88
|
+
def is_nan?
|
89
|
+
true
|
90
|
+
end
|
91
|
+
|
92
|
+
def is_num?
|
93
|
+
false
|
94
|
+
end
|
95
|
+
|
96
|
+
end
|
File without changes
|
@@ -0,0 +1,16 @@
|
|
1
|
+
|
2
|
+
|
3
|
+
|
4
|
+
# EitilStore
|
5
|
+
|
6
|
+
EitilStore stores data in containers, such as Regexp instances.
|
7
|
+
|
8
|
+
|
9
|
+
## EitilSupport::Regex
|
10
|
+
|
11
|
+
```ruby
|
12
|
+
|
13
|
+
require "eitil_store/regex"
|
14
|
+
|
15
|
+
```
|
16
|
+
Provides regular expressions which are of general use. To see which general expressions are available, see /eitil_store/regex/regex.rb
|
@@ -0,0 +1,41 @@
|
|
1
|
+
# require "eitil_store/regex/regex"
|
2
|
+
|
3
|
+
module EitilStore
|
4
|
+
module Regex
|
5
|
+
|
6
|
+
# URL
|
7
|
+
Url = /(\A\z)|(\A(http|https):\/\/[a-z0-9]+([\-\.]{1}[a-z0-9]+)*\.[a-z]{2,5}(([0-9]{1,5})?\/.*)?\z)/ix
|
8
|
+
|
9
|
+
# Domain
|
10
|
+
Domain = /(\A\z)|(\A[a-z0-9]+([\-\.]{1}[a-z0-9]+)*\.[a-z]{2,5}(([0-9]{1,5})?)?\z)/ix
|
11
|
+
|
12
|
+
# From the email regex research: http://fightingforalostcause.net/misc/2006/compare-email-regex.php
|
13
|
+
Email = /\A([\w\!\#\z\%\&\'\*\+\-\/\=\?\\A\`{\|\}\~]+\.)*[\w\+-]+@((((([a-z0-9]{1}[a-z0-9\-]{0,62}[a-z0-9]{1})|[a-z])\.)+[a-z]{2,6})|(\d{1,3}\.){3}\d{1,3}(\:\d{1,5})?)\z/i
|
14
|
+
|
15
|
+
# Validates a UUID as defined: http://en.wikipedia.org/wiki/Universally_unique_identifier
|
16
|
+
UUID = /\A(\h{32}|\h{8}-\h{4}-\h{4}-\h{4}-\h{12})\z/
|
17
|
+
|
18
|
+
# IsNum comes from the Rubinius source code and identifies both integers and floats correctly.
|
19
|
+
IsNum = /^\s*[+-]?((\d+_?)*\d+(\.(\d+_?)*\d+)?|\.(\d+_?)*\d+)(\s*|([eE][+-]?(\d+_?)*\d+)\s*)$/
|
20
|
+
|
21
|
+
# Validates Credit Card numbers, Checks if it contains 16 numbers in groups of 4 separated by -, space or nothing
|
22
|
+
CreditCard = /\A(\d{4}-){3}\d{4}\z|\A(\d{4}\s){3}\d{4}\z|\A\d{16}\z/
|
23
|
+
|
24
|
+
# MasterCard credit card
|
25
|
+
MasterCard = /\A5[1-5]\d{14}\z/
|
26
|
+
|
27
|
+
# Visa credit card
|
28
|
+
Visa = /\A4\d{15}\z/
|
29
|
+
|
30
|
+
# Source: http://snipplr.com/view/15322/iban-regex-all-ibans/
|
31
|
+
# You have to remove spaces or any separator character from the original field before use this regex
|
32
|
+
Iban = /[a-zA-Z]{2}[0-9]{2}[a-zA-Z0-9]{4}[0-9]{7}([a-zA-Z0-9]?){0,16}/
|
33
|
+
|
34
|
+
# General postal code: validates a 5 digits postal code
|
35
|
+
GeneralPostalCode = /\A\d{5}\z/
|
36
|
+
|
37
|
+
# Validates US ZIP Code (basic and extended format)
|
38
|
+
ZIPCode = /\A(\d{5}\z)|(\d{5}-\d{4}\z)/
|
39
|
+
|
40
|
+
end
|
41
|
+
end
|