qreki 0.0.2
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.
- checksums.yaml +7 -0
- data/.gitignore +17 -0
- data/Gemfile +4 -0
- data/LICENSE.txt +29 -0
- data/README.md +35 -0
- data/Rakefile +1 -0
- data/lib/qreki/version.rb +3 -0
- data/lib/qreki.rb +641 -0
- data/qreki.gemspec +23 -0
- data/spec/qreki_spec.rb +51 -0
- data/spec/spec_helper.rb +3 -0
- metadata +84 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: f6e6bd51a0862bec54fb4d7078510cbba715e1c9
|
4
|
+
data.tar.gz: 5b490e907a36872febae4aacd0e29066987e758a
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: ab4c508d1a71f35e3517864d00831f27662e83f686ca88d0c1080f09b6f6991d8e6431a495559a3fd6d76c5c0903dedfb22c66a624f53ae61fceaca0409fec90
|
7
|
+
data.tar.gz: 98c9122c02627a49982447326387f7ec7386d703685b038e33d0cf11b0850603534eb1f10f2f375977375cad80b6d157f326686b8388baac6a417900f1d1d061
|
data/.gitignore
ADDED
data/Gemfile
ADDED
data/LICENSE.txt
ADDED
@@ -0,0 +1,29 @@
|
|
1
|
+
Copyright (c) 1993,1994 H.Takano
|
2
|
+
|
3
|
+
QRSAMP
|
4
|
+
Coded by H.Takano (C)1993,1994
|
5
|
+
http://www.vector.co.jp/soft/dos/personal/se016093.html
|
6
|
+
|
7
|
+
|
8
|
+
Copyright (c) 2013 Masaki Ozawa
|
9
|
+
|
10
|
+
MIT License
|
11
|
+
|
12
|
+
Permission is hereby granted, free of charge, to any person obtaining
|
13
|
+
a copy of this software and associated documentation files (the
|
14
|
+
"Software"), to deal in the Software without restriction, including
|
15
|
+
without limitation the rights to use, copy, modify, merge, publish,
|
16
|
+
distribute, sublicense, and/or sell copies of the Software, and to
|
17
|
+
permit persons to whom the Software is furnished to do so, subject to
|
18
|
+
the following conditions:
|
19
|
+
|
20
|
+
The above copyright notice and this permission notice shall be
|
21
|
+
included in all copies or substantial portions of the Software.
|
22
|
+
|
23
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
24
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
25
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
26
|
+
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
27
|
+
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
28
|
+
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
29
|
+
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
data/README.md
ADDED
@@ -0,0 +1,35 @@
|
|
1
|
+
# Qreki
|
2
|
+
|
3
|
+
This is the gem which calculates the old calendar "qreki".
|
4
|
+
|
5
|
+
## Installation
|
6
|
+
|
7
|
+
Add this line to your application's Gemfile:
|
8
|
+
|
9
|
+
gem 'qreki'
|
10
|
+
|
11
|
+
And then execute:
|
12
|
+
|
13
|
+
$ bundle
|
14
|
+
|
15
|
+
Or install it yourself as:
|
16
|
+
|
17
|
+
$ gem install qreki
|
18
|
+
|
19
|
+
## Usage
|
20
|
+
|
21
|
+
>> qreki = Qreki.calc(2013,11,7)
|
22
|
+
>> qreki.year # 2013
|
23
|
+
>> qreki.uruu # false
|
24
|
+
>> qreki.month # 10
|
25
|
+
>> qreki.day # 5
|
26
|
+
>> qreki.rokuyou # "友引"
|
27
|
+
>> qreki.sekki # "立冬"
|
28
|
+
|
29
|
+
## Contributing
|
30
|
+
|
31
|
+
1. Fork it
|
32
|
+
2. Create your feature branch (`git checkout -b my-new-feature`)
|
33
|
+
3. Commit your changes (`git commit -am 'Add some feature'`)
|
34
|
+
4. Push to the branch (`git push origin my-new-feature`)
|
35
|
+
5. Create new Pull Request
|
data/Rakefile
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
require "bundler/gem_tasks"
|
data/lib/qreki.rb
ADDED
@@ -0,0 +1,641 @@
|
|
1
|
+
require "qreki/version"
|
2
|
+
|
3
|
+
# =========================================================================
|
4
|
+
# Based on 「旧暦計算サンプルプログラム」
|
5
|
+
# Copyright (C) 1993,1994 by H.Takano
|
6
|
+
# http://www.vector.co.jp/soft/dos/personal/se016093.html
|
7
|
+
# =========================================================================
|
8
|
+
|
9
|
+
module Qreki
|
10
|
+
|
11
|
+
class Qrk
|
12
|
+
attr_accessor :year, :uruu, :month, :day, :rokuyou, :sekki
|
13
|
+
end
|
14
|
+
|
15
|
+
$k = Math::PI / 180.0 # Pi
|
16
|
+
$tz = - (9.0 / 24.0) # タイムゾーンオフセット
|
17
|
+
$rm_sun0 = 0 # 太陽黄経
|
18
|
+
|
19
|
+
#=========================================================================
|
20
|
+
# 旧暦算出
|
21
|
+
#
|
22
|
+
# 引数 .... 日付
|
23
|
+
# 戻り値
|
24
|
+
# q.year : 旧暦年
|
25
|
+
# q.uruu : 平月/閏月 flag .... 平月:false 閏月:true
|
26
|
+
# q.month : 旧暦月
|
27
|
+
# q.day : 旧暦日
|
28
|
+
# q.rokuyou : 六曜
|
29
|
+
# q.sekki : 二十四節気
|
30
|
+
#=========================================================================
|
31
|
+
def self.calc(year, month, day)
|
32
|
+
return calc_from_date(Date.new(year, month, day))
|
33
|
+
end
|
34
|
+
|
35
|
+
def self.calc_from_date(tm)
|
36
|
+
array = calc_kyureki(tm.year, tm.month, tm.day)
|
37
|
+
qreki = Qrk.new
|
38
|
+
qreki.year = array[0]
|
39
|
+
qreki.uruu = array[1]
|
40
|
+
qreki.month = array[2]
|
41
|
+
qreki.day = array[3]
|
42
|
+
qreki.rokuyou = rokuyou(tm.year, tm.month, tm.day)
|
43
|
+
qreki.sekki = sekki(tm.year, tm.month, tm.day)
|
44
|
+
return qreki
|
45
|
+
end
|
46
|
+
|
47
|
+
# =========================================================================
|
48
|
+
# 新暦に対応する、旧暦を求める。
|
49
|
+
#
|
50
|
+
# 呼び出し時にセットする変数:
|
51
|
+
# year : 計算する年(JSTユリウス日)
|
52
|
+
# mon : 計算する月(JSTユリウス日)
|
53
|
+
# day : 計算する日(JSTユリウス日)
|
54
|
+
# 戻り値:
|
55
|
+
# this.year : 旧暦年
|
56
|
+
# this.uruu : 平月/閏月 flag .... 平月:false 閏月:true
|
57
|
+
# this.month : 旧暦月
|
58
|
+
# this.day : 旧暦日
|
59
|
+
# =========================================================================
|
60
|
+
def self.calc_kyureki(year, mon, day)
|
61
|
+
|
62
|
+
chu = Array.new(5, [])
|
63
|
+
m = Array.new(5).map{Array.new(3,0)}
|
64
|
+
saku = Array.new
|
65
|
+
kyureki = Array.new
|
66
|
+
|
67
|
+
tm = ymdt2jd(year, mon, day, 0, 0, 0)
|
68
|
+
|
69
|
+
# -----------------------------------------------------------------------
|
70
|
+
# 計算対象の直前にあたる二分二至の時刻を求める
|
71
|
+
# -----------------------------------------------------------------------
|
72
|
+
chu[0] = calc_chu(tm, 90)
|
73
|
+
|
74
|
+
# -----------------------------------------------------------------------
|
75
|
+
# 上で求めた二分二至の時の太陽黄経をもとに朔日行列の先頭に月名をセット
|
76
|
+
# -----------------------------------------------------------------------
|
77
|
+
m[0][0] = ( $rm_sun0 / 30.0 ).to_i + 2
|
78
|
+
|
79
|
+
# -----------------------------------------------------------------------
|
80
|
+
# 中気の時刻を計算(3回計算する)
|
81
|
+
# chu[i]:中気の時刻
|
82
|
+
# -----------------------------------------------------------------------
|
83
|
+
(1..3).each do |i|
|
84
|
+
chu[i] = calc_chu(chu[i - 1] + 32, 30)
|
85
|
+
end
|
86
|
+
# -----------------------------------------------------------------------
|
87
|
+
# 計算対象の直前にあたる二分二至の直前の朔の時刻を求める
|
88
|
+
# -----------------------------------------------------------------------
|
89
|
+
saku[0] = calc_saku(chu[0])
|
90
|
+
|
91
|
+
# -----------------------------------------------------------------------
|
92
|
+
# 朔の時刻を求める
|
93
|
+
# -----------------------------------------------------------------------
|
94
|
+
(1..4).each do |i|
|
95
|
+
saku[i] = calc_saku(saku[i - 1] + 30)
|
96
|
+
# 前と同じ時刻を計算した場合(両者の差が26日以内)には、初期値を
|
97
|
+
# +33日にして再実行させる。
|
98
|
+
if (saku[i - 1].to_i.abs - saku[i].to_i) <= 26
|
99
|
+
saku[i] = calc_saku(saku[i - 1] + 35)
|
100
|
+
end
|
101
|
+
end
|
102
|
+
|
103
|
+
# -----------------------------------------------------------------------
|
104
|
+
# saku[1]が二分二至の時刻以前になってしまった場合には、朔をさかのぼり過ぎ
|
105
|
+
# たと考えて、朔の時刻を繰り下げて修正する。
|
106
|
+
# その際、計算もれ(saku[4])になっている部分を補うため、朔の時刻を計算
|
107
|
+
# する。(近日点通過の近辺で朔があると起こる事があるようだ...?)
|
108
|
+
# -----------------------------------------------------------------------
|
109
|
+
if saku[1].to_i <= chu[0].to_i
|
110
|
+
(0..4).each do |i|
|
111
|
+
saku[i] = saku[i + 1]
|
112
|
+
end
|
113
|
+
saku[4] = calc_saku(saku[3] + 35)
|
114
|
+
|
115
|
+
# -----------------------------------------------------------------------
|
116
|
+
# saku[0]が二分二至の時刻以後になってしまった場合には、朔をさかのぼり足
|
117
|
+
# りないと見て、朔の時刻を繰り上げて修正する。
|
118
|
+
# その際、計算もれ(saku[0])になっている部分を補うため、朔の時刻を計算
|
119
|
+
# する。(春分点の近辺で朔があると起こる事があるようだ...?)
|
120
|
+
# -----------------------------------------------------------------------
|
121
|
+
elsif saku[0].to_i > chu[0].to_i
|
122
|
+
[4,3,2,1].each do |i|
|
123
|
+
saku[i] = saku[i - 1]
|
124
|
+
end
|
125
|
+
saku[0] = calc_saku(saku[0] - 27)
|
126
|
+
end
|
127
|
+
|
128
|
+
# -----------------------------------------------------------------------
|
129
|
+
# 閏月検索Flagセット
|
130
|
+
# (節月で4ヶ月の間に朔が5回あると、閏月がある可能性がある。)
|
131
|
+
# lap=false:平月 lap=true:閏月
|
132
|
+
# -----------------------------------------------------------------------
|
133
|
+
lap = (saku[4].to_i <= chu[3].to_i)
|
134
|
+
|
135
|
+
# -----------------------------------------------------------------------
|
136
|
+
# 朔日行列の作成
|
137
|
+
# m[i][0] ... 月名(1:正月 2:2月 3:3月 ....)
|
138
|
+
# m[i][1] .... 閏フラグ(false:平月 true:閏月)
|
139
|
+
# m[i][2] ...... 朔日のjd
|
140
|
+
# -----------------------------------------------------------------------
|
141
|
+
m[0][1] = false
|
142
|
+
m[0][2] = saku[0].to_i
|
143
|
+
(1..4).each do |i|
|
144
|
+
if lap && i > 1
|
145
|
+
if (chu[i - 1] <= saku[i - 1].to_i) || (chu[i - 1] >= saku[i].to_i)
|
146
|
+
m[i-1][0] = m[i-2][0]
|
147
|
+
m[i-1][1] = true
|
148
|
+
m[i-1][2] = saku[i - 1].to_i
|
149
|
+
lap = false
|
150
|
+
end
|
151
|
+
end
|
152
|
+
m[i][0] = m[i-1][0] + 1
|
153
|
+
m[i][0] -= 12 if m[i][0] > 12
|
154
|
+
m[i][2] = saku[i].to_i
|
155
|
+
m[i][1] = false
|
156
|
+
end
|
157
|
+
|
158
|
+
# -----------------------------------------------------------------------
|
159
|
+
# 朔日行列から旧暦を求める。
|
160
|
+
# -----------------------------------------------------------------------
|
161
|
+
state = 0
|
162
|
+
i_tmp = 0
|
163
|
+
(1..4).each do |i|
|
164
|
+
i_tmp = i
|
165
|
+
if tm.to_i < m[i][2].to_i
|
166
|
+
state = 1
|
167
|
+
break
|
168
|
+
elsif tm.to_i == m[i][2].to_i
|
169
|
+
state = 2
|
170
|
+
break
|
171
|
+
end
|
172
|
+
end
|
173
|
+
i_tmp -= 1 if state == 0 || state == 1
|
174
|
+
i = i_tmp
|
175
|
+
|
176
|
+
kyureki[1] = m[i][1]
|
177
|
+
kyureki[2] = m[i][0]
|
178
|
+
kyureki[3] = tm.to_i - m[i][2].to_i + 1
|
179
|
+
|
180
|
+
# -----------------------------------------------------------------------
|
181
|
+
# 旧暦年の計算
|
182
|
+
# (旧暦月が10以上でかつ新暦月より大きい場合には、
|
183
|
+
# まだ年を越していないはず...)
|
184
|
+
# -----------------------------------------------------------------------
|
185
|
+
a = jd2ymdt(tm)
|
186
|
+
kyureki[0] = a[0]
|
187
|
+
if kyureki[2] > 9 && kyureki[2] > a[1]
|
188
|
+
kyureki[0] -= 1
|
189
|
+
end
|
190
|
+
|
191
|
+
return [kyureki[0], kyureki[1], kyureki[2], kyureki[3]]
|
192
|
+
end
|
193
|
+
|
194
|
+
# =========================================================================
|
195
|
+
# 直前の二分二至/中気の時刻を求める
|
196
|
+
#
|
197
|
+
# パラメータ
|
198
|
+
# tm ............ 計算基準となる時刻(JSTユリウス日)
|
199
|
+
# longitude ..... 求める対象(90:二分二至,30:中気))
|
200
|
+
# 戻り値
|
201
|
+
# 求めた時刻(JSTユリウス日)を返す。
|
202
|
+
# グローバル変数 $rm_sun0 に、その時の太陽黄経をセットする。
|
203
|
+
#
|
204
|
+
# ※ 引数、戻り値ともユリウス日で表し、時分秒は日の小数で表す。
|
205
|
+
# 力学時とユリウス日との補正時刻=0.0secと仮定
|
206
|
+
# =========================================================================
|
207
|
+
def self.calc_chu(tm, longitude)
|
208
|
+
# -----------------------------------------------------------------------
|
209
|
+
# 時刻引数を小数部と整数部とに分解する(精度を上げるため)
|
210
|
+
# -----------------------------------------------------------------------
|
211
|
+
tm1 = tm.to_i
|
212
|
+
tm2 = tm - tm1 + $tz # JST -> UTC
|
213
|
+
|
214
|
+
# -----------------------------------------------------------------------
|
215
|
+
# 直前の二分二至の黄経 λsun0 を求める
|
216
|
+
# -----------------------------------------------------------------------
|
217
|
+
t = (tm2 + 0.5) / 36525.0 + (tm1 - 2451545.0) / 36525.0
|
218
|
+
rm_sun = longitude_sun(t)
|
219
|
+
$rm_sun0 = longitude * (rm_sun / longitude.to_f).to_i
|
220
|
+
|
221
|
+
# -----------------------------------------------------------------------
|
222
|
+
# 繰り返し計算によって直前の二分二至の時刻を計算する
|
223
|
+
# (誤差が±1.0 sec以内になったら打ち切る。)
|
224
|
+
# -----------------------------------------------------------------------
|
225
|
+
delta_t1 ||= 0.0
|
226
|
+
delta_t2 ||= 1.0
|
227
|
+
|
228
|
+
while (delta_t1 + delta_t2).abs > (1.0 / 86400.0)
|
229
|
+
# -------------------------------------------------------------------
|
230
|
+
# λsun(t) を計算
|
231
|
+
# t = (tm + .5 - 2451545) / 36525;
|
232
|
+
# -------------------------------------------------------------------
|
233
|
+
t = (tm2 + 0.5) / 36525.0 + (tm1 - 2451545.0) / 36525.0
|
234
|
+
rm_sun = longitude_sun(t)
|
235
|
+
|
236
|
+
# -------------------------------------------------------------------
|
237
|
+
# 黄経差 Δλ=λsun -λsun0
|
238
|
+
# -------------------------------------------------------------------
|
239
|
+
delta_rm = rm_sun - $rm_sun0
|
240
|
+
|
241
|
+
# -------------------------------------------------------------------
|
242
|
+
# Δλの引き込み範囲(±180°)を逸脱した場合には、補正を行う
|
243
|
+
# -------------------------------------------------------------------
|
244
|
+
if delta_rm > 180.0
|
245
|
+
delta_rm -= 360.0
|
246
|
+
elsif delta_rm < -180.0
|
247
|
+
delta_rm += 360.0
|
248
|
+
end
|
249
|
+
|
250
|
+
# -------------------------------------------------------------------
|
251
|
+
# 時刻引数の補正値 Δt
|
252
|
+
# delta_t = delta_rm * 365.2 / 360;
|
253
|
+
# -------------------------------------------------------------------
|
254
|
+
delta_t1 = (delta_rm * 365.2 / 360.0).to_i
|
255
|
+
delta_t2 = (delta_rm * 365.2 / 360.0) - delta_t1
|
256
|
+
|
257
|
+
# -------------------------------------------------------------------
|
258
|
+
# 時刻引数の補正
|
259
|
+
# tm -= delta_t;
|
260
|
+
# -------------------------------------------------------------------
|
261
|
+
tm1 = tm1 - delta_t1
|
262
|
+
tm2 = tm2 - delta_t2
|
263
|
+
if tm2 < 0
|
264
|
+
tm1 -= 1.0
|
265
|
+
tm2 += 1.0
|
266
|
+
end
|
267
|
+
end
|
268
|
+
|
269
|
+
# -----------------------------------------------------------------------
|
270
|
+
# 戻り値の作成
|
271
|
+
# 時刻引数を合成し、戻り値(JSTユリウス日)とする
|
272
|
+
# -----------------------------------------------------------------------
|
273
|
+
return tm2 + tm1 - $tz
|
274
|
+
end
|
275
|
+
|
276
|
+
# =========================================================================
|
277
|
+
# 直前の朔の時刻を求める
|
278
|
+
#
|
279
|
+
# 呼び出し時にセットする変数
|
280
|
+
# tm ........ 計算基準の時刻(JSTユリウス日)
|
281
|
+
# 戻り値
|
282
|
+
# 朔の時刻
|
283
|
+
#
|
284
|
+
# ※ 引数、戻り値ともJSTユリウス日で表し、時分秒は日の小数で表す。
|
285
|
+
# 力学時とユリウス日との補正時刻=0.0secと仮定
|
286
|
+
# =========================================================================
|
287
|
+
def self.calc_saku(tm)
|
288
|
+
# -----------------------------------------------------------------------
|
289
|
+
# ループカウンタのセット
|
290
|
+
# -----------------------------------------------------------------------
|
291
|
+
lc = 1
|
292
|
+
|
293
|
+
# -----------------------------------------------------------------------
|
294
|
+
# 時刻引数を小数部と整数部とに分解する(精度を上げるため)
|
295
|
+
# -----------------------------------------------------------------------
|
296
|
+
tm1 = tm.to_i
|
297
|
+
tm2 = tm - tm1 + $tz # JST -> UTC
|
298
|
+
|
299
|
+
# -----------------------------------------------------------------------
|
300
|
+
# 繰り返し計算によって朔の時刻を計算する
|
301
|
+
# (誤差が±1.0 sec以内になったら打ち切る。)
|
302
|
+
# -----------------------------------------------------------------------
|
303
|
+
delta_t1 ||= 0.0
|
304
|
+
delta_t2 ||= 1.0
|
305
|
+
|
306
|
+
while ( delta_t1 + delta_t2 ).abs > ( 1.0 / 86400.0 )
|
307
|
+
lc += 1
|
308
|
+
|
309
|
+
# -------------------------------------------------------------------
|
310
|
+
# 太陽の黄経λsun(t) ,月の黄経λmoon(t) を計算
|
311
|
+
# t = (tm + .5 - 2451545) / 36525;
|
312
|
+
# -------------------------------------------------------------------
|
313
|
+
t = (tm2 + 0.5) / 36525.0 + (tm1 - 2451545.0) / 36525.0
|
314
|
+
rm_sun = longitude_sun(t)
|
315
|
+
rm_moon = longitude_moon(t)
|
316
|
+
|
317
|
+
# -------------------------------------------------------------------
|
318
|
+
# 月と太陽の黄経差Δλ
|
319
|
+
# Δλ=λmoon-λsun
|
320
|
+
# -------------------------------------------------------------------
|
321
|
+
delta_rm = rm_moon - rm_sun
|
322
|
+
|
323
|
+
# -------------------------------------------------------------------
|
324
|
+
# ループの1回目(lc=1)で delta_rm < 0 の場合には引き込み範囲に
|
325
|
+
# 入るように補正する
|
326
|
+
# -------------------------------------------------------------------
|
327
|
+
if lc==1 && delta_rm < 0
|
328
|
+
delta_rm = normalization_angle(delta_rm)
|
329
|
+
# -------------------------------------------------------------------
|
330
|
+
# 春分の近くで朔がある場合(0 ≦λsun≦ 20)で、
|
331
|
+
# 月の黄経λmoon≧300 の場合には、
|
332
|
+
# Δλ= 360 - Δλ と計算して補正する
|
333
|
+
# -------------------------------------------------------------------
|
334
|
+
elsif rm_sun >= 0 && rm_sun <= 20 && rm_moon >= 300
|
335
|
+
delta_rm = normalization_angle(delta_rm)
|
336
|
+
delta_rm = 360 - delta_rm
|
337
|
+
# -------------------------------------------------------------------
|
338
|
+
# Δλの引き込み範囲(±40°)を逸脱した場合には、補正を行う
|
339
|
+
# -------------------------------------------------------------------
|
340
|
+
elsif delta_rm.abs > 40
|
341
|
+
delta_rm = normalization_angle(delta_rm)
|
342
|
+
end
|
343
|
+
|
344
|
+
# -------------------------------------------------------------------
|
345
|
+
# 時刻引数の補正値 Δt
|
346
|
+
# delta_t = delta_rm * 29.530589 / 360;
|
347
|
+
# -------------------------------------------------------------------
|
348
|
+
delta_t1 = ( delta_rm * 29.530589 / 360.0 ).to_i
|
349
|
+
delta_t2 = ( delta_rm * 29.530589 / 360.0 ) - delta_t1
|
350
|
+
|
351
|
+
# -------------------------------------------------------------------
|
352
|
+
# 時刻引数の補正
|
353
|
+
# tm -= delta_t;
|
354
|
+
# -------------------------------------------------------------------
|
355
|
+
tm1 = tm1 - delta_t1
|
356
|
+
tm2 = tm2 - delta_t2
|
357
|
+
if( tm2 < 0 )
|
358
|
+
tm1 -= 1.0
|
359
|
+
tm2 += 1.0
|
360
|
+
end
|
361
|
+
|
362
|
+
# -------------------------------------------------------------------
|
363
|
+
# ループ回数が15回になったら、初期値 tm を tm-26 とする。
|
364
|
+
# -------------------------------------------------------------------
|
365
|
+
if( lc == 15 && (delta_t1 + delta_t2).abs > (1 / 86400.0) )
|
366
|
+
tm1 = (tm - 26).to_i
|
367
|
+
tm2 = 0
|
368
|
+
# -------------------------------------------------------------------
|
369
|
+
# 初期値を補正したにも関わらず、振動を続ける場合には初期値を答えとし
|
370
|
+
# て返して強制的にループを抜け出して異常終了させる。
|
371
|
+
# -------------------------------------------------------------------
|
372
|
+
elsif( lc > 30 && (delta_t1 + delta_t2).abs > (1 / 86400.0) )
|
373
|
+
tm1 = tm
|
374
|
+
tm2 = 0
|
375
|
+
break
|
376
|
+
end
|
377
|
+
end
|
378
|
+
|
379
|
+
# -----------------------------------------------------------------------
|
380
|
+
# 戻り値の作成
|
381
|
+
# 時刻引数を合成し、戻り値(ユリウス日)とする
|
382
|
+
# -----------------------------------------------------------------------
|
383
|
+
return tm2 + tm1 - $tz
|
384
|
+
end
|
385
|
+
|
386
|
+
# =========================================================================
|
387
|
+
# 角度の正規化を行う。すなわち引数の範囲を 0≦θ<360 にする。
|
388
|
+
# =========================================================================
|
389
|
+
def self.normalization_angle(angle)
|
390
|
+
if angle >= 0.0
|
391
|
+
return angle - 360.0 * ( angle / 360.0 ).to_i
|
392
|
+
else
|
393
|
+
return 360.0 + angle - 360.0 * ( angle / 360.0 ).to_i
|
394
|
+
end
|
395
|
+
end
|
396
|
+
|
397
|
+
# =========================================================================
|
398
|
+
# 太陽の黄経 λsun(t) を計算する(t は力学時)
|
399
|
+
# =========================================================================
|
400
|
+
def self.longitude_sun(t)
|
401
|
+
# -----------------------------------------------------------------------
|
402
|
+
# 摂動項の計算
|
403
|
+
# -----------------------------------------------------------------------
|
404
|
+
th = 0.0004 * Math.cos( $k * normalization_angle( 31557.0 * t + 161.0 ) )
|
405
|
+
th += 0.0004 * Math.cos( $k * normalization_angle( 29930.0 * t + 48.0 ) )
|
406
|
+
th += 0.0005 * Math.cos( $k * normalization_angle( 2281.0 * t + 221.0 ) )
|
407
|
+
th += 0.0005 * Math.cos( $k * normalization_angle( 155.0 * t + 118.0 ) )
|
408
|
+
th += 0.0006 * Math.cos( $k * normalization_angle( 33718.0 * t + 316.0 ) )
|
409
|
+
th += 0.0007 * Math.cos( $k * normalization_angle( 9038.0 * t + 64.0 ) )
|
410
|
+
th += 0.0007 * Math.cos( $k * normalization_angle( 3035.0 * t + 110.0 ) )
|
411
|
+
th += 0.0007 * Math.cos( $k * normalization_angle( 65929.0 * t + 45.0 ) )
|
412
|
+
th += 0.0013 * Math.cos( $k * normalization_angle( 22519.0 * t + 352.0 ) )
|
413
|
+
th += 0.0015 * Math.cos( $k * normalization_angle( 45038.0 * t + 254.0 ) )
|
414
|
+
th += 0.0018 * Math.cos( $k * normalization_angle( 445267.0 * t + 208.0 ) )
|
415
|
+
th += 0.0018 * Math.cos( $k * normalization_angle( 19.0 * t + 159.0 ) )
|
416
|
+
th += 0.0020 * Math.cos( $k * normalization_angle( 32964.0 * t + 158.0 ) )
|
417
|
+
th += 0.0200 * Math.cos( $k * normalization_angle( 71998.1 * t + 265.1 ) )
|
418
|
+
th -= 0.0048 * Math.cos( $k * normalization_angle( 35999.05 * t + 267.52 ) ) * t
|
419
|
+
th += 1.9147 * Math.cos( $k * normalization_angle( 35999.05 * t + 267.52 ) )
|
420
|
+
|
421
|
+
# -----------------------------------------------------------------------
|
422
|
+
# 比例項の計算
|
423
|
+
# -----------------------------------------------------------------------
|
424
|
+
ang = normalization_angle( 36000.7695 * t )
|
425
|
+
ang = normalization_angle( ang + 280.4659 )
|
426
|
+
th = normalization_angle( th + ang )
|
427
|
+
|
428
|
+
return th
|
429
|
+
end
|
430
|
+
|
431
|
+
# =========================================================================
|
432
|
+
# 月の黄経 λmoon(t) を計算する(t は力学時)
|
433
|
+
# =========================================================================
|
434
|
+
def self.longitude_moon(t)
|
435
|
+
# -----------------------------------------------------------------------
|
436
|
+
# 摂動項の計算
|
437
|
+
# -----------------------------------------------------------------------
|
438
|
+
th = 0.0003 * Math.cos( $k * normalization_angle( 2322131.0 * t + 191.0 ) )
|
439
|
+
th += 0.0003 * Math.cos( $k * normalization_angle( 4067.0 * t + 70.0 ) )
|
440
|
+
th += 0.0003 * Math.cos( $k * normalization_angle( 549197.0 * t + 220.0 ) )
|
441
|
+
th += 0.0003 * Math.cos( $k * normalization_angle( 1808933.0 * t + 58.0 ) )
|
442
|
+
th += 0.0003 * Math.cos( $k * normalization_angle( 349472.0 * t + 337.0 ) )
|
443
|
+
th += 0.0003 * Math.cos( $k * normalization_angle( 381404.0 * t + 354.0 ) )
|
444
|
+
th += 0.0003 * Math.cos( $k * normalization_angle( 958465.0 * t + 340.0 ) )
|
445
|
+
th += 0.0004 * Math.cos( $k * normalization_angle( 12006.0 * t + 187.0 ) )
|
446
|
+
th += 0.0004 * Math.cos( $k * normalization_angle( 39871.0 * t + 223.0 ) )
|
447
|
+
th += 0.0005 * Math.cos( $k * normalization_angle( 509131.0 * t + 242.0 ) )
|
448
|
+
th += 0.0005 * Math.cos( $k * normalization_angle( 1745069.0 * t + 24.0 ) )
|
449
|
+
th += 0.0005 * Math.cos( $k * normalization_angle( 1908795.0 * t + 90.0 ) )
|
450
|
+
th += 0.0006 * Math.cos( $k * normalization_angle( 2258267.0 * t + 156.0 ) )
|
451
|
+
th += 0.0006 * Math.cos( $k * normalization_angle( 111869.0 * t + 38.0 ) )
|
452
|
+
th += 0.0007 * Math.cos( $k * normalization_angle( 27864.0 * t + 127.0 ) )
|
453
|
+
th += 0.0007 * Math.cos( $k * normalization_angle( 485333.0 * t + 186.0 ) )
|
454
|
+
th += 0.0007 * Math.cos( $k * normalization_angle( 405201.0 * t + 50.0 ) )
|
455
|
+
th += 0.0007 * Math.cos( $k * normalization_angle( 790672.0 * t + 114.0 ) )
|
456
|
+
th += 0.0008 * Math.cos( $k * normalization_angle( 1403732.0 * t + 98.0 ) )
|
457
|
+
th += 0.0009 * Math.cos( $k * normalization_angle( 858602.0 * t + 129.0 ) )
|
458
|
+
th += 0.0011 * Math.cos( $k * normalization_angle( 1920802.0 * t + 186.0 ) )
|
459
|
+
th += 0.0012 * Math.cos( $k * normalization_angle( 1267871.0 * t + 249.0 ) )
|
460
|
+
th += 0.0016 * Math.cos( $k * normalization_angle( 1856938.0 * t + 152.0 ) )
|
461
|
+
th += 0.0018 * Math.cos( $k * normalization_angle( 401329.0 * t + 274.0 ) )
|
462
|
+
th += 0.0021 * Math.cos( $k * normalization_angle( 341337.0 * t + 16.0 ) )
|
463
|
+
th += 0.0021 * Math.cos( $k * normalization_angle( 71998.0 * t + 85.0 ) )
|
464
|
+
th += 0.0021 * Math.cos( $k * normalization_angle( 990397.0 * t + 357.0 ) )
|
465
|
+
th += 0.0022 * Math.cos( $k * normalization_angle( 818536.0 * t + 151.0 ) )
|
466
|
+
th += 0.0023 * Math.cos( $k * normalization_angle( 922466.0 * t + 163.0 ) )
|
467
|
+
th += 0.0024 * Math.cos( $k * normalization_angle( 99863.0 * t + 122.0 ) )
|
468
|
+
th += 0.0026 * Math.cos( $k * normalization_angle( 1379739.0 * t + 17.0 ) )
|
469
|
+
th += 0.0027 * Math.cos( $k * normalization_angle( 918399.0 * t + 182.0 ) )
|
470
|
+
th += 0.0028 * Math.cos( $k * normalization_angle( 1934.0 * t + 145.0 ) )
|
471
|
+
th += 0.0037 * Math.cos( $k * normalization_angle( 541062.0 * t + 259.0 ) )
|
472
|
+
th += 0.0038 * Math.cos( $k * normalization_angle( 1781068.0 * t + 21.0 ) )
|
473
|
+
th += 0.0040 * Math.cos( $k * normalization_angle( 133.0 * t + 29.0 ) )
|
474
|
+
th += 0.0040 * Math.cos( $k * normalization_angle( 1844932.0 * t + 56.0 ) )
|
475
|
+
th += 0.0040 * Math.cos( $k * normalization_angle( 1331734.0 * t + 283.0 ) )
|
476
|
+
th += 0.0050 * Math.cos( $k * normalization_angle( 481266.0 * t + 205.0 ) )
|
477
|
+
th += 0.0052 * Math.cos( $k * normalization_angle( 31932.0 * t + 107.0 ) )
|
478
|
+
th += 0.0068 * Math.cos( $k * normalization_angle( 926533.0 * t + 323.0 ) )
|
479
|
+
th += 0.0079 * Math.cos( $k * normalization_angle( 449334.0 * t + 188.0 ) )
|
480
|
+
th += 0.0085 * Math.cos( $k * normalization_angle( 826671.0 * t + 111.0 ) )
|
481
|
+
th += 0.0100 * Math.cos( $k * normalization_angle( 1431597.0 * t + 315.0 ) )
|
482
|
+
th += 0.0107 * Math.cos( $k * normalization_angle( 1303870.0 * t + 246.0 ) )
|
483
|
+
th += 0.0110 * Math.cos( $k * normalization_angle( 489205.0 * t + 142.0 ) )
|
484
|
+
th += 0.0125 * Math.cos( $k * normalization_angle( 1443603.0 * t + 52.0 ) )
|
485
|
+
th += 0.0154 * Math.cos( $k * normalization_angle( 75870.0 * t + 41.0 ) )
|
486
|
+
th += 0.0304 * Math.cos( $k * normalization_angle( 513197.9 * t + 222.5 ) )
|
487
|
+
th += 0.0347 * Math.cos( $k * normalization_angle( 445267.1 * t + 27.9 ) )
|
488
|
+
th += 0.0409 * Math.cos( $k * normalization_angle( 441199.8 * t + 47.4 ) )
|
489
|
+
th += 0.0458 * Math.cos( $k * normalization_angle( 854535.2 * t + 148.2 ) )
|
490
|
+
th += 0.0533 * Math.cos( $k * normalization_angle( 1367733.1 * t + 280.7 ) )
|
491
|
+
th += 0.0571 * Math.cos( $k * normalization_angle( 377336.3 * t + 13.2 ) )
|
492
|
+
th += 0.0588 * Math.cos( $k * normalization_angle( 63863.5 * t + 124.2 ) )
|
493
|
+
th += 0.1144 * Math.cos( $k * normalization_angle( 966404.0 * t + 276.5 ) )
|
494
|
+
th += 0.1851 * Math.cos( $k * normalization_angle( 35999.05 * t + 87.53 ) )
|
495
|
+
th += 0.2136 * Math.cos( $k * normalization_angle( 954397.74 * t + 179.93 ) )
|
496
|
+
th += 0.6583 * Math.cos( $k * normalization_angle( 890534.22 * t + 145.7 ) )
|
497
|
+
th += 1.2740 * Math.cos( $k * normalization_angle( 413335.35 * t + 10.74 ) )
|
498
|
+
th += 6.2888 * Math.cos( $k * normalization_angle( 477198.868 * t + 44.963) )
|
499
|
+
|
500
|
+
#-----------------------------------------------------------------------
|
501
|
+
# 比例項の計算
|
502
|
+
#-----------------------------------------------------------------------
|
503
|
+
ang = normalization_angle( 481267.8809 * t )
|
504
|
+
ang = normalization_angle( ang + 218.3162 )
|
505
|
+
th = normalization_angle( th + ang )
|
506
|
+
|
507
|
+
return th
|
508
|
+
end
|
509
|
+
|
510
|
+
#=========================================================================
|
511
|
+
# 年月日、時分秒(世界時)からユリウス日(JD)を計算する
|
512
|
+
#
|
513
|
+
# ※ この関数では、グレゴリオ暦法による年月日から求めるものである。
|
514
|
+
# (ユリウス暦法による年月日から求める場合には使用できない。)
|
515
|
+
#=========================================================================
|
516
|
+
def self.ymdt2jd(year, mon, day, hour, min, sec)
|
517
|
+
if mon < 3
|
518
|
+
year -= 1
|
519
|
+
mon += 12
|
520
|
+
end
|
521
|
+
|
522
|
+
jd = ( 365.25 * year ).to_i
|
523
|
+
jd += ( year / 400.0 ).to_i
|
524
|
+
jd -= ( year / 100.0 ).to_i
|
525
|
+
jd += ( 30.59 * ( mon - 2 ) ).to_i
|
526
|
+
jd += 1721088
|
527
|
+
jd += day
|
528
|
+
|
529
|
+
t = sec / 3600.0
|
530
|
+
t += min / 60.0
|
531
|
+
t += hour
|
532
|
+
t = t / 24.0
|
533
|
+
|
534
|
+
jd += t
|
535
|
+
|
536
|
+
return jd
|
537
|
+
end
|
538
|
+
|
539
|
+
#=========================================================================
|
540
|
+
# ユリウス日(JD)から年月日、時分秒(世界時)を計算する
|
541
|
+
#
|
542
|
+
# 戻り値の配列TIME[]の内訳
|
543
|
+
# TIME[0] ... 年 TIME[1] ... 月 TIME[2] ... 日
|
544
|
+
# TIME[3] ... 時 TIME[4] ... 分 TIME[5] ... 秒
|
545
|
+
#
|
546
|
+
# ※ この関数で求めた年月日は、グレゴリオ暦法によって表されている。
|
547
|
+
#
|
548
|
+
#=========================================================================
|
549
|
+
def self.jd2ymdt(jd)
|
550
|
+
time = []
|
551
|
+
|
552
|
+
x0 = ( jd + 68570.0 ).to_i
|
553
|
+
x1 = ( x0 / 36524.25 ).to_i
|
554
|
+
x2 = x0 - ( 36524.25 * x1 + 0.75 ).to_i
|
555
|
+
x3 = ( ( x2+1 ) / 365.2425 ).to_i
|
556
|
+
x4 = x2 - ( 365.25 * x3 ).to_i + 31.0
|
557
|
+
x5 = ( x4.to_i / 30.59 ).to_i
|
558
|
+
x6 = ( x5.to_i / 11.0 ).to_i
|
559
|
+
|
560
|
+
time[2] = x4 - ( 30.59 * x5 ).to_i
|
561
|
+
time[1] = x5 - 12 * x6 + 2
|
562
|
+
time[0] = 100 * ( x1 - 49 ) + x3 + x6
|
563
|
+
|
564
|
+
if time[1] == 2 && time[2] > 28
|
565
|
+
if time[0] % 100 == 0 && time[0] % 400 == 0
|
566
|
+
time[2] = 29
|
567
|
+
elsif time[0] % 4 ==0
|
568
|
+
time[2]=29
|
569
|
+
else
|
570
|
+
time[2]=28
|
571
|
+
end
|
572
|
+
end
|
573
|
+
|
574
|
+
tm = 86400.0 * ( jd - jd.to_i )
|
575
|
+
time[3] = ( tm / 3600.0 ).to_i
|
576
|
+
time[4] = ( (tm - 3600.0 * time[3] ) / 60.0 ).to_i
|
577
|
+
time[5] = ( tm - 3600.0 * time[3] - 60 * time[4] ).to_i
|
578
|
+
|
579
|
+
return time
|
580
|
+
end
|
581
|
+
|
582
|
+
#=========================================================================
|
583
|
+
# 六曜算出関数
|
584
|
+
#
|
585
|
+
# 引数 .... 計算対象となる年月日 $year $mon $day
|
586
|
+
# 戻り値 .... 六曜 (大安 赤口 先勝 友引 先負 仏滅)
|
587
|
+
#=========================================================================
|
588
|
+
def self.rokuyou(year, mon, day)
|
589
|
+
rokuyou = %w(大安 赤口 先勝 友引 先負 仏滅)
|
590
|
+
|
591
|
+
q_yaer, uruu, q_mon, q_day = calc_kyureki(year, mon, day)
|
592
|
+
|
593
|
+
return rokuyou[ (q_mon + q_day) % 6 ]
|
594
|
+
end
|
595
|
+
|
596
|
+
#=========================================================================
|
597
|
+
# 今日が24節気かどうか調べる
|
598
|
+
#
|
599
|
+
# 引数 .... 計算対象となる年月日 $year $mon $day
|
600
|
+
# 戻り値 .... 24節気の名称
|
601
|
+
#=========================================================================
|
602
|
+
def self.sekki(year, mon, day)
|
603
|
+
#-----------------------------------------------------------------------
|
604
|
+
# 24節気の定義
|
605
|
+
#-----------------------------------------------------------------------
|
606
|
+
sekki24 = %w(春分 清明 穀雨 立夏 小満 芒種 夏至 小暑 大暑 立秋 処暑 白露
|
607
|
+
秋分 寒露 霜降 立冬 小雪 大雪 冬至 小寒 大寒 立春 雨水 啓蟄)
|
608
|
+
|
609
|
+
tm = ymdt2jd(year, mon, day, 0, 0, 0)
|
610
|
+
|
611
|
+
#-----------------------------------------------------------------------
|
612
|
+
# 時刻引数を分解する
|
613
|
+
#-----------------------------------------------------------------------
|
614
|
+
tm1 = tm.to_i
|
615
|
+
tm2 = tm - tm1
|
616
|
+
tm2 -= 9.0 / 24.0
|
617
|
+
t = (tm2 + 0.5) / 36525.0 + (tm1 - 2451545.0) / 36525.0
|
618
|
+
|
619
|
+
#今日の太陽の黄経
|
620
|
+
rm_sun_today = longitude_sun(t)
|
621
|
+
|
622
|
+
tm += 1
|
623
|
+
tm1 = tm.to_i
|
624
|
+
tm2 = tm - tm1
|
625
|
+
tm2 -= 9.0 / 24.0
|
626
|
+
t = (tm2 + 0.5) / 36525.0 + (tm1 - 2451545.0) / 36525.0
|
627
|
+
|
628
|
+
# 明日の太陽の黄経
|
629
|
+
rm_sun_tommorow = longitude_sun(t)
|
630
|
+
|
631
|
+
#
|
632
|
+
rm_sun_today0 = 15.0 * (rm_sun_today / 15.0).to_i
|
633
|
+
rm_sun_tommorow0 = 15.0 * (rm_sun_tommorow / 15.0).to_i
|
634
|
+
|
635
|
+
if rm_sun_today0 != rm_sun_tommorow0
|
636
|
+
return sekki24[rm_sun_tommorow0 / 15]
|
637
|
+
else
|
638
|
+
return ''
|
639
|
+
end
|
640
|
+
end
|
641
|
+
end
|
data/qreki.gemspec
ADDED
@@ -0,0 +1,23 @@
|
|
1
|
+
# coding: utf-8
|
2
|
+
lib = File.expand_path('../lib', __FILE__)
|
3
|
+
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
4
|
+
require 'qreki/version'
|
5
|
+
|
6
|
+
Gem::Specification.new do |spec|
|
7
|
+
spec.name = "qreki"
|
8
|
+
spec.version = Qreki::VERSION
|
9
|
+
spec.authors = ["Masaki Ozawa"]
|
10
|
+
spec.email = ["ozamasa123@gmail.com"]
|
11
|
+
spec.description = %q{qreki}
|
12
|
+
spec.summary = %q{qreki}
|
13
|
+
spec.homepage = "https://github.com/ozamasa/qreki"
|
14
|
+
spec.license = "MIT"
|
15
|
+
|
16
|
+
spec.files = `git ls-files`.split($/)
|
17
|
+
spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
|
18
|
+
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
19
|
+
spec.require_paths = ["lib"]
|
20
|
+
|
21
|
+
spec.add_development_dependency "bundler", "~> 1.3"
|
22
|
+
spec.add_development_dependency "rake"
|
23
|
+
end
|
data/spec/qreki_spec.rb
ADDED
@@ -0,0 +1,51 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
require 'spec_helper'
|
3
|
+
require 'qreki'
|
4
|
+
|
5
|
+
describe Qreki do
|
6
|
+
before do
|
7
|
+
# 2013,11,1 # => 2013,false,9,28
|
8
|
+
# 2014,11,1 # => 2014,true, 9,9
|
9
|
+
# 2014,3,30 # => 2014,false,2,30
|
10
|
+
end
|
11
|
+
|
12
|
+
it "should calc eql 2013,11,1 => 2013,false,9,28 赤口" do
|
13
|
+
@q = Qreki.calc(2013,11,1)
|
14
|
+
@q.year.should eql 2013
|
15
|
+
@q.uruu.should eql false
|
16
|
+
@q.month.should eql 9
|
17
|
+
@q.day.should eql 28
|
18
|
+
@q.rokuyou.should eql "赤口"
|
19
|
+
@q.sekki.should eql ""
|
20
|
+
end
|
21
|
+
|
22
|
+
it "should calc eql 2014,11,1 => 2014,true, 9,9 大安" do
|
23
|
+
@q = Qreki.calc(2014,11,1)
|
24
|
+
@q.year.should eql 2014
|
25
|
+
@q.uruu.should eql true
|
26
|
+
@q.month.should eql 9
|
27
|
+
@q.day.should eql 9
|
28
|
+
@q.rokuyou.should eql "大安"
|
29
|
+
@q.sekki.should eql ""
|
30
|
+
end
|
31
|
+
|
32
|
+
it "should calc eql 2014,3,30 => 2014,false,2,30" do
|
33
|
+
@q = Qreki.calc(2014,3,30) # => 2014,false,2,30
|
34
|
+
@q.year.should eql 2014
|
35
|
+
@q.uruu.should eql false
|
36
|
+
@q.month.should eql 2
|
37
|
+
@q.day.should eql 30
|
38
|
+
@q.rokuyou.should eql "先勝"
|
39
|
+
@q.sekki.should eql ""
|
40
|
+
end
|
41
|
+
|
42
|
+
it "should calc_from_date eql 2013,11,7 => 2013,false,10,5" do
|
43
|
+
@q = Qreki.calc_from_date(Date.new(2013,11,7))
|
44
|
+
@q.year.should eql 2013
|
45
|
+
@q.uruu.should eql false
|
46
|
+
@q.month.should eql 10
|
47
|
+
@q.day.should eql 5
|
48
|
+
@q.rokuyou.should eql "友引"
|
49
|
+
@q.sekki.should eql "立冬"
|
50
|
+
end
|
51
|
+
end
|
data/spec/spec_helper.rb
ADDED
metadata
ADDED
@@ -0,0 +1,84 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: qreki
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.2
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Masaki Ozawa
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2013-11-14 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: bundler
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - ~>
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '1.3'
|
20
|
+
type: :development
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - ~>
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '1.3'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: rake
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - '>='
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '0'
|
34
|
+
type: :development
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - '>='
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '0'
|
41
|
+
description: qreki
|
42
|
+
email:
|
43
|
+
- ozamasa123@gmail.com
|
44
|
+
executables: []
|
45
|
+
extensions: []
|
46
|
+
extra_rdoc_files: []
|
47
|
+
files:
|
48
|
+
- .gitignore
|
49
|
+
- Gemfile
|
50
|
+
- LICENSE.txt
|
51
|
+
- README.md
|
52
|
+
- Rakefile
|
53
|
+
- lib/qreki.rb
|
54
|
+
- lib/qreki/version.rb
|
55
|
+
- qreki.gemspec
|
56
|
+
- spec/qreki_spec.rb
|
57
|
+
- spec/spec_helper.rb
|
58
|
+
homepage: https://github.com/ozamasa/qreki
|
59
|
+
licenses:
|
60
|
+
- MIT
|
61
|
+
metadata: {}
|
62
|
+
post_install_message:
|
63
|
+
rdoc_options: []
|
64
|
+
require_paths:
|
65
|
+
- lib
|
66
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
67
|
+
requirements:
|
68
|
+
- - '>='
|
69
|
+
- !ruby/object:Gem::Version
|
70
|
+
version: '0'
|
71
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - '>='
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: '0'
|
76
|
+
requirements: []
|
77
|
+
rubyforge_project:
|
78
|
+
rubygems_version: 2.0.3
|
79
|
+
signing_key:
|
80
|
+
specification_version: 4
|
81
|
+
summary: qreki
|
82
|
+
test_files:
|
83
|
+
- spec/qreki_spec.rb
|
84
|
+
- spec/spec_helper.rb
|