Class: WorkLog::Logger
- Inherits:
-
Object
- Object
- WorkLog::Logger
- Defined in:
- lib/work_log/logger.rb
Constant Summary collapse
- HOME_PATH =
ENV['HOME']
- CONFIGURATION_FILE =
HOME_PATH + "/.work_log_gem"
- DEFAULT_LOGFILE =
HOME_PATH + "/work_log.yml"
Instance Attribute Summary collapse
-
#entries ⇒ Object
Returns the value of attribute entries.
-
#logfile ⇒ Object
Returns the value of attribute logfile.
Instance Method Summary collapse
- #add(message, time = DateTime.now) ⇒ Object
-
#initialize(args) ⇒ Logger
constructor
A new instance of Logger.
- #load ⇒ Object
- #load_config ⇒ Object
- #print(entry) ⇒ Object
- #save ⇒ Object
Constructor Details
#initialize(args) ⇒ Logger
Returns a new instance of Logger.
17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 |
# File 'lib/work_log/logger.rb', line 17 def initialize(args) action = args.shift load_config begin load rescue save load end time = args.empty? ? DateTime.now : DateTime.parse((Chronic.parse(args.join(' ')) || DateTime.now).to_s) puts '', '' if action == 'start' || action == 's' add "Work started", time print entries.last elsif action == 'end' || action == 'e' add "Work ended", time print entries.last elsif action == 'all' || action == 'a' entries.each {|e| print e } elsif action == 'week' || action == 'w' puts "Entries for this week:" entries.select{|entry| entry['time'].cwyear == Date.today.cwyear && entry['time'].cweek == Date.today.cweek }.each {|e| print e } elsif action == 'since' puts "Entries since #{args.join(' ')}" entries.select{|entry| entry['time'] > time }.each {|e| print e } elsif action == 'last' print entries.last elsif action == 'undo' removed_entry = entries.pop save puts "Removed the following entry:" print removed_entry else puts "Unknown arguments." end puts '', '' end |
Instance Attribute Details
#entries ⇒ Object
Returns the value of attribute entries.
11 12 13 |
# File 'lib/work_log/logger.rb', line 11 def entries @entries end |
#logfile ⇒ Object
Returns the value of attribute logfile.
10 11 12 |
# File 'lib/work_log/logger.rb', line 10 def logfile @logfile end |
Instance Method Details
#add(message, time = DateTime.now) ⇒ Object
72 73 74 75 76 77 78 |
# File 'lib/work_log/logger.rb', line 72 def add(, time = DateTime.now) @entries << { 'time' => time, 'message' => } save end |
#load ⇒ Object
80 81 82 83 84 85 |
# File 'lib/work_log/logger.rb', line 80 def load file_content = YAML.load_file(logfile) @entries = file_content && file_content['entries'] ? file_content['entries']: [] @entries.each {|entry| entry['time'] = DateTime.parse entry['time'].to_s } @entries end |
#load_config ⇒ Object
61 62 63 64 65 66 |
# File 'lib/work_log/logger.rb', line 61 def load_config return @logfile = DEFAULT_LOGFILE unless File.exist?(CONFIGURATION_FILE) config = YAML::load_file(CONFIGURATION_FILE) @logfile = config['logfile'] ? config['logfile'] : DEFAULT_LOGFILE end |
#print(entry) ⇒ Object
68 69 70 |
# File 'lib/work_log/logger.rb', line 68 def print(entry) puts "#{entry['time'].strftime("%a, %b %d %Y at %H:%M")} -> #{entry['message']}" end |
#save ⇒ Object
87 88 89 90 91 |
# File 'lib/work_log/logger.rb', line 87 def save File.open(logfile, 'w') do |file| file.write YAML.dump({'entries' => entries}) end end |