Guest User

Untitled

a guest
Feb 21st, 2018
69
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.95 KB | None | 0 0
  1. #!/usr/bin/env ruby -wKU
  2.  
  3. require 'yaml'
  4.  
  5. class TimeTrack
  6.  
  7. def initialize(project_name)
  8. @project_name = project_name
  9. @time_list = project_filename
  10.  
  11. prepare_file(@time_list)
  12.  
  13. all_times = YAML.load(open(@time_list))
  14. all_times = [] unless all_times
  15. all_times << time_track
  16.  
  17. open(@time_list, 'w') {|f| f << all_times.to_yaml}
  18. add_times
  19. end
  20.  
  21. def time_get
  22. puts "Please hit Enter to start time tracking"
  23.  
  24. if gets.chomp == ""
  25. Time.now
  26. else
  27. time_get
  28. end
  29. end
  30.  
  31. def time_stop
  32. puts "Please hit Enter again to stop time tracking"
  33.  
  34. if gets.chomp == ""
  35. Time.now
  36. else
  37. time_stop
  38. end
  39. end
  40.  
  41. def time_track
  42. @start_time = time_get
  43. puts "Time tracking started at #{@start_time}"
  44.  
  45. @end_time = time_stop
  46. puts "Time tracking ended at #{@end_time}"
  47.  
  48. @end_time - @start_time
  49. end
  50.  
  51. def time_format(time)
  52. Time.at(time).gmtime.strftime('%H:%M:%S')
  53. end
  54.  
  55. def add_times
  56. total_filename = "#{@time_list}"
  57. totaled_times = YAML.load(open(@time_list))
  58. total = totaled_times.inject(0) {|sum, time| sum = sum + time}
  59. open(project_total_filename, 'w') {|f| f << time_format(total)}
  60. end
  61.  
  62. private
  63.  
  64. def project_total_filename
  65. @project_name.downcase.gsub(" ", "_") + "_total.yml"
  66. end
  67.  
  68. def project_filename
  69. @project_name.downcase.gsub(" ", "_") + ".yml"
  70. end
  71.  
  72. def prepare_file(filename)
  73. if !File.exist?(filename)
  74. File.new(filename, 'w')
  75. end
  76. end
  77. end
  78.  
  79. class Project
  80. def get_project_name
  81. puts "Please enter a name for this project"
  82. @project_name = gets.chomp
  83. puts "#{@project_name} has been created."
  84. puts "Do you want to start tracking time for this project?"
  85. puts "Please answer yes or no"
  86. if gets.chomp == "yes"
  87. TimeTrack.new(@project_name)
  88. end
  89. end
  90. end
  91.  
  92. project = Project.new
  93. project.get_project_name
Add Comment
Please, Sign In to add comment