wareki 0.2.2 → 0.3.0

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
- SHA256:
3
- metadata.gz: 790c42a6f6b07acda3701e35d179140baf9435df3866c3e4604ab5bcc484e55f
4
- data.tar.gz: ddf6f052c60fe43faec942b48b3ffaef9ac7d801e9a8ac67c6cdd2ea9672156d
2
+ SHA1:
3
+ metadata.gz: 39f05936b30d97f43a06edb9d15c7d67bb719e96
4
+ data.tar.gz: ccd7b79a1bf1dd80c5d7941e3563776821bfa929
5
5
  SHA512:
6
- metadata.gz: 02a4b54f5f344cb75c64bf16be764cc073d503a0c7efe9a6b6695a3aff62fb7bedbdaa1c6ef7a2e9a6e86f83e396c2b38a257e19f84034b6766bc0879c200c29
7
- data.tar.gz: 2c8581f1e91da2535d335136fafaa55f6b8a901169a4003df570801ab8c548f2109fc0e98108b0752427e55590f88178681d9ffb41efcf17b4367ee382bfe6a3
6
+ metadata.gz: 362fd8803dc51359f7b90e3a56bad1767c6feb4d2253270cc0d6d748d35b98ac92bb6d9f24e2adcf45d57236a956b909d8e0f78cb7b9652306b4c1b12bd25835
7
+ data.tar.gz: 435a35906ed7100d2f808bdaf8051b9db778fc76e9ff0fcf8d8e646da5e1319a511ead388fe0159832b8268e681c5c231b1abf8c9ac996abf8c71e1ae70e0913
data/ChangeLog CHANGED
@@ -1,3 +1,8 @@
1
+ 2018-11-09 Tatsuki Sugiura <sugi@nemui.org>
2
+
3
+ * Version: 0.3.0
4
+ * Support "大字"-style kansuji.
5
+
1
6
  2018-09-19 Tatsuki Sugiura <sugi@nemui.org>
2
7
 
3
8
  * Version: 0.2.2
@@ -36,21 +36,49 @@ Gemfile に以下のようにするか、
36
36
 
37
37
  == 使い方の例
38
38
 
39
+ === ありそうな例
40
+
39
41
  require 'wareki'
40
42
 
41
- # 和暦へのフォーマット
42
- Date.today.strftime("%JF") # => "平成二十七年八月二十二日"
43
- Date.civil(1311, 7, 20).strftime("%JF") # => "応長元年閏六月四日"
43
+ d = Date.parse("平成二七年 08月 22日")
44
+ d.strftime("%F") # => "2015-08-22"
45
+ d.strftime("%JF") # => "平成二十七年八月二十二日"
46
+ d.strftime("%Jf") # => "平成27年8月22日"
44
47
 
45
- # 和暦のパース
46
- Date.parse("正嘉元年 うるう3月 12日") # => 標準 Date インスタンス 1257-04-27
48
+ === パース
49
+
50
+ 旧暦を含むの日本語の日付文字列パースして、組み込み Date オブジェクトに変換できます。この時、慣例的に使われていたい色々な表記も解釈できます。(標準では Date::ITALY な Date オブジェクトに変換しますが、必要であれば第3引数の start に改暦日を渡せます。)
51
+
52
+ # 和暦のパース (標準 Date インスタンス)
53
+ Date.parse("㍻一〇年 肆月 晦日") # => #<Date: 1998-04-30 ...
54
+ Date.parse("安政七年 弥生") # => #<Date: 1860-03-22 ...
55
+ Date.parse("元仁元年閏七月朔日") # => #<Date: 1224-08-17 ...
56
+ Date.parse("萬延三年 5月 廿一日") # => #<Date: 1862-06-18 ...
57
+ Date.parse("皇紀二千皕卌年") # => #<Date: 1580-01-17 ...
58
+ Date.parse("正嘉元年 うるう3月 12日") # => #<Date: 1257-04-27 ...
47
59
 
48
60
  # Wareki::Date を直接扱う場合
49
61
  Date.today.to_wareki_date # => Wareki::Date インスタンス
50
62
  Wareki::Date.parse("正嘉元年 うるう3月 12日") # => Wareki::Date インスタンス
51
- Wareki::Date.new("明治", 8, 2, 1).to_date # => 標準 Date インスタンス 1875-02-01
63
+ Wareki::Date.new("明治", 8, 2, 1).to_date # => 標準 Date インスタンス 1875-02-01
64
+
65
+ === 和暦・旧暦へのフォーマット
66
+
67
+ 日本では明治5年まで、グレゴリオ暦でもユリウス歴でもない旧暦が使われていました。これもフォーマット文字列経由で透過的に扱えます。
68
+
69
+ Date.today.strftime("%JF") # => "平成二十七年八月二十二日"
70
+ Date.civil(1311, 7, 20).strftime("%JF") # => "応長元年閏六月四日"
71
+
72
+ 旧暦の場合の月日 (%Jm, %Jd) と、グレゴリオ暦やユリウス暦での月日 (%m, %d)は違うものを出力します。
73
+
74
+ d = Date.civil(1860, 4, 7)
75
+ dj = d.new_start(Date::JULIAN)
76
+ d.strftime # => "1860-04-07" (グレゴリオ暦)
77
+ dj.strftime # => "1860-03-26" (ユリウス暦)
78
+ d.strftime("%Jf") # => "安政7年3月17日" (日本の旧暦)
79
+ d.strftime("皇紀%Ji年%Jm月%Jd日") # => "皇紀2520年3月17日" (日本の旧暦で神武天皇即位紀元年)
52
80
 
53
- == フォーマット文字列
81
+ == 追加フォーマット文字列一覧
54
82
 
