class Durt::Issue

Public Instance Methods

estimation_ratio() click to toggle source
# File lib/durt/issue.rb, line 39
def estimation_ratio
  return Float::INFINITY if total_tracked_time.zero?

  estimate.to_f / total_tracked_time
end
estimation_result_label() click to toggle source
# File lib/durt/issue.rb, line 71
def estimation_result_label
  return 'Underestimated' if underestimated?
  return 'Overestimated' if overestimated?

  'Who are you?'
end
label() click to toggle source
# File lib/durt/issue.rb, line 78
def label
  "[#{key}]"
end
overestimated?() click to toggle source
# File lib/durt/issue.rb, line 45
def overestimated?
  estimation_ratio > 1
end
plugin() click to toggle source
# File lib/durt/issue.rb, line 27
def plugin
  project.plugins.find { |p| p.plugin_name == source }
end
puts_stats() click to toggle source
# File lib/durt/issue.rb, line 67
def puts_stats
  puts stats
end
start_tracking!() click to toggle source
# File lib/durt/issue.rb, line 18
def start_tracking!
  if tracking?
    puts 'Already tracking'
    return sessions.tracking.last
  end

  sessions.create(open_at: Time.now)
end
stats() click to toggle source

Presenters

# File lib/durt/issue.rb, line 55
    def stats
      <<~MSG

        -- #{self} --
        Estimated: #{ChronicDuration.output(estimate || 0, format: :long)}.
        Tracked: #{ChronicDuration.output(total_tracked_time, format: :long)}.
        Estimation ratio: #{estimation_ratio} (#{estimation_result_label})
        -----------------------------------

      MSG
    end
stop_tracking!() click to toggle source
# File lib/durt/issue.rb, line 31
def stop_tracking!
  sessions.tracking.update_all(closed_at: Time.now)
end
to_s() click to toggle source
# File lib/durt/issue.rb, line 82
def to_s
  "#{label} #{summary}"
end
total_tracked_time() click to toggle source
# File lib/durt/issue.rb, line 35
def total_tracked_time
  sessions.map(&:tracked_time).sum
end
tracking?() click to toggle source
# File lib/durt/issue.rb, line 14
def tracking?
  !sessions.tracking.empty?
end
underestimated?() click to toggle source
# File lib/durt/issue.rb, line 49
def underestimated?
  estimation_ratio < 1
end

Private Instance Methods

sanitize_summary() click to toggle source
# File lib/durt/issue.rb, line 88
def sanitize_summary
  return unless summary

  self.summary = summary.gsub(/[^\d\w\s,]/i, '')
end