wareki 0.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/.gitignore +15 -0
- data/.rspec +2 -0
- data/LICENSE +24 -0
- data/README.rdoc +103 -0
- data/Rakefile +6 -0
- data/lib/wareki/calendar_def.rb +1433 -0
- data/lib/wareki/common.rb +41 -0
- data/lib/wareki/core_ext.rb +33 -0
- data/lib/wareki/date.rb +206 -0
- data/lib/wareki/era_def.rb +502 -0
- data/lib/wareki/utils.rb +173 -0
- data/lib/wareki/version.rb +3 -0
- data/lib/wareki.rb +2 -0
- data/wareki.gemspec +25 -0
- metadata +101 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 18d3594a1f100547ec183c81a7bd4e4d21ab50ac
|
4
|
+
data.tar.gz: 08165d7fac2f497d66185bc765412f7aa7a06445
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 92a271bd97160704267651f3735146433bc6f09e00d3ec665d49e56b73cd44e980bd38a0d0bcd7df3cba004c57f514594fd5afab7e483326e2309cf2907222e2
|
7
|
+
data.tar.gz: 2053ad6c27728eb69b95bf42cbf8ece6e7a76465ce53e5e2459e57a3742296b7f8c8ba9c0dad47b5e71a14526223558bb0ce75fa5f77142a7734138920b58c9c
|
data/.gitignore
ADDED
data/.rspec
ADDED
data/LICENSE
ADDED
@@ -0,0 +1,24 @@
|
|
1
|
+
Copyright (c) 2015, Tatsuki Sugiura
|
2
|
+
All rights reserved.
|
3
|
+
|
4
|
+
Redistribution and use in source and binary forms, with or without
|
5
|
+
modification, are permitted provided that the following conditions are met:
|
6
|
+
|
7
|
+
* Redistributions of source code must retain the above copyright notice, this
|
8
|
+
list of conditions and the following disclaimer.
|
9
|
+
|
10
|
+
* Redistributions in binary form must reproduce the above copyright notice,
|
11
|
+
this list of conditions and the following disclaimer in the documentation
|
12
|
+
and/or other materials provided with the distribution.
|
13
|
+
|
14
|
+
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
15
|
+
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
16
|
+
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
17
|
+
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
|
18
|
+
FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
19
|
+
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
|
20
|
+
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
|
21
|
+
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
|
22
|
+
OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
23
|
+
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
24
|
+
|
data/README.rdoc
ADDED
@@ -0,0 +1,103 @@
|
|
1
|
+
= ruby 和暦ライブラリ
|
2
|
+
|
3
|
+
== 概要
|
4
|
+
|
5
|
+
日本の和暦をサポートするライブラリです。
|
6
|
+
旧暦は445年から、元号は大化から全て処理できます。
|
7
|
+
元号はWikipedia、暦は日本暦日原典由来のデータを元にしています。
|
8
|
+
|
9
|
+
== 機能
|
10
|
+
|
11
|
+
* 和暦文字列のパース
|
12
|
+
* 旧字体を含む元号のサポート (慶應、萬延など)
|
13
|
+
* 漢数字サポート
|
14
|
+
* 閏月サポート
|
15
|
+
* 月の別名(如月、弥生、師走など)のサポート
|
16
|
+
* 元年、正月、朔日、晦日、廿一日、卅日 などの特殊な表記の日付サポート
|
17
|
+
* Date クラスの拡張
|
18
|
+
* strftime に和暦フォーマット文字列を追加
|
19
|
+
* to_wareki_date を追加
|
20
|
+
* Date::JAPAN (明治改暦日)の追加
|
21
|
+
|
22
|
+
== インストール
|
23
|
+
|
24
|
+
Gemfile に以下のようにするか、
|
25
|
+
|
26
|
+
gem 'wareki'
|
27
|
+
|
28
|
+
もしくは、直接 gem install して下さい。
|
29
|
+
|
30
|
+
gem install wareki
|
31
|
+
|
32
|
+
== 使い方の例
|
33
|
+
|
34
|
+
require 'wareki'
|
35
|
+
|
36
|
+
Date.today.strftime("%JF") # => "平成二十七年八月二十二日"
|
37
|
+
Date.civil(1311, 7, 20).strftime("%JF") # => "応長元年閏六月四日"
|
38
|
+
|
39
|
+
Date.today.to_wareki_date # => Wareki::Date インスタンス
|
40
|
+
Wareki::Date.new("明治", 8, 2, 1).to_date # => 標準 Date インスタンス 1875-02-01
|
41
|
+
|
42
|
+
Wareki::Date.parse("正嘉元年 うるう3月 12日") # => Wareki::Date インスタンス
|
43
|
+
Date.parse("正嘉元年 うるう3月 12日)" # => 標準 Date インスタンス 1257-04-27
|
44
|
+
|
45
|
+
== フォーマット文字列
|
46
|
+
|
47
|
+
* %Jf: "%Je%Jg年%Js%Jl月%Jd日" の略 (例: 平成23年3月12日)
|
48
|
+
* %JF: "%Je%JGK年%JLk%JSk月%JDk日" の略 (例: 平成二十三年三月十二日)
|
49
|
+
* %Jy: "%Je%Jg" の略 (元号+半角数字年)
|
50
|
+
* %JY: "%Je%JG" の略 (元号+全角数字年)
|
51
|
+
* %JYk: "%Je%Gk" の略 (元号+漢数字年)
|
52
|
+
* %JYK: "%Je%GK" の略 (元号+特殊漢数字年)
|
53
|
+
* %Je: 元号 (存在しない場合空文字列になります)
|
54
|
+
* %Jg: 和暦年の半角数字(元号が存在しない場合空文字列)
|
55
|
+
* %JG: 和暦年の全角数字(元号が存在しない場合空文字列)
|
56
|
+
* %JGk: 和暦年の漢数字(元号が存在しない場合空文字列)
|
57
|
+
* %JGK: 和暦年の漢数字の特殊記法 (元) (元号が存在しない場合空文字列)
|
58
|
+
* %Jo: 旧暦年の半角数字
|
59
|
+
* %JO: 旧暦年の全角数字
|
60
|
+
* %JOk: 旧暦年の漢数字
|
61
|
+
* %Ji: 神武天皇即位紀元(皇紀)年の半角数字
|
62
|
+
* %JI: 神武天皇即位紀元(皇紀)年の全角数字
|
63
|
+
* %JIk: 神武天皇即位紀元(皇紀)年の漢数字
|
64
|
+
* %Jm: "%Js%Jl" の略 (和暦月の半角数字。閏月は後ろに "'" を追加)
|
65
|
+
* %JM: "%JLk%JS" の略 (和暦月の全角数字。閏月は前に "閏" を追加)
|
66
|
+
* %JMk: "%JLk%JSk" の略 (和暦月の漢数字。閏月は前に "閏" を追加)
|
67
|
+
* %Js: 和暦月の半角数字
|
68
|
+
* %JS: 和暦月の全角数字
|
69
|
+
* %JSk: 和暦月の漢数字
|
70
|
+
* %JSK: 和暦月の別名 (睦月、如月、弥生...)
|
71
|
+
* %Jl: 和暦月が閏月の場合 "'"、そうでなければ空文字列になります。
|
72
|
+
* %JL: 和暦月が閏月の場合 "’"、そうでなければ空文字列になります。
|
73
|
+
* %JLk: 和暦月が閏月の場合 "閏"、そうでなければ空文字列になります。
|
74
|
+
* %Jd: 和暦日の半角数字
|
75
|
+
* %JD: 和暦日の全角数字
|
76
|
+
* %JDk: 和暦日の漢数字
|
77
|
+
* %JDK: 和暦日の漢数字の特殊記法 (朔、晦)
|
78
|
+
|
79
|
+
== 仕様、限界、制限など
|
80
|
+
|
81
|
+
* 作者は暦の専門家ではまったくありません。ツッコミお待ちしています。
|
82
|
+
* 皇紀と旧暦が出力できますが、旧暦445年1月1日(先発グレゴリオ暦で445年1月25日)より前の日付はサポートしていません。扱おうとすると UnsupportedDateRange 例外を上げます。
|
83
|
+
* 日本暦日原典の対照表が、どの暦法を元にしているのか分かっていません。単にデータだけを利用しています。
|
84
|
+
* 内部的には全てユリウス日を経由して変換しています。
|
85
|
+
* パース時には元号の存在しない年(例: 霊亀百年)を受け入れます。しかし現状、Date に変換した場合この情報は捨てられ、パース時の元号を復元することはできません。(Wareki::Date を直接扱えば可能です)
|
86
|
+
* 改暦による存在しない日(明治5年12月3日〜31日)は基本的に例外を上げます。が、現状このチェックは完全ではありません。
|
87
|
+
* 北朝の元号も解釈できます。しかし現在の所、北朝の元号で文字列にフォーマットすることはできません。
|
88
|
+
* 10月の別名は「神無月」しかサポートしていません
|
89
|
+
* 将来の日付に関しては、現在の元号がずっと継続しているとみなします
|
90
|
+
* 日本でユリウス暦は使われていないので、Date::JAPAN は単にグレゴリオ暦への改暦日の目安、と言うだけです。Date.new で使う意味はほぼありません。
|
91
|
+
|
92
|
+
== 参照元データ
|
93
|
+
|
94
|
+
作成には以下のデータを参照しました。
|
95
|
+
|
96
|
+
* 旧暦: {suikawiki - 旧暦}[http://wiki.suikawiki.org/n/%E6%97%A7%E6%9A%A6#section-%E5%AF%BE%E7%85%A7%E8%A1%A8%E3%81%A8%E5%A4%89%E6%8F%9B%E3%83%84%E3%83%BC%E3%83%AB] にある「日本暦日原典」第4版準拠の先発グレゴリオ暦対照表
|
97
|
+
* 元号: {Wikipedia - 元号一覧_(日本)}[https://ja.wikipedia.org/wiki/%E5%85%83%E5%8F%B7%E4%B8%80%E8%A6%A7_%28%E6%97%A5%E6%9C%AC%29] のユリウス歴とグレゴリオ暦表記の物を利用しています
|
98
|
+
|
99
|
+
== TODO
|
100
|
+
* 北朝モード
|
101
|
+
* Wareki::Date で各種計算のサポート
|
102
|
+
* 元号として "西暦" サポート?
|
103
|
+
* 元号の切り替え日を和暦ベースで計算するようにする?
|