age_jp 0.0.5 → 0.0.6

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