Module: Reclaim::Utils
- Defined in:
- lib/reclaim/utils.rb
Overview
Utility methods for common operations
Class Method Summary collapse
-
.format_datetime_for_api(date_input) ⇒ Object
Format datetime for API (UTC with Z suffix like the Python SDK).
-
.format_task(task) ⇒ Object
Format task for display.
-
.format_task_list(tasks, title = "Tasks") ⇒ Object
Format task list for display.
-
.parse_date(date_input) ⇒ Object
Parse various date formats into ISO string.
-
.validate_duration(duration) ⇒ Object
Validate duration value.
-
.validate_priority(priority) ⇒ Object
Validate priority value.
Class Method Details
.format_datetime_for_api(date_input) ⇒ Object
Format datetime for API (UTC with Z suffix like the Python SDK)
53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 |
# File 'lib/reclaim/utils.rb', line 53 def self.format_datetime_for_api(date_input) return nil unless date_input case date_input when Time date_input.utc.iso8601 when Date date_input.to_time.utc.iso8601 when String # Try to parse and convert to UTC ISO format with Z suffix Time.parse(date_input).utc.iso8601 else Time.parse(date_input.to_s).utc.iso8601 end rescue ArgumentError date_input.to_s end |
.format_task(task) ⇒ Object
Format task for display
10 11 12 13 14 15 16 |
# File 'lib/reclaim/utils.rb', line 10 def self.format_task(task) status_icon = task.completed? ? "✓" : "○" due_str = task.due_date ? " (due: #{task.due_date_formatted})" : "" "#{status_icon} #{task.title}#{due_str}\n" \ " ID: #{task.id} | Priority: #{task.priority} | Status: #{task.status}" end |
.format_task_list(tasks, title = "Tasks") ⇒ Object
Format task list for display
19 20 21 22 23 24 25 26 27 28 29 30 31 |
# File 'lib/reclaim/utils.rb', line 19 def self.format_task_list(tasks, title = "Tasks") return "No tasks found." if tasks.empty? output = "\n#{title}:\n" output += "-" * 50 + "\n" tasks.each do |task| output += format_task(task) + "\n" end output += "\nTotal: #{tasks.length} tasks\n" output end |
.parse_date(date_input) ⇒ Object
Parse various date formats into ISO string
34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 |
# File 'lib/reclaim/utils.rb', line 34 def self.parse_date(date_input) return nil unless date_input case date_input when Time date_input.iso8601 when Date date_input.to_time.iso8601 when String # Try to parse and convert to ISO format Time.parse(date_input).iso8601 else date_input.to_s end rescue ArgumentError date_input.to_s end |
.validate_duration(duration) ⇒ Object
Validate duration value
80 81 82 83 84 85 |
# File 'lib/reclaim/utils.rb', line 80 def self.validate_duration(duration) return 1.0 unless duration duration = duration.to_f duration.positive? ? duration : 1.0 end |
.validate_priority(priority) ⇒ Object
Validate priority value
72 73 74 75 76 77 |
# File 'lib/reclaim/utils.rb', line 72 def self.validate_priority(priority) return :p3 unless priority priority = priority.to_s.downcase.to_sym Task::PRIORITIES.key?(priority) ? priority : :p3 end |