four-pillars 0.1.17 → 0.1.18

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.
Files changed (3) hide show
  1. checksums.yaml +4 -4
  2. data/lib/four-pillars.rb +21 -6
  3. metadata +3 -6
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 4af28e0c7492629860cfefa10e408001a09f522f217930e9c6a54a2a2f993631
4
- data.tar.gz: ba92cb749d89f4b0af02b00d2b146761e93eb879e6bff81f68dad4a4fbca55dc
3
+ metadata.gz: 4382511acd1f1368f0521311c524b106d043283e3c49b1493d8bb5dbd0035758
4
+ data.tar.gz: 66fa7174de02c05426e23bfd676deacec29a2fbea287da325e479a0737e608cc
5
5
  SHA512:
6
- metadata.gz: a17b6e76c63cedf7694ea1e247912245db0ef8ae478cfa5257833b65a8caeeb9896622db31d78f1b8bb4aeb848332d43eae830910c951cd2bda10c57aa66e2ae
7
- data.tar.gz: b9db9e123171c3a6afdf5559a0138660652b047f558277769dbe85d91a764d62df13661366a640044b38f4134907806799856fb83cb3dc4737d8c345ea55b611
6
+ metadata.gz: fa40e2bdbf9e4ddf6b388fa501adc65e5fb60a2e0a31f9049501a4281d740d044af79a7daae2a72e7b5d20273247fa4e65ea4818b136167d895ff5a9c3de7884
7
+ data.tar.gz: f722c235c243890f782ad347310b790d3a7ed1dc80611516c901753fa7c766e7c49955804a715a261f8390bc3f6d95c11b2b83d4b93d9c6f4215e1d368d9f2a0
data/lib/four-pillars.rb CHANGED
@@ -42,6 +42,16 @@ class FourPillarsLogic
42
42
  end
43
43
  KANSHI_HASH = kanshi_hash
44
44
 
45
+ # 日柱の基準日 (この日が甲子)
46
+ KANSHI_BASE_DATE = Date.new(1863,12,31)
47
+
48
+ # 日付に対応する日柱(その日の干支)
49
+ # FourPillarsLogic.day_pillar_of(Date.new(2026,9,7)) #=> "甲申"
50
+ def self.day_pillar_of(date)
51
+ d = date.respond_to?(:to_date) ? date.to_date : date
52
+ KANSHI_ARRAY[(d - KANSHI_BASE_DATE).to_i % 60]
53
+ end
54
+
45
55
  # 陰干通表
46
56
  def self.jikkan_in
47
57
  j = [nil] * 10
@@ -96,6 +106,12 @@ class FourPillarsLogic
96
106
  end
97
107
  SETSUIRI_HASH, SETSUIRI_LIST = load_setsuiri
98
108
 
109
+ # 年月に対応する節入り日時 (注:時 = 時間 x 60 + 分) 登録がない場合は nil
110
+ # FourPillarsLogic.setsuiri_of(2026,9) #=> [7, 1421] (7日 23時41分)
111
+ def self.setsuiri_of(year,month)
112
+ SETSUIRI_HASH[year*100+month]
113
+ end
114
+
99
115
  # 通変星
100
116
  def self.tsuhensei(j_day,j_src) # 日柱の十干、月柱または年柱の十干
101
117
  if plus_jikkan?(j_day) # 陽
@@ -184,7 +200,7 @@ class FourPillarsLogic
184
200
  else
185
201
  m -= 1
186
202
  end
187
- SETSUIRI_HASH[y*100+m] || [0,0]
203
+ self.class.setsuiri_of(y,m) || [0,0]
188
204
  end
189
205
 
190
206
  # 翌月の節入日
@@ -203,13 +219,13 @@ class FourPillarsLogic
203
219
  # このメソッドがfalseを返す場合、干支、蔵干が仮の節入日で計算されています。
204
220
  def know_setsuiri?
205
221
  y,m,d,h,i = @birth_dt
206
- SETSUIRI_HASH.include? y*100+m
222
+ !self.class.setsuiri_of(y,m).nil?
207
223
  end
208
224
 
209
225
  # 生年月に対応する節入り日時 ファイルに登録がない場合は、4日12時を返す
210
226
  def setsuiri
211
227
  y,m,d,h,i = @birth_dt
212
- SETSUIRI_HASH[y*100+m] || [4,12*60]
228
+ self.class.setsuiri_of(y,m) || [4,12*60]
213
229
  end
214
230
 
215
231
  # 生まれた日が節入日にあたる場合、true
@@ -232,11 +248,10 @@ class FourPillarsLogic
232
248
  yd -= 1 if m < 2 || (m == 2 && d < sd) || (m == 2 && d == sd && h*60+i < st)
233
249
  md = (y - 1863) * 12 + (m - 12) # (till 1864.01.05) = 甲子
234
250
  md -= 1 if d < sd || (d == sd && h*60+i < st)
235
- dd = Date.new(y,m,d) - Date.new(1863,12,31) # 1923.10.18 = 甲子
251
+ dp = self.class.day_pillar_of(Date.new(y,m,d)) # 日柱
236
252
 
237
- return [KANSHI_ARRAY[dd % 60],KANSHI_ARRAY[md % 60],KANSHI_ARRAY[yd % 60]] unless @with_time
253
+ return [dp,KANSHI_ARRAY[md % 60],KANSHI_ARRAY[yd % 60]] unless @with_time
238
254
 
239
- dp = KANSHI_ARRAY[dd % 60] # 日柱
240
255
  if @know_time
241
256
  jyunishi_idx = h == 23 ? 0 : ((h + 1) / 2)
242
257
  jikkan_idx = ((JIKKAN.index(dp[0]) % 5) * 2 + jyunishi_idx) % 10
metadata CHANGED
@@ -1,14 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: four-pillars
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.17
4
+ version: 0.1.18
5
5
  platform: ruby
6
6
  authors:
7
7
  - Yosei Ito
8
- autorequire:
9
8
  bindir: bin
10
9
  cert_chain: []
11
- date: 2024-09-25 00:00:00.000000000 Z
10
+ date: 2026-09-20 00:00:00.000000000 Z
12
11
  dependencies: []
13
12
  description: A class which tells fortune by Four Pillar astrology(四柱推命).
14
13
  email: y-itou@lumber-mill.co.jp
@@ -22,7 +21,6 @@ homepage: https://github.com/lumbermill/four-pillars
22
21
  licenses:
23
22
  - MIT
24
23
  metadata: {}
25
- post_install_message:
26
24
  rdoc_options: []
27
25
  require_paths:
28
26
  - lib
@@ -37,8 +35,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
37
35
  - !ruby/object:Gem::Version
38
36
  version: '0'
39
37
  requirements: []
40
- rubygems_version: 3.5.17
41
- signing_key:
38
+ rubygems_version: 4.0.19
42
39
  specification_version: 4
43
40
  summary: Four Pillar astrology
44
41
  test_files: []