Class: Synthra::Types::DateTime::DateBetween
- Defined in:
- lib/synthra/types/date_time/dates.rb
Overview
DateBetween type
Instance Method Summary collapse
- #generate_edge(rng, context, args) ⇒ Object
- #generate_invalid(rng, context, args) ⇒ Object
-
#generate_random(rng, context, args) ⇒ Date
Generate random date between range.
- #parse_date(date) ⇒ Object private
Instance Method Details
#generate_edge(rng, context, args) ⇒ Object
359 360 361 362 |
# File 'lib/synthra/types/date_time/dates.rb', line 359 def generate_edge(rng, context, args) anchor = TimeTravel.anchor_date || Date.today [anchor - 365, anchor].sample(random: rng.instance_variable_get(:@random)) end |
#generate_invalid(rng, context, args) ⇒ Object
364 365 366 |
# File 'lib/synthra/types/date_time/dates.rb', line 364 def generate_invalid(rng, context, args) [nil, "not a date", 123, [], {}].sample(random: rng.instance_variable_get(:@random)) end |
#generate_random(rng, context, args) ⇒ Date
Generate random date between range
346 347 348 349 350 351 352 353 354 355 356 357 |
# File 'lib/synthra/types/date_time/dates.rb', line 346 def generate_random(rng, context, args) reference_date = TimeTravel.anchor_date || Date.today start_date = parse_date(args[:start] || args[:from] || (reference_date - 365)) end_date = parse_date(args[:end] || args[:to] || reference_date) # Ensure valid range start_date, end_date = end_date, start_date if start_date > end_date # Generate random date in range days = (end_date - start_date).to_i start_date + rng.int(0, days) end |
#parse_date(date) ⇒ Object (private)
370 371 372 373 374 375 376 377 378 379 380 381 382 |
# File 'lib/synthra/types/date_time/dates.rb', line 370 def parse_date(date) case date when Date date when String Date.parse(date) else TimeTravel.anchor_date || Date.today end rescue StandardError TimeTravel.anchor_date || Date.today end |