piece_of_wax 1.0.0.rc1 → 1.0.0.rc2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 818b72b11bd06930c11e17c07e72512f9a4b1864dfb00090c681226414b720a3
4
- data.tar.gz: f2423eb394952af0fadd964245b4637e5e2b58267933442459ea89dbe3203640
3
+ metadata.gz: a74b9ba7e24019636d06f341969473045ebf87fabd886800556fb90993865061
4
+ data.tar.gz: 0520f53b6c20f6cf5531dda22c64caa663a7d7d339b445d66d31fdac69e69dcf
5
5
  SHA512:
6
- metadata.gz: 105bd336b6d5d5ed58b53263fe05ed542f3b1dc35c2d346239f469d2935a9e73b2ad05249db8e984d28843b077b3a1850f5ab456825a43813b3673c48294bb51
7
- data.tar.gz: 20b656e3e4fb4bb5a53e69ee010a0bcf87845479e437c267a549855cfca70be9a12393d5787c2d507fc66526d499e47599e36a5fc44f0d9e8fa7bb05446ad709
6
+ metadata.gz: 9a657cfce298c01f7a52198035722c4b7c3792ff76c17c1ad9b8908a5e5b6fff0ecc3c0bbd1ec2828bb1cf36f088b1ad4ed7950d9c78bdb79986d4e785a532db
7
+ data.tar.gz: 91d2933830d33038a972ceee8564929474b2c679e824802f40b6597219e91e257ad063874f9c60a39fe4b0d1e97c67294c1931e0ff0aa917b6d5868d3d688825
@@ -0,0 +1,24 @@
1
+ require 'forwardable'
2
+ require 'singleton'
3
+
4
+ module PieceOfWax
5
+ class CLIOptions
6
+ include Singleton
7
+ extend Forwardable
8
+
9
+ def [](key)
10
+ options[key]
11
+ end
12
+
13
+ def set(opts)
14
+ fail 'CLIOptions is an immutable singleton; #set can only be called once per program execution' if options.any?
15
+ @options = opts
16
+ end
17
+
18
+ private
19
+
20
+ def options
21
+ @options || {}
22
+ end
23
+ end
24
+ end
@@ -0,0 +1,28 @@
1
+ require 'piece_of_wax/cli_options'
2
+ require 'time'
3
+
4
+ module PieceOfWax
5
+ class DateTime < ::Time
6
+ def self.safe_parse(arg)
7
+ # NOTE: calling to_s so method is safe for non-string args
8
+ str = arg.to_s
9
+ begin
10
+ parse(str)
11
+ rescue ArgumentError
12
+ nil
13
+ end
14
+ end
15
+
16
+ def self.current_date
17
+ # NOTE: Possible that current_date returns two different values over course of
18
+ # same piece_of_wax invocation (if run at midnight.) I consider this
19
+ # to be a major edge case with minimal consequences, so I'm not
20
+ # going to the trouble of memoizing at this point. - Ben S.
21
+ Time.now.to_date
22
+ end
23
+
24
+ def self.current_time
25
+ Time.now
26
+ end
27
+ end
28
+ end
@@ -0,0 +1,20 @@
1
+ module PieceOfWax
2
+ module DateTimeDecorator
3
+ class ErrorMessageDisplay
4
+ def initialize(date_time)
5
+ @date_time = date_time
6
+ end
7
+
8
+ def to_s
9
+ case @date_time.to_date
10
+ when @date_time.class.current_date
11
+ 'today'
12
+ when @date_time.class.current_date.prev_day
13
+ 'yesterday'
14
+ else
15
+ @date_time.strftime('%Y-%-m-%-d')
16
+ end
17
+ end
18
+ end
19
+ end
20
+ end
@@ -0,0 +1,17 @@
1
+ module PieceOfWax
2
+ module DateTimeDecorator
3
+ class ReadDisplay
4
+ def initialize(date_time)
5
+ @date_time = date_time
6
+ end
7
+
8
+ def to_s
9
+ if CLIOptions.instance[:military]
10
+ @date_time.strftime('%H:%M')
11
+ else
12
+ @date_time.strftime('%I:%M %p')
13
+ end
14
+ end
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,21 @@
1
+ module PieceOfWax
2
+ class FileIO
3
+ def initialize(filename)
4
+ @filename = filename
5
+ end
6
+
7
+ def read
8
+ begin
9
+ File.read(@filename)
10
+ rescue Errno::ENOENT
11
+ nil
12
+ end
13
+ end
14
+
15
+ def overwrite_with(str)
16
+ File.open(@filename, "w") do |f|
17
+ f.write(str)
18
+ end
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,18 @@
1
+ require 'piece_of_wax/date_time'
2
+ require "piece_of_wax/date_time_decorator/read_display"
3
+
4
+ module PieceOfWax
5
+ module OutputLine
6
+ class Activity
7
+ def initialize(start_time_str, end_time_str, description)
8
+ @start_time = DateTimeDecorator::ReadDisplay.new(DateTime.safe_parse(start_time_str))
9
+ @end_time = DateTimeDecorator::ReadDisplay.new(DateTime.safe_parse(end_time_str))
10
+ @description = description
11
+ end
12
+
13
+ def to_s
14
+ "#{@start_time}-#{@end_time} - #{@description}"
15
+ end
16
+ end
17
+ end
18
+ end
@@ -0,0 +1,15 @@
1
+ require 'piece_of_wax/date_time'
2
+
3
+ module PieceOfWax
4
+ module OutputLine
5
+ class Date
6
+ def initialize(datetime_str)
7
+ @date = DateTime.safe_parse(datetime_str)
8
+ end
9
+
10
+ def to_s
11
+ @date.strftime('%-m/%-d/%y')
12
+ end
13
+ end
14
+ end
15
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: piece_of_wax
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0.rc1
4
+ version: 1.0.0.rc2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ben Stegeman
@@ -117,7 +117,14 @@ extra_rdoc_files: []
117
117
  files:
118
118
  - bin/piece_of_wax
119
119
  - lib/piece_of_wax.rb
120
+ - lib/piece_of_wax/cli_options.rb
121
+ - lib/piece_of_wax/date_time.rb
122
+ - lib/piece_of_wax/date_time_decorator/error_message_display.rb
123
+ - lib/piece_of_wax/date_time_decorator/read_display.rb
124
+ - lib/piece_of_wax/file_io.rb
120
125
  - lib/piece_of_wax/logfile.rb
126
+ - lib/piece_of_wax/output_line/activity.rb
127
+ - lib/piece_of_wax/output_line/date.rb
121
128
  homepage:
122
129
  licenses:
123
130
  - MIT