55
83
  * %Jf: "%Je%Jg年%Js%Jl月%Jd日" の略 (例: 平成23年3月12日)
56
84
  * %JF: "%Je%JGK年%JLk%JSk月%JDk日" の略 (例: 平成二十三年三月十二日)
@@ -21,7 +21,7 @@ module Wareki
21
21
  ERA_BY_NAME[short] = ERA_BY_NAME[canon]
22
22
  end
23
23
  ERA_BY_NAME.freeze
24
- NUM_CHARS = '零〇一二三四五六七八九十卄廿卅丗卌肆百皕千万億兆01234567890123456789'.freeze
24
+ NUM_CHARS = '零壱壹弌弐貳貮参參弎肆伍陸漆質柒捌玖〇一二三四五六七八九十拾什卄廿卅丗卌百陌佰皕阡仟千万萬億兆京垓01234567890123456789'.freeze
25
25
  ALT_MONTH_NAME = %w(睦月 如月 弥生 卯月 皐月 水無月 文月 葉月 長月 神無月 霜月 師走).freeze
26
26
  REGEX = %r{^
27
27
  (?<era_name>西暦|紀元前|#{ERA_BY_NAME.keys.join('|')})?
@@ -30,7 +30,7 @@ module Wareki
30
30
  (?:(?<month>[正#{NUM_CHARS}]+)月 |
31
31
  (?<alt_month>#{ALT_MONTH_NAME.join('|')})))?
32
32
  (?:(?<day>[元朔晦#{NUM_CHARS}]+)日)?
33
- $}x
33
+ $}x.freeze
34
34
 
35
35
  class UnsupportedDateRange < StandardError; end
36
36
 
@@ -18,23 +18,23 @@ module Wareki
18
18
  module_function
19
19
 
20
20
  def kan_to_i(str)
21
+ str = str.to_s.tr(
22
+ '〇一二三四五六七八九0123456789零正元朔壱壹弌弐貳貮参參弎肆伍陸漆質柒捌玖拾什陌佰阡仟萬',
23
+ '01234567890123456789011111122233345677789十十百百千千万'
24
+ )
21
25
  ret3 = 0
22
26
  ret4 = 0
23
27
  curnum = nil
24
- str == '零' and return 0
25
- str.to_s.each_char do |c|
28
+ str.each_char do |c|
26
29
  case c
27
- when '', '', '',
28
- '一', '二', '三', '四', '五', '六', '七', '八', '九', '肆',
29
- '1', '2', '3', '4', '5', '6', '7', '8', '9',
30
- '1', '2', '3', '4', '5', '6', '7', '8', '9'
30
+ when '1', '2', '3', '4', '5', '6', '7', '8', '9'
31
31
  if curnum
32
32
  curnum *= 10
33
33
  else
34
34
  curnum = 0
35
35
  end
36
- curnum += c.tr('一二三四五六七八九123456789肆元朔正', '1234567891234567894111').to_i
37
- when '〇', '0', '0'
36
+ curnum += c.to_i
37
+ when '0'
38
38
  curnum and curnum *= 10
39
39
  when '卄', '廿'
40
40
  ret3 += 20
@@ -1,3 +1,3 @@
1
1
  module Wareki
2
- VERSION = '0.2.2'.freeze
2
+ VERSION = '0.3.0'.freeze
3
3
  end
metadata CHANGED
@@ -1,52 +1,52 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: wareki
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.2
4
+ version: 0.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Tatsuki Sugiura
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-09-19 00:00:00.000000000 Z
11
+ date: 2018-11-08 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
+ name: bundler
14
15
  requirement: !ruby/object:Gem::Requirement
15
16
  requirements:
16
- - - ">="
17
+ - - "~>"
17
18
  - !ruby/object:Gem::Version
18
- version: '0'
19
- name: bundler
20
- prerelease: false
19
+ version: '1.9'
21
20
  type: :development
21
+ prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - ">="
24
+ - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: '0'
26
+ version: '1.9'
27
27
  - !ruby/object:Gem::Dependency
28
+ name: rake
28
29
  requirement: !ruby/object:Gem::Requirement
29
30
  requirements:
30
31
  - - "~>"
31
32
  - !ruby/object:Gem::Version
32
33
  version: '10.0'
33
- name: rake
34
- prerelease: false
35
34
  type: :development
35
+ prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
38
  - - "~>"
39
39
  - !ruby/object:Gem::Version
40
40
  version: '10.0'
41
41
  - !ruby/object:Gem::Dependency
42
+ name: rspec
42
43
  requirement: !ruby/object:Gem::Requirement
43
44
  requirements:
44
45
  - - ">="
45
46
  - !ruby/object:Gem::Version
46
47
  version: '0'
47
- name: rspec
48
- prerelease: false
49
48
  type: :development
49
+ prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
52
  - - ">="
@@ -77,7 +77,7 @@ homepage: https://github.com/sugi/wareki
77
77
  licenses:
78
78
  - BSD
79
79
  metadata: {}
80
- post_install_message:
80
+ post_install_message:
81
81
  rdoc_options: []
82
82
  require_paths:
83
83
  - lib
@@ -92,9 +92,9 @@ required_rubygems_version: !ruby/object:Gem::Requirement
92
92
  - !ruby/object:Gem::Version
93
93
  version: '0'
94
94
  requirements: []
95
- rubyforge_project:
96
- rubygems_version: 2.7.6
97
- signing_key:
95
+ rubyforge_project:
96
+ rubygems_version: 2.5.2.2
97
+ signing_key:
98
98
  specification_version: 4
99
99
  summary: Pure ruby library of Wareki (Japanese calendar date)
100
100
  test_files: []