wareki 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
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
@@ -0,0 +1,15 @@
1
+ *~
2
+ *.bak
3
+ *.orig
4
+ *.old
5
+ *.rej
6
+ .*.sw[po]
7
+ /.bundle/
8
+ /.yardoc
9
+ /Gemfile.lock
10
+ /_yardoc/
11
+ /coverage/
12
+ /doc/
13
+ /pkg/
14
+ /spec/reports/
15
+ /tmp/
data/.rspec ADDED
@@ -0,0 +1,2 @@
1
+ --color
2
+ --require spec_helper
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
+ * 元号の切り替え日を和暦ベースで計算するようにする?
data/Rakefile ADDED
@@ -0,0 +1,6 @@
1
+ require "bundler/gem_tasks"
2
+ require "rspec/core/rake_task"
3
+
4
+ RSpec::Core::RakeTask.new(:spec)
5
+
6
+ task :default => :spec