ruby_lunardate 0.0.2 → 0.0.3
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 +4 -4
- data/lib/ruby_lunardate.rb +22 -4
- data/test/test_ruby_lunardate.rb +8 -0
- metadata +1 -1
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA1:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: d318602ae19da19f9def05abac553fce2b683ec5
|
|
4
|
+
data.tar.gz: cec1f854a1a758b80570de28afb76880caf1fd3d
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 79de1c3243893ffcef37729b39b601fff845e9ff1b491262dd91aec3c4c798a137d7d06fc1db04aa9f6d56790281088aad8519662e221e1f42624c1f29b185dd
|
|
7
|
+
data.tar.gz: 2d79334973cde61e908c1783c9c607157139be534ddb31e8280d4bc9e53d7c9daffdb3df4d6028a8dad3e786cca439f061a50e81ad9350223b3954c9ebb61482
|
data/lib/ruby_lunardate.rb
CHANGED
|
@@ -167,6 +167,17 @@ LUNARDAYS_FOR_MONTHTYPE = {
|
|
|
167
167
|
6 => [60, 30, 30]
|
|
168
168
|
}
|
|
169
169
|
|
|
170
|
+
class Date
|
|
171
|
+
def to_lunar
|
|
172
|
+
days = LunarDate.get_dates(self)
|
|
173
|
+
return LunarDate.from_days(days, self.class)
|
|
174
|
+
end
|
|
175
|
+
|
|
176
|
+
def to_lunar!
|
|
177
|
+
self.self.to_lunar
|
|
178
|
+
end
|
|
179
|
+
end
|
|
180
|
+
|
|
170
181
|
class LunarDate
|
|
171
182
|
attr_accessor :year, :month, :day, :is_leap_month
|
|
172
183
|
|
|
@@ -196,11 +207,15 @@ class LunarDate
|
|
|
196
207
|
return CALENDAR_YEAR_INFO_MAP[@calendar_symbol]
|
|
197
208
|
end
|
|
198
209
|
|
|
210
|
+
def self.get_dates(solar_date)
|
|
211
|
+
return (solar_date - @start_date).to_i
|
|
212
|
+
end
|
|
213
|
+
|
|
199
214
|
def self.to_lunar(year, month, day, locale = :ko)
|
|
200
215
|
solar_date = Date.new(year, month, day)
|
|
201
|
-
days = (solar_date
|
|
216
|
+
days = self.get_dates(solar_date)
|
|
202
217
|
# @calendar_symbol = locale
|
|
203
|
-
return self.from_days(days)
|
|
218
|
+
return self.from_days(days, self)
|
|
204
219
|
end
|
|
205
220
|
|
|
206
221
|
def self.is_in_this_days(days, left_days)
|
|
@@ -211,7 +226,7 @@ class LunarDate
|
|
|
211
226
|
return self.is_in_this_days(days, left_days) == false
|
|
212
227
|
end
|
|
213
228
|
|
|
214
|
-
def self.from_days(days)
|
|
229
|
+
def self.from_days(days, type)
|
|
215
230
|
start_year = 1900
|
|
216
231
|
target_month = 0
|
|
217
232
|
is_leap_month = false
|
|
@@ -244,6 +259,9 @@ class LunarDate
|
|
|
244
259
|
start_year += 1
|
|
245
260
|
end
|
|
246
261
|
|
|
247
|
-
|
|
262
|
+
target_date = type.new(start_year, target_month + 1, days + 1)
|
|
263
|
+
target_date.is_leap_month = is_leap_month if type == self
|
|
264
|
+
|
|
265
|
+
return target_date
|
|
248
266
|
end
|
|
249
267
|
end
|
data/test/test_ruby_lunardate.rb
CHANGED
|
@@ -76,4 +76,12 @@ class TestRubyLunarDate < Minitest::Test
|
|
|
76
76
|
assert_equal(date.day, 19)
|
|
77
77
|
assert_equal(date.is_leap_month, false)
|
|
78
78
|
end
|
|
79
|
+
|
|
80
|
+
def test_to_lunar_from_Date_class_variable_20150908
|
|
81
|
+
date = Date.new(2015,9,8)
|
|
82
|
+
date = date.to_lunar
|
|
83
|
+
assert_equal(date.year, 2015)
|
|
84
|
+
assert_equal(date.month, 7)
|
|
85
|
+
assert_equal(date.day, 26)
|
|
86
|
+
end
|
|
79
87
|
end
|