lunisolar
Version:
专业农历库,支持公历阴历互转,支持各类黄历数据查询,如八字四柱、阴历、神煞宜忌、时辰吉凶、建除十二神、胎神占方、五行纳音等。支持自定义插件。
87 lines (71 loc) • 1.78 kB
text/typescript
import type { Stem, Branch } from '../../../class/stemBranch'
import type { Element5 } from '../../../class/element5'
import { TenGod } from './tenGod'
import { C8God } from './c8God'
import { computeTenGodByStem } from '../utils'
import { SBX } from '../types'
import { cache } from '../../../utils/decorators'
import { CacheClass } from './../../../class/CacheClass'
interface PillarDataParam {
sb: SBX
cate: YMDH
me: Stem
lang?: string
}
export class Pillar extends CacheClass {
readonly _sb: SBX
readonly _me: Stem
readonly _cate: YMDH
readonly _lang: string = 'zh'
readonly gods: C8God[] = []
constructor(data: PillarDataParam) {
super()
this._sb = data.sb
this._cate = data.cate
this._me = data.me
if (data.lang) {
this._lang = data.lang
}
}
_pushGods(gods: C8God[]) {
this.gods.push(...gods)
}
get stem(): Stem {
return this._sb.stem
}
get branch(): Branch {
return this._sb.branch
}
get value(): number {
return this._sb.value
}
get name(): string {
return this._sb.name
}
get takeSound(): string {
return this._sb.takeSound
}
get takeSoundE5(): Element5 {
return this._sb.takeSoundE5
}
get stemTenGod(): TenGod {
if (this._cate === 'day') return TenGod.create('日主', { lang: this._lang })
return computeTenGodByStem(this._me, this.stem, this._lang)
}
get branchTenGod(): TenGod[] {
return this.branch.hiddenStems.map(item => {
return computeTenGodByStem(this._me, item, this._lang)
})
}
get missing(): [Branch, Branch] {
return this._sb.missing
}
valueOf() {
return this._sb.valueOf()
}
toString() {
return this._sb.toString()
}
}