age_jp 0.0.5 → 0.0.6
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 +4 -4
- data/.travis.yml +10 -0
- data/README.md +6 -4
- data/Rakefile +4 -0
- data/age_jp.gemspec +4 -4
- data/lib/age_jp/calculator.rb +14 -15
- data/lib/age_jp/version.rb +1 -1
- metadata +18 -18
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c6e5f82f1001e56b0520f64d3c9ccf71eb1f52d0
|
4
|
+
data.tar.gz: 85bb623b269d19d63e48852e3f2df65d38c04f54
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: bc08771533fb350e0e8b007fae3243ebf892dd358cbc85092ad4e369daa03f384d7aca3b3a64fa5d40f8971c8419f79b9a1b8c5c7906f49c6641ac31b0ab946b
|
7
|
+
data.tar.gz: 3c5f3c2d95fb7a547767db168b9f0e00c13676cacacff78c166dcdf814b3fab67ec19043b7a3dc069a6701b4eff1238a2df0588001c7dad451192743ef25ac3c
|
data/.travis.yml
ADDED
data/README.md
CHANGED
@@ -1,5 +1,7 @@
|
|
1
1
|
# AgeJp
|
2
2
|
|
3
|
+
[](https://travis-ci.org/ryoff/age_jp)
|
4
|
+
|
3
5
|
日本の法律に則った年齢計算です
|
4
6
|
[年齢計算ニ関スル法律 - Wikipedia](http://ja.wikipedia.org/wiki/%E5%B9%B4%E9%BD%A2%E8%A8%88%E7%AE%97%E3%83%8B%E9%96%A2%E3%82%B9%E3%83%AB%E6%B3%95%E5%BE%8B)
|
5
7
|
|
@@ -28,13 +30,13 @@ Timecop.freeze(Time.new(2014, 12, 31))
|
|
28
30
|
|
29
31
|
birthday = Date.new(2000, 1, 1)
|
30
32
|
birthday.age # 14 (通常の年齢)
|
31
|
-
birthday.age_at(Date.today) # same as birthday.
|
33
|
+
birthday.age_at(Date.today) # same as birthday.age
|
32
34
|
birthday.age_jp # 15 (日本の法律準拠)
|
33
|
-
birthday.age_jp_at(Date.today) # same as birthday.
|
35
|
+
birthday.age_jp_at(Date.today) # same as birthday.age_jp
|
34
36
|
birthday.east_asian_age_reckoning # 15 (数え年)
|
35
|
-
birthday.east_asian_age_reckoning_at(Date.today) # same as birthday.
|
37
|
+
birthday.east_asian_age_reckoning_at(Date.today) # same as birthday.east_asian_age_reckoning
|
36
38
|
birthday.insurance_age # 14 (保険年齢)
|
37
|
-
birthday.insurance_age_at(Date.today) # same as birthday.
|
39
|
+
birthday.insurance_age_at(Date.today) # same as birthday.insurance_age
|
38
40
|
birthday.to_years_old(17) # 2017/01/01. 17歳の誕生日を返却
|
39
41
|
birthday.to_years_old_jp(17) # 2016/12/31. 17歳の年齢加算日(日本の法律準拠)を返却
|
40
42
|
```
|
data/Rakefile
CHANGED
data/age_jp.gemspec
CHANGED
@@ -20,8 +20,8 @@ Gem::Specification.new do |spec|
|
|
20
20
|
|
21
21
|
spec.add_dependency "activesupport", '>= 3.2'
|
22
22
|
|
23
|
-
spec.add_development_dependency "bundler", "
|
24
|
-
spec.add_development_dependency "rake", "
|
25
|
-
spec.add_development_dependency "rspec"
|
26
|
-
spec.add_development_dependency "timecop"
|
23
|
+
spec.add_development_dependency "bundler", ">= 1.0"
|
24
|
+
spec.add_development_dependency "rake", ">= 10.0"
|
25
|
+
spec.add_development_dependency "rspec", '~> 3.0'
|
26
|
+
spec.add_development_dependency "timecop"
|
27
27
|
end
|
data/lib/age_jp/calculator.rb
CHANGED
@@ -1,36 +1,38 @@
|
|
1
1
|
module AgeJp
|
2
2
|
class Calculator
|
3
|
+
attr_reader :birthday
|
4
|
+
|
3
5
|
def initialize(birthday)
|
4
6
|
@birthday = birthday
|
5
7
|
end
|
6
8
|
|
7
|
-
def age_at(date =
|
9
|
+
def age_at(date = Date.current)
|
8
10
|
return unless valid_birthday? && valid_date?(date)
|
9
11
|
|
10
12
|
calculate_age(date)
|
11
13
|
end
|
12
14
|
|
13
|
-
def age_jp_at(date =
|
15
|
+
def age_jp_at(date = Date.current)
|
14
16
|
return unless valid_birthday? && valid_date?(date)
|
15
17
|
|
16
18
|
calculate_age_jp(date)
|
17
19
|
end
|
18
20
|
|
19
|
-
def east_asian_age_reckoning_at(date =
|
21
|
+
def east_asian_age_reckoning_at(date = Date.current)
|
20
22
|
return unless valid_birthday? && valid_date?(date)
|
21
23
|
|
22
24
|
age = calculate_age(date)
|
23
25
|
until_birthday_this_year?(date) ? age + 2 : age + 1
|
24
26
|
end
|
25
27
|
|
26
|
-
def insurance_age_at(date =
|
28
|
+
def insurance_age_at(date = Date.current)
|
27
29
|
return unless valid_birthday? && valid_date?(date)
|
28
30
|
|
29
31
|
# date時点での満年齢を取得
|
30
32
|
age = calculate_age(date)
|
31
33
|
|
32
34
|
# その年齢に到達した誕生日を取得
|
33
|
-
last_birthday =
|
35
|
+
last_birthday = birthday.next_year(age)
|
34
36
|
|
35
37
|
# 前回の誕生日から計算基準日までの月差分を取得
|
36
38
|
month_diff = (date.year * 12 + date.month) - (last_birthday.year * 12 + last_birthday.month)
|
@@ -58,38 +60,35 @@ module AgeJp
|
|
58
60
|
|
59
61
|
private
|
60
62
|
|
61
|
-
def today
|
62
|
-
Date.today
|
63
|
-
end
|
64
|
-
|
65
63
|
def calculate_age_jp(date)
|
66
64
|
# 誕生日が閏日の場合は、日本の民法ではdateが閏年であろうとなかろうと、2/28に年齢加算される
|
67
65
|
# つまり、誕生日が閏日 かつ dateが2/27の場合は、閏年であろうと無かろうと、年齢加算しない
|
68
|
-
return calculate_age(date) if leap_date?(
|
66
|
+
return calculate_age(date) if leap_date?(birthday) && february_twenty_seven?(date)
|
69
67
|
|
70
68
|
(calculate_age(date) - calculate_age(date.tomorrow)).zero? ? calculate_age(date) : calculate_age(date.tomorrow)
|
71
69
|
end
|
72
70
|
|
73
71
|
def calculate_age(date)
|
74
72
|
date_ymd_to_i = date.strftime('%Y%m%d').to_i
|
75
|
-
birthday_ymd_to_i =
|
73
|
+
birthday_ymd_to_i = birthday.strftime('%Y%m%d').to_i
|
76
74
|
|
77
75
|
# 誕生日が閏日 かつ dateが閏年ではない場合
|
78
|
-
birthday_ymd_to_i -= 1 if leap_date?(
|
76
|
+
birthday_ymd_to_i -= 1 if leap_date?(birthday) && !date.leap?
|
79
77
|
|
80
78
|
(date_ymd_to_i - birthday_ymd_to_i) / 10_000
|
81
79
|
end
|
82
80
|
|
83
81
|
def until_birthday_this_year?(date)
|
84
|
-
date.strftime('%m%d').to_i <
|
82
|
+
date.strftime('%m%d').to_i < birthday.strftime('%m%d').to_i
|
85
83
|
end
|
86
84
|
|
87
85
|
def valid_birthday?
|
88
|
-
valid_date?(
|
86
|
+
valid_date?(birthday)
|
89
87
|
end
|
90
88
|
|
91
89
|
def valid_date?(date)
|
92
|
-
|
90
|
+
raise ArgumentError, 'invalid date' unless date && date.is_a?(Date)
|
91
|
+
|
93
92
|
true
|
94
93
|
end
|
95
94
|
|
data/lib/age_jp/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: age_jp
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.6
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- ryoff
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2018-02-07 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activesupport
|
@@ -28,58 +28,58 @@ dependencies:
|
|
28
28
|
name: bundler
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
|
-
- - "
|
31
|
+
- - ">="
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version: '1.
|
33
|
+
version: '1.0'
|
34
34
|
type: :development
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
|
-
- - "
|
38
|
+
- - ">="
|
39
39
|
- !ruby/object:Gem::Version
|
40
|
-
version: '1.
|
40
|
+
version: '1.0'
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: rake
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
44
44
|
requirements:
|
45
|
-
- - "
|
45
|
+
- - ">="
|
46
46
|
- !ruby/object:Gem::Version
|
47
47
|
version: '10.0'
|
48
48
|
type: :development
|
49
49
|
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
|
-
- - "
|
52
|
+
- - ">="
|
53
53
|
- !ruby/object:Gem::Version
|
54
54
|
version: '10.0'
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
56
|
name: rspec
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
58
58
|
requirements:
|
59
|
-
- - "
|
59
|
+
- - "~>"
|
60
60
|
- !ruby/object:Gem::Version
|
61
|
-
version: '0'
|
61
|
+
version: '3.0'
|
62
62
|
type: :development
|
63
63
|
prerelease: false
|
64
64
|
version_requirements: !ruby/object:Gem::Requirement
|
65
65
|
requirements:
|
66
|
-
- - "
|
66
|
+
- - "~>"
|
67
67
|
- !ruby/object:Gem::Version
|
68
|
-
version: '0'
|
68
|
+
version: '3.0'
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
70
|
name: timecop
|
71
71
|
requirement: !ruby/object:Gem::Requirement
|
72
72
|
requirements:
|
73
|
-
- - "
|
73
|
+
- - ">="
|
74
74
|
- !ruby/object:Gem::Version
|
75
|
-
version: '0
|
75
|
+
version: '0'
|
76
76
|
type: :development
|
77
77
|
prerelease: false
|
78
78
|
version_requirements: !ruby/object:Gem::Requirement
|
79
79
|
requirements:
|
80
|
-
- - "
|
80
|
+
- - ">="
|
81
81
|
- !ruby/object:Gem::Version
|
82
|
-
version: '0
|
82
|
+
version: '0'
|
83
83
|
description: A simpel age calculator for a law of Japan.
|
84
84
|
email:
|
85
85
|
- ryoffes@gmail.com
|
@@ -88,6 +88,7 @@ extensions: []
|
|
88
88
|
extra_rdoc_files: []
|
89
89
|
files:
|
90
90
|
- ".gitignore"
|
91
|
+
- ".travis.yml"
|
91
92
|
- Gemfile
|
92
93
|
- LICENSE.txt
|
93
94
|
- README.md
|
@@ -119,11 +120,10 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
119
120
|
version: '0'
|
120
121
|
requirements: []
|
121
122
|
rubyforge_project:
|
122
|
-
rubygems_version: 2.
|
123
|
+
rubygems_version: 2.5.1
|
123
124
|
signing_key:
|
124
125
|
specification_version: 4
|
125
126
|
summary: A simpel age calculator for a law of Japan.
|
126
127
|
test_files:
|
127
128
|
- spec/age_jp_spec.rb
|
128
129
|
- spec/spec_helper.rb
|
129
|
-
has_rdoc:
|