timestamp_super_functions 0.1.0 → 0.1.0.2

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: 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
  - - ">="