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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 79c9479030803bf84aa20b43820c3e6b3fdfda4b
4
- data.tar.gz: c1f493139625884850cfa81558bf4e9ad01681c8
3
+ metadata.gz: d318602ae19da19f9def05abac553fce2b683ec5
4
+ data.tar.gz: cec1f854a1a758b80570de28afb76880caf1fd3d
5
5
  SHA512:
6
- metadata.gz: b3120394288a3e7cde36df0ff25c909606b290c3f8ccfb01796f63802f843a9a79c752f6f25cdcd62a63938ad6874238090346955a2a0ab18164b77adf5ca31d
7
- data.tar.gz: 84f3a499918027decfac616005ea597f142806f0c4f83985750606157690456b67c693d5cba6316e74614ce6d96170d7388fc8cca251da5f65b093a04f3de05c
6
+ metadata.gz: 79de1c3243893ffcef37729b39b601fff845e9ff1b491262dd91aec3c4c798a137d7d06fc1db04aa9f6d56790281088aad8519662e221e1f42624c1f29b185dd
7
+ data.tar.gz: 2d79334973cde61e908c1783c9c607157139be534ddb31e8280d4bc9e53d7c9daffdb3df4d6028a8dad3e786cca439f061a50e81ad9350223b3954c9ebb61482
@@ -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 - @start_date).to_i
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
- return self.new(start_year, target_month + 1, days + 1, is_leap_month)
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
@@ -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
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ruby_lunardate
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
4
+ version: 0.0.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - sunsidew