From 063a69b1b3e585b91ed0c6112d0b8716e36dd9e0 Mon Sep 17 00:00:00 2001 From: Kohei Hasegawa Date: Sun, 21 Oct 2012 17:35:38 +0900 Subject: [PATCH 1/2] Implemented --- kohei-francesco/japanese_calendar_spec.rb | 61 +++++++++++++++++++++++ 1 file changed, 61 insertions(+) create mode 100644 kohei-francesco/japanese_calendar_spec.rb diff --git a/kohei-francesco/japanese_calendar_spec.rb b/kohei-francesco/japanese_calendar_spec.rb new file mode 100644 index 0000000..ce2fc82 --- /dev/null +++ b/kohei-francesco/japanese_calendar_spec.rb @@ -0,0 +1,61 @@ +# coding: utf-8 + +require 'date' + +class Calendar + @@nengo = [ + { simple: "meiji", name: "明治", start: Date.new(1868, 1, 1) }, + { simple: "taisyo", name: "大正", start: Date.new(1912, 9, 8) }, + { simple: "showa", name: "昭和", start: Date.new(1926, 12, 25) }, + { simple: "heisei", name: "平成", start: Date.new(1989, 1, 8) } + ] + + END_OF_THE_WORLD = Date.new(2200,1,1) + + def self.calc_range(era, idx) + last = @@nengo[idx+1] + last = last.nil? ? END_OF_THE_WORLD : last[:start] + era[:start]...last + end + + @@nengo.each_with_index do |era, idx| + era[:range] = Calendar.calc_range(era, idx) + end + + NENGO = @@nengo + + def initialize(greg_date) + @greg_date = Date.parse(greg_date) + end + + def convert + nengo = get_nengo @greg_date + format @greg_date, nengo + end + + def get_nengo(date) + nengo = @@nengo.find{ |era| era[:range].include? date } + year = date.year - nengo[:start].year + 1 + "#{nengo[:name]}#{year}" + end + + def format(date, nengo) + "#{nengo}年#{date.month}月#{date.day}日" + end +end + +describe "english to japanese calendar" do + it "calculates date ranges" do + Calendar::NENGO.last[:range].should == (Date.new(1989, 1, 8)...Calendar::END_OF_THE_WORLD) + end + + it "converts date to japanese" do + date = Calendar.new("2012-10-20").convert + date.should == "平成24年10月20日" + end + + it "converts date to japanese" do + date = Calendar.new("1988-01-01").convert + date.should == "昭和63年1月1日" + end +end From 87198049a7dfcc5aa4b72ae8e1877a481edaf3d4 Mon Sep 17 00:00:00 2001 From: Kohei Hasegawa Date: Sun, 21 Oct 2012 17:38:25 +0900 Subject: [PATCH 2/2] =?UTF-8?q?Add=20=E6=98=8E=E6=B2=BB=20spec?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- kohei-francesco/japanese_calendar_spec.rb | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/kohei-francesco/japanese_calendar_spec.rb b/kohei-francesco/japanese_calendar_spec.rb index ce2fc82..303ec64 100644 --- a/kohei-francesco/japanese_calendar_spec.rb +++ b/kohei-francesco/japanese_calendar_spec.rb @@ -58,4 +58,9 @@ def format(date, nengo) date = Calendar.new("1988-01-01").convert date.should == "昭和63年1月1日" end + + it "converts date to japanese" do + date = Calendar.new("1868-12-01").convert + date.should == "明治1年12月1日" + end end