power-age 1.0.0 → 1.0.1

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.
Files changed (5) hide show
  1. checksums.yaml +5 -5
  2. data/README.md +21 -1
  3. data/age.rb +6 -0
  4. data/has_age.rb +16 -0
  5. metadata +5 -9
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: 8514b970f16a52230de0515a0c029315d4100951
4
- data.tar.gz: '09e7ef32716c0c2638db590fba77e37dc6af4f63'
2
+ SHA256:
3
+ metadata.gz: 2ee7d904a4205ef7302f3e356a451f825073999447a064717a7fa998dee8caa6
4
+ data.tar.gz: dbf75243fccb8f63aa4841663a0cde632339f486598b094455b9bbcb9a897137
5
5
  SHA512:
6
- metadata.gz: 85c8805ebd44294f14ec76a59556145fe2a45eb3b903afbac5f88a61e75ea62bbe53432e7482c9d946f9f73da5a9f4641d8d5f2cd5b363231eaa6f85088e329f
7
- data.tar.gz: 4dc3f7cbb5dc2a99b72082fe4aa48ef05b9feaa27ab58c54681aebc741e05a09ec136930807e3677de3d854b02eb9d7ad91e1fc659ffc1eba175080c9deffeeb
6
+ metadata.gz: 29287d181eecc72c4a6e23f511da6e709274b3a4ec0304648f506ae9767590261b86acbcd7a45d3b9bfa89e88fa437eecfe6a7380633abd1650b1613e2814723
7
+ data.tar.gz: 45e51a03d290fcc9a1547a9cfe66a5adbccc0893214e2ba265dd7faaa3859be68ca7305868ff8f76814522c883dec3f70ce78c730c75b37d14e87f2dd19a73dc
data/README.md CHANGED
@@ -18,7 +18,10 @@ Or install it yourself as:
18
18
 
19
19
  ## Usage
20
20
 
21
- ### `Age#new(timestamp)`
21
+ ### `Age::now(timestamp)`
22
+ shortcut for `Age.new(timestamp).now`
23
+
24
+ ### `Age::new(timestamp)`
22
25
  `Age#new` accepts a Time, Date or DateTime object as argument.
23
26
 
24
27
  ### `Age#now`
@@ -38,3 +41,20 @@ user = User.new(Time.new(1970, 6, 21))
38
41
 
39
42
  Age.new(user.dob).at event.start_date
40
43
  ```
44
+
45
+ ### ActiveRecord/ActiveModel
46
+
47
+ ```ruby
48
+ class User < ApplicationRecord
49
+ has_person_name
50
+ has_age
51
+ end
52
+
53
+ class Dog < ApplicationRecord
54
+ has_age column: :pet_birth_date
55
+ end
56
+
57
+ user = User.new(dob: Date.new(2000, 1, 1))
58
+ user.age
59
+ user.age(at: Time.now + 1.day)
60
+ ```
data/age.rb CHANGED
@@ -1,4 +1,8 @@
1
1
  class Age
2
+ def self.now(dob)
3
+ new(dob).now
4
+ end
5
+
2
6
  def initialize(dob)
3
7
  @dob = dob
4
8
  end
@@ -17,3 +21,5 @@ class Age
17
21
  date.strftime('%Y%m%d').to_i
18
22
  end
19
23
  end
24
+
25
+ require_relative "has_age" if defined? ActiveSupport
data/has_age.rb ADDED
@@ -0,0 +1,16 @@
1
+ module HasAge
2
+ def has_age(column: :dob)
3
+ define_method(:age) do |at: Time.current|
4
+ Age.new(public_send(column)).at(at)
5
+ end
6
+ end
7
+ end
8
+
9
+ ActiveSupport.on_load(:active_model) do
10
+ extend HasAge
11
+ end
12
+
13
+
14
+ ActiveSupport.on_load(:active_record) do
15
+ extend HasAge
16
+ end
metadata CHANGED
@@ -1,16 +1,15 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: power-age
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0
4
+ version: 1.0.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Kevin Melchert
8
- autorequire:
9
8
  bindir: bin
10
9
  cert_chain: []
11
- date: 2017-12-10 00:00:00.000000000 Z
10
+ date: 2025-03-24 00:00:00.000000000 Z
12
11
  dependencies: []
13
- description: A handy little age calculation class
12
+ description: A handy little age calculation class.
14
13
  email: kevin.melchert@gmail.com
15
14
  executables: []
16
15
  extensions: []
@@ -18,10 +17,9 @@ extra_rdoc_files: []
18
17
  files:
19
18
  - README.md
20
19
  - age.rb
21
- homepage:
20
+ - has_age.rb
22
21
  licenses: []
23
22
  metadata: {}
24
- post_install_message:
25
23
  rdoc_options: []
26
24
  require_paths:
27
25
  - "."
@@ -36,9 +34,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
36
34
  - !ruby/object:Gem::Version
37
35
  version: '0'
38
36
  requirements: []
39
- rubyforge_project:
40
- rubygems_version: 2.6.11
41
- signing_key:
37
+ rubygems_version: 3.6.6
42
38
  specification_version: 4
43
39
  summary: Age Calculator
44
40
  test_files: []