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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 6272b2d23018dac1ebbc09e95fba7451b5252577
4
- data.tar.gz: 0d3539915128036711c665758edff451347cebcb
3
+ metadata.gz: c6e5f82f1001e56b0520f64d3c9ccf71eb1f52d0
4
+ data.tar.gz: 85bb623b269d19d63e48852e3f2df65d38c04f54
5
5
  SHA512:
6
- metadata.gz: 5abce402708d389e45665bccf2bb9399d64bf8ea659fc75a22378d0ad4f499ee2940c22d7b9a0ce4ca8e362800c3bb676d1fd7076066ce4ee9c378d0f2124d7f
7
- data.tar.gz: 546cf36d8c61e9a0133f117fbe81fb394a4a2419c1bd9d71ee416d1556d93930be2c54b7e663bc0b40a691609243eee7c8d14fc92adfbe40ecf2f323f8cc97be
6
+ metadata.gz: bc08771533fb350e0e8b007fae3243ebf892dd358cbc85092ad4e369daa03f384d7aca3b3a64fa5d40f8971c8419f79b9a1b8c5c7906f49c6641ac31b0ab946b
7
+ data.tar.gz: 3c5f3c2d95fb7a547767db168b9f0e00c13676cacacff78c166dcdf814b3fab67ec19043b7a3dc069a6701b4eff1238a2df0588001c7dad451192743ef25ac3c
data/.travis.yml ADDED
@@ -0,0 +1,10 @@
1
+ language: ruby
2
+ rvm:
3
+ - 2.2.9
4
+ - 2.3.5
5
+ - 2.4.3
6
+ - 2.5.0
7
+ before_install:
8
+ - gem update --system
9
+ - gem install bundler -v 1.16.1
10
+ cache: bundler
data/README.md CHANGED
@@ -1,5 +1,7 @@
1
1
  # AgeJp
2
2
 
3
+ [![Build Status](https://travis-ci.org/ryoff/age_jp.svg?branch=master)](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.age_at
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.age_jp_at
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.east_asian_age_reckoning_at
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.insurance_age_at
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
@@ -1,2 +1,6 @@
1
1
  require "bundler/gem_tasks"
2
+ require "rspec/core/rake_task"
2
3
 
4
+ RSpec::Core::RakeTask.new(:spec)
5
+
6
+ task :default => :spec
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", "~> 1.7"
24
- spec.add_development_dependency "rake", "~> 10.0"
25
- spec.add_development_dependency "rspec"
26
- spec.add_development_dependency "timecop", '~> 0.7'
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
@@ -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 = today)
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 = today)
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 = today)
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 = today)
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 = @birthday.next_year(age)
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?(@birthday) && february_twenty_seven?(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 = @birthday.strftime('%Y%m%d').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?(@birthday) && !date.leap?
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 < @birthday.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?(@birthday)
86
+ valid_date?(birthday)
89
87
  end
90
88
 
91
89
  def valid_date?(date)
92
- fail ArgumentError, 'invalid date' unless date && date.is_a?(Date)
90
+ raise ArgumentError, 'invalid date' unless date && date.is_a?(Date)
91
+
93
92
  true
94
93
  end
95
94
 
@@ -1,3 +1,3 @@
1
1
  module AgeJp
2
- VERSION = "0.0.5"
2
+ VERSION = "0.0.6"
3
3
  end
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.5
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: 2015-08-07 00:00:00.000000000 Z
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.7'
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.7'
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.7'
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.7'
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.2.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: