era_ja 0.0.1 → 0.1.0

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.
data/Guardfile CHANGED
@@ -5,5 +5,6 @@
5
5
  guard 'rspec', :version => 2, :cli => '--color', :all_after_pass => false do
6
6
  watch(%r{^spec/.+_spec\.rb$})
7
7
  watch(%r{^lib/era_ja/(.+)\.rb$}) { |m| "spec/#{m[1]}_spec.rb" }
8
+ watch('lib/era_ja.rb') { "spec" }
8
9
  watch('spec/spec_helper.rb') { "spec" }
9
10
  end
data/README.ja.md CHANGED
@@ -18,16 +18,30 @@
18
18
 
19
19
  ## Usage
20
20
 
21
+ ### フォーマット文字列
22
+
23
+ 引数としてstftimeのフォーマット文字列を使用出来ます。
24
+
25
+ EraJa#to_eraメソッドでの追加のフォーマット文字列は以下の通りです。
26
+
27
+ * %o: 元号(アルファベット)
28
+ * %O: 元号(漢字)
29
+ * %E: 元号の年
30
+
21
31
  ### Timeインスタンスを和暦に変換します。
22
32
 
23
33
  ```ruby
34
+ require 'era_ja/time'
24
35
  Time.mktime(2012,4,29).to_era # => "H24.4.29"
36
+ Time.mktime(2012,4,29).to_era("%O%E年%m月%d日") # => "平成24年4月29日"
25
37
  ```
26
38
 
27
39
  ### Dateインタンスを和暦に変換します。
28
40
 
29
41
  ```ruby
42
+ require 'era_ja/date'
30
43
  Date.new(2012,4,29).to_era # => "H24.4.29"
44
+ Date.new(2012,4,29).to_era("%O%E年%m月%d日") # => "平成24年4月29日"
31
45
  ```
32
46
 
33
47
  ## Support
data/README.md CHANGED
@@ -18,16 +18,30 @@ Or install it yourself as:
18
18
 
19
19
  ## Usage
20
20
 
21
+ ### format string
22
+
23
+ Strftime format string can be used as an argument.
24
+
25
+ EraJa#to_era of extra format string is follow.
26
+
27
+ * %o: era(alphabet)
28
+ * %O: era(kanzi)
29
+ * %E: era year
30
+
21
31
  ### Time instance to japanese era
22
32
 
23
33
  ```ruby
34
+ require 'era_ja/time'
24
35
  Time.mktime(2012,4,29).to_era # => "H24.4.29"
36
+ Time.mktime(2012,4,29).to_era("%O%E年%m月%d日") # => "平成24年4月29日"
25
37
  ```
26
38
 
27
39
  ### Date instance to japanese era
28
40
 
29
41
  ```ruby
42
+ require 'era_ja/date'
30
43
  Date.new(2012,4,29).to_era # => "H24.4.29"
44
+ Date.new(2012,4,29).to_era("%O%E年%m月%d日") # => "平成24年4月29日"
31
45
  ```
32
46
 
33
47
  ## Support
data/lib/era_ja.rb CHANGED
@@ -3,17 +3,43 @@ require "era_ja/version"
3
3
  require 'date'
4
4
 
5
5
  module EraJa
6
- def to_era
6
+ ERA = [["M", "明治"], ["T", "大正"], ["S", "昭和"], ["H", "平成"]]
7
+
8
+ # Convert to Japanese era.
9
+ # @param [String] format_string
10
+ # Time#strftime format string can be used
11
+ # #### extra format string
12
+ # * %o - era(alphabet)
13
+ # * %O - era(kanzi)
14
+ # * %E - era year
15
+ # @return [String]
16
+ def to_era(format = "%o%E.%m.%d")
17
+ format.sub!(/%o/i) { |m| m + ' ' }
18
+ @era_format = format[/%o/i]
7
19
  if self.to_time < ::Time.mktime(1868,9,8)
8
20
  raise "#to_era is expeted later in 1968,9,8"
9
21
  elsif self.to_time < ::Time.mktime(1912,7,30)
10
- "M#{year - 1867}.#{month}.#{day}"
22
+ strftime(format).sub(/%E/, format_year(year - 1867)).sub(/%o /i) { format_era('M') }
11
23
  elsif self.to_time < ::Time.mktime(1926,12,25)
12
- "T#{year - 1911}.#{month}.#{day}"
24
+ strftime(format).sub(/%E/, format_year(year - 1911)).sub(/%o /i) { format_era('T') }
13
25
  elsif self.to_time < ::Time.mktime(1989,1,8)
14
- "S#{year - 1925}.#{month}.#{day}"
26
+ strftime(format).sub(/%E/, format_year(year - 1925)).sub(/%o /i) { format_era('S') }
15
27
  else
16
- "H#{year - 1988}.#{month}.#{day}"
28
+ strftime(format).sub(/%E/, format_year(year - 1988)).sub(/%o /i) { format_era('H') }
29
+ end
30
+ end
31
+
32
+ private
33
+ def format_era(string)
34
+ if @era_format == "%o"
35
+ return "#{ERA.detect{ |i| i[0] == string}[0]}"
36
+ elsif @era_format == "%O"
37
+ return "#{ERA.detect{ |i| i[0] == string}[1]}"
17
38
  end
18
39
  end
40
+
41
+ def format_year(year)
42
+ sprintf("%02d", year)
43
+ end
44
+
19
45
  end
@@ -1,3 +1,3 @@
1
1
  module EraJa
2
- VERSION = "0.0.1"
2
+ VERSION = "0.1.0"
3
3
  end
data/spec/date_spec.rb CHANGED
@@ -6,44 +6,44 @@ describe Date do
6
6
  describe "#to_era" do
7
7
 
8
8
  context "date is 2012,4,29" do
9
- subject { Date.new(2012,4,29).to_era }
10
- it { should eq "H24.4.29" }
9
+ subject { Date.new(2012,4,29) }
10
+ include_examples "2012,4,29"
11
11
  end
12
12
 
13
13
  context "date is 1989,1,8" do
14
- subject { Date.new(1989,1,8).to_era }
14
+ subject { Date.new(1989,1,8) }
15
15
 
16
- it { should eq "H1.1.8" }
16
+ include_examples "1989,1,8"
17
17
  end
18
18
 
19
19
  context "date is 1989,1,7" do
20
- subject { Date.new(1989,1,7).to_era }
21
- it { should eq "S64.1.7" }
20
+ subject { Date.new(1989,1,7) }
21
+ include_examples "1989,1,7"
22
22
  end
23
23
 
24
24
  context "date is 1926,12,25" do
25
- subject { Date.new(1926,12,25).to_era }
26
- it { should eq "S1.12.25" }
25
+ subject { Date.new(1926,12,25) }
26
+ include_examples "1926,12,25"
27
27
  end
28
28
 
29
29
  context "date is 1926,12,24" do
30
- subject { Date.new(1926,12,24).to_era }
31
- it { should eq "T15.12.24" }
30
+ subject { Date.new(1926,12,24) }
31
+ include_examples "1926,12,24"
32
32
  end
33
33
 
34
34
  context "date is 1912,7,30" do
35
- subject { Date.new(1912,7,30).to_era }
36
- it { should eq "T1.7.30" }
35
+ subject { Date.new(1912,7,30) }
36
+ include_examples "1912,7,30"
37
37
  end
38
38
 
39
39
  context "date is 1912,7,29" do
40
- subject { Date.new(1912,7,29).to_era }
41
- it { should eq "M45.7.29" }
40
+ subject { Date.new(1912,7,29) }
41
+ include_examples "1912,7,29"
42
42
  end
43
43
 
44
44
  context "date is 1868,9,8" do
45
- subject { Date.new(1868,9,8).to_era }
46
- it { should eq "M1.9.8" }
45
+ subject { Date.new(1868,9,8) }
46
+ include_examples "1868,9,8"
47
47
  end
48
48
 
49
49
  context "date is 1868,9,7" do
data/spec/spec_helper.rb CHANGED
@@ -1,2 +1,100 @@
1
1
  # -*- coding: utf-8 -*-
2
2
  require 'rspec'
3
+
4
+ shared_examples "should equal 'H24.04.29'" do
5
+ it { subject.to_era.should eq "H24.04.29" }
6
+
7
+ context "with '%o%E.%m.%d'" do
8
+ it { subject.to_era("%o%E.%m.%d").should eq "H24.04.29" }
9
+ end
10
+ end
11
+
12
+ shared_examples "should equal '平成24年04月29日'" do
13
+ context "with '%O%E年%m月%d日'" do
14
+ it { subject.to_era("%O%E年%m月%d日").should eq "平成24年04月29日" }
15
+ end
16
+ end
17
+
18
+ shared_examples "should equal '24.04.29'" do
19
+ context "with '%E.%m.%d'" do
20
+ it { subject.to_era("%E.%m.%d").should eq "24.04.29" }
21
+ end
22
+ end
23
+
24
+ shared_examples "should equal 'H01.01.08'" do
25
+ it { subject.to_era.should eq "H01.01.08" }
26
+ end
27
+
28
+ shared_examples "should equal 'S64.01.07'" do
29
+ it { subject.to_era.should eq "S64.01.07" }
30
+ end
31
+
32
+ shared_examples "should equal '昭和64.01.07'" do
33
+ it { subject.to_era("%O%E.%m.%d").should eq "昭和64.01.07" }
34
+ end
35
+
36
+ shared_examples "should equal 'S01.12.25'" do
37
+ it { subject.to_era.should eq "S01.12.25" }
38
+ end
39
+
40
+ shared_examples "should equal 'T15.12.24'" do
41
+ it { subject.to_era.should eq "T15.12.24" }
42
+ end
43
+
44
+ shared_examples "should equal 'T01.07.30'" do
45
+ it { subject.to_era.should eq "T01.07.30" }
46
+ end
47
+
48
+ shared_examples "should equal '大正01.07.30'" do
49
+ it { subject.to_era("%O%E.%m.%d").should eq "大正01.07.30" }
50
+ end
51
+
52
+ shared_examples "should equal 'M45.07.29'" do
53
+ it { subject.to_era.should eq "M45.07.29" }
54
+ end
55
+
56
+ shared_examples "should equal '明治45.07.29'" do
57
+ it { subject.to_era("%O%E.%m.%d").should eq "明治45.07.29" }
58
+ end
59
+
60
+ shared_examples "should equal 'M01.09.08'" do
61
+ it { subject.to_era.should eq "M01.09.08" }
62
+ end
63
+
64
+
65
+ shared_examples "2012,4,29" do
66
+ include_examples "should equal 'H24.04.29'"
67
+ include_examples "should equal '平成24年04月29日'"
68
+ include_examples "should equal '24.04.29'"
69
+ end
70
+
71
+ shared_examples "1989,1,8" do
72
+ include_examples "should equal 'H01.01.08'"
73
+ end
74
+
75
+ shared_examples "1989,1,7" do
76
+ include_examples "should equal 'S64.01.07'"
77
+ include_examples "should equal '昭和64.01.07'"
78
+ end
79
+
80
+ shared_examples "1926,12,25" do
81
+ include_examples "should equal 'S01.12.25'"
82
+ end
83
+
84
+ shared_examples "1926,12,24" do
85
+ include_examples "should equal 'T15.12.24'"
86
+ end
87
+
88
+ shared_examples "1912,7,30" do
89
+ include_examples "should equal 'T01.07.30'"
90
+ include_examples "should equal '大正01.07.30'"
91
+ end
92
+
93
+ shared_examples "1912,7,29" do
94
+ include_examples "should equal 'M45.07.29'"
95
+ include_examples "should equal '明治45.07.29'"
96
+ end
97
+
98
+ shared_examples "1868,9,8" do
99
+ include_examples "should equal 'M01.09.08'"
100
+ end
data/spec/time_spec.rb CHANGED
@@ -6,44 +6,44 @@ describe Time do
6
6
  describe "#to_era" do
7
7
 
8
8
  context "time is 2012,4,29" do
9
- subject { Time.mktime(2012,4,29).to_era }
10
- it { should eq "H24.4.29" }
9
+ subject { Time.mktime(2012,4,29) }
10
+ include_examples "2012,4,29"
11
11
  end
12
12
 
13
13
  context "time is 1989,1,8" do
14
- subject { Time.mktime(1989,1,8).to_era }
14
+ subject { Time.mktime(1989,1,8) }
15
15
 
16
- it { should eq "H1.1.8" }
16
+ include_examples "1989,1,8"
17
17
  end
18
18
 
19
19
  context "time is 1989,1,7" do
20
- subject { Time.mktime(1989,1,7).to_era }
21
- it { should eq "S64.1.7" }
20
+ subject { Time.mktime(1989,1,7) }
21
+ include_examples "1989,1,7"
22
22
  end
23
23
 
24
24
  context "time is 1926,12,25" do
25
- subject { Time.mktime(1926,12,25).to_era }
26
- it { should eq "S1.12.25" }
25
+ subject { Time.mktime(1926,12,25) }
26
+ include_examples "1926,12,25"
27
27
  end
28
28
 
29
29
  context "time is 1926,12,24" do
30
- subject { Time.mktime(1926,12,24).to_era }
31
- it { should eq "T15.12.24" }
30
+ subject { Time.mktime(1926,12,24) }
31
+ include_examples "1926,12,24"
32
32
  end
