timestamp_super_functions 0.1.0 → 0.1.0.2

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: ffde0b5995f1a84ab9313144a839556745fd36caddf78fa021b9b5152ab078a4
4
- data.tar.gz: 68f4c9d95da7097d364bb0d97162bc6c7aa71756c9fae0ab481198b76f6849f6
3
+ metadata.gz: 69adb53d85eaa093840b809949a858d9f13c32c249f3dfcda317acada585a3cc
4
+ data.tar.gz: 1a9d2bccc4ca89e52cb45d16f4fde7ce29220af387b3fb4981d9db2accec22de
5
5
  SHA512:
6
- metadata.gz: 6a4d8cc10be10afe6bf7cacb3d60f2eb6e2d90329fe8fd9de9de4e3c9e8ff4e1534d905734d6b94f01fd4f5487e63cba52debde48e7b6f70a80a32faa8095b12
7
- data.tar.gz: 387a3f55a84100c45b6bb449f596f516429bc94a9d94f8d51e99beeba6e83b86962c33fa96ee22605348bc6fcb20cb97049957fc33574cfd99704fb61d9e726f
6
+ metadata.gz: 479ca892bd894713d92547ef913bfb126d367a6c771af8038e6a088565a71e222aa46987a44d57056239d8b423c6e773e03c4cf112af2d45a41afd1088b330f4
7
+ data.tar.gz: 7fae4e6ab3ee8c905946ae31dbd2ae3d4f4a6d43568815c8491a711cdd15843d48fa86a4ffe231e2a24e510b8149f6b99ea7bc15ed76fdb2683c46f33d2bf48e
data/Gemfile.lock ADDED
@@ -0,0 +1,35 @@
1
+ PATH
2
+ remote: .
3
+ specs:
4
+ timestamp_super_functions (0.1.0.2)
5
+
6
+ GEM
7
+ remote: https://rubygems.org/
8
+ specs:
9
+ diff-lcs (1.3)
10
+ rake (10.5.0)
11
+ rspec (3.8.0)
12
+ rspec-core (~> 3.8.0)
13
+ rspec-expectations (~> 3.8.0)
14
+ rspec-mocks (~> 3.8.0)
15
+ rspec-core (3.8.0)
16
+ rspec-support (~> 3.8.0)
17
+ rspec-expectations (3.8.2)
18
+ diff-lcs (>= 1.2.0, < 2.0)
19
+ rspec-support (~> 3.8.0)
20
+ rspec-mocks (3.8.0)
21
+ diff-lcs (>= 1.2.0, < 2.0)
22
+ rspec-support (~> 3.8.0)
23
+ rspec-support (3.8.0)
24
+
25
+ PLATFORMS
26
+ ruby
27
+
28
+ DEPENDENCIES
29
+ bundler (~> 1.16)
30
+ rake (~> 10.0)
31
+ rspec (~> 3.0)
32
+ timestamp_super_functions!
33
+
34
+ BUNDLED WITH
35
+ 1.16.2
@@ -0,0 +1,51 @@
1
+ # we use timestamps instead of booleans throughout this project
2
+ # this module make timestamps behave like booleans anyway
3
+ module TimestampSuperFunctions
4
+ module TimestampModelConcern
5
+ extend ActiveSupport::Concern
6
+ included do
7
+ def self.add_timestamp_helper_functions(list)
8
+ list.uniq.collect(&:to_s).each{|method_name|
9
+
10
+ if method_name.ends_with?("_at")
11
+ # boolean setting timestamp as now, e.g contract_signed = true => contract_signed_at = Time.now
12
+ define_method "#{method_name[0...(method_name.length - 3)]}=" do |val|
13
+ if val == "true" || val == 1 || val == "1" || val == true
14
+ self.send("#{method_name}=", Time.now) if self.send(method_name).nil?
15
+ else
16
+ self.send("#{method_name}=", nil)
17
+ end
18
+ end
19
+
20
+ # boolean for presence, e.g contract_signed? => !contract_signed_at.nil?
21
+ define_method "#{method_name[0...(method_name.length - 3)]}?" do
22
+ !self.send(method_name).nil?
23
+ end
24
+
25
+ define_method "#{method_name[0...(method_name.length - 3)]}" do
26
+ !self.send(method_name).nil?
27
+ end
28
+
29
+ # boolean for presence, e.g not_contract_signed? => contract_signed_at.nil?
30
+ define_method "not_#{method_name[0...(method_name.length - 3)]}?" do
31
+ self.send(method_name).nil?
32
+ end
33
+
34
+ define_method "not_#{method_name[0...(method_name.length - 3)]}" do
35
+ self.send(method_name).nil?
36
+ end
37
+
38
+ #scopes e.g Contract.contract_signed => where("contract_signed_at is not null")
39
+ self.class.send(:define_method, "#{method_name[0...(method_name.length - 3)]}") do
40
+ where("#{self.table_name}.#{method_name} is not null")
41
+ end
42
+ self.class.send(:define_method, "not_#{method_name[0...(method_name.length - 3)]}") do
43
+ where("#{self.table_name}.#{method_name} is null")
44
+ end
45
+
46
+ end
47
+ }
48
+ end
49
+ end
50
+ end
51
+ end
@@ -1,3 +1,3 @@
1
1
  module TimestampSuperFunctions
2
- VERSION = "0.1.0"
2
+ VERSION = "0.1.0.2"
3
3
  end
@@ -30,7 +30,7 @@ Gem::Specification.new do |spec|
30
30
  end
31
31
  spec.bindir = "exe"
32
32
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
33
- spec.require_paths = ["lib", "app/models/concerns"]
33
+ spec.require_paths = ["lib", "app/models/concerns/timestamp_super_functions"]
34
34
 
35
35
  spec.add_development_dependency "bundler", "~> 1.16"
36
36
  spec.add_development_dependency "rake", "~> 10.0"
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: timestamp_super_functions
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.1.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Maxime Domain
@@ -64,9 +64,11 @@ files:
64
64
  - ".travis.yml"
65
65
  - CODE_OF_CONDUCT.md
66
66
  - Gemfile
67
+ - Gemfile.lock
67
68
  - LICENSE.txt
68
69
  - README.md
69
70
  - Rakefile
71
+ - app/models/concerns/timestamp_super_functions/timestamp_model_concern.rb
70
72
  - bin/console
71
73
  - bin/setup
72
74
  - lib/timestamp_super_functions.rb
@@ -80,7 +82,7 @@ post_install_message:
80
82
  rdoc_options: []
81
83
  require_paths:
82
84
  - lib
83
- - app/models/concerns
85
+ - app/models/concerns/timestamp_super_functions
84
86
  required_ruby_version: !ruby/object:Gem::Requirement
85
87
  requirements:
86
88
  - - ">="