33
33
 
34
34
  context "time is 1912,7,30" do
35
- subject { Time.mktime(1912,7,30).to_era }
36
- it { should eq "T1.7.30" }
35
+ subject { Time.mktime(1912,7,30) }
36
+ include_examples "1912,7,30"
37
37
  end
38
38
 
39
39
  context "time is 1912,7,29" do
40
- subject { Time.mktime(1912,7,29).to_era }
41
- it { should eq "M45.7.29" }
40
+ subject { Time.mktime(1912,7,29) }
41
+ include_examples "1912,7,29"
42
42
  end
43
43
 
44
44
  context "time is 1868,9,8" do
45
- subject { Time.mktime(1868,9,8).to_era }
46
- it { should eq "M1.9.8" }
45
+ subject { Time.mktime(1868,9,8) }
46
+ include_examples "1868,9,8"
47
47
  end
48
48
 
49
49
  context "time is 1868,9,7" do
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: era_ja
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.1.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,11 +9,11 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-05-04 00:00:00.000000000 Z
12
+ date: 2012-06-09 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rake
16
- requirement: &70163837341380 !ruby/object:Gem::Requirement
16
+ requirement: !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ! '>='
@@ -21,10 +21,15 @@ dependencies:
21
21
  version: 0.9.2
22
22
  type: :development
23
23
  prerelease: false
24
- version_requirements: *70163837341380
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ! '>='
28
+ - !ruby/object:Gem::Version
29
+ version: 0.9.2
25
30
  - !ruby/object:Gem::Dependency
26
31
  name: rspec
27
- requirement: &70163837340780 !ruby/object:Gem::Requirement
32
+ requirement: !ruby/object:Gem::Requirement
28
33
  none: false
29
34
  requirements:
30
35
  - - ! '>='
@@ -32,10 +37,15 @@ dependencies:
32
37
  version: 2.9.0
33
38
  type: :development
34
39
  prerelease: false
35
- version_requirements: *70163837340780
40
+ version_requirements: !ruby/object:Gem::Requirement
41
+ none: false
42
+ requirements:
43
+ - - ! '>='
44
+ - !ruby/object:Gem::Version
45
+ version: 2.9.0
36
46
  - !ruby/object:Gem::Dependency
37
47
  name: growl
38
- requirement: &70163837340180 !ruby/object:Gem::Requirement
48
+ requirement: !ruby/object:Gem::Requirement
39
49
  none: false
40
50
  requirements:
41
51
  - - ! '>='
@@ -43,10 +53,15 @@ dependencies:
43
53
  version: 1.0.3
44
54
  type: :development
45
55
  prerelease: false
46
- version_requirements: *70163837340180
56
+ version_requirements: !ruby/object:Gem::Requirement
57
+ none: false
58
+ requirements:
59
+ - - ! '>='
60
+ - !ruby/object:Gem::Version
61
+ version: 1.0.3
47
62
  - !ruby/object:Gem::Dependency
48
63
  name: guard-rspec
49
- requirement: &70163837339620 !ruby/object:Gem::Requirement
64
+ requirement: !ruby/object:Gem::Requirement
50
65
  none: false
51
66
  requirements:
52
67
  - - ! '>='
@@ -54,7 +69,12 @@ dependencies:
54
69
  version: 0.7.0
55
70
  type: :development
56
71
  prerelease: false
57
- version_requirements: *70163837339620
72
+ version_requirements: !ruby/object:Gem::Requirement
73
+ none: false
74
+ requirements:
75
+ - - ! '>='
76
+ - !ruby/object:Gem::Version
77
+ version: 0.7.0
58
78
  description: Convert to Japanese era.
59
79
  email:
60
80
  - tomiacannondale@gmail.com
@@ -93,7 +113,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
93
113
  version: '0'
94
114
  segments:
95
115
  - 0
96
- hash: -2444577613430226578
116
+ hash: -4408163875494566668
97
117
  required_rubygems_version: !ruby/object:Gem::Requirement
98
118
  none: false
99
119
  requirements:
@@ -102,10 +122,10 @@ required_rubygems_version: !ruby/object:Gem::Requirement
102
122
  version: '0'
103
123
  segments:
104
124
  - 0
105
- hash: -2444577613430226578
125
+ hash: -4408163875494566668
106
126
  requirements: []
107
127
  rubyforge_project:
108
- rubygems_version: 1.8.17
128
+ rubygems_version: 1.8.24
109
129
  signing_key:
110
130
  specification_version: 3
111
131
  summary: Convert Date or Time instance to String of Japanese era.