Class: Ace::TestRunner::Atoms::TimestampGenerator
- Inherits:
-
Object
- Object
- Ace::TestRunner::Atoms::TimestampGenerator
- Defined in:
- lib/ace/test_runner/atoms/timestamp_generator.rb
Overview
Generates Base36 compact IDs for test reports
Uses ace-b36ts to generate 6-character compact IDs (e.g., “i50jj3”) for test report directories and files. Reports are temporary, so no backward compatibility with legacy timestamp format is needed.
Constant Summary collapse
- ISO_FORMAT =
"%Y-%m-%dT%H:%M:%S"
Class Method Summary collapse
-
.detect_format(value) ⇒ Symbol?
Detect the format of an ID string.
Instance Method Summary collapse
-
#directory_name(time = Time.now) ⇒ String
Generate a directory name (alias for generate).
-
#elapsed_time(start_time, end_time = Time.now) ⇒ String
Calculate elapsed time between two times.
-
#filename_timestamp(time = Time.now, extension = nil) ⇒ String
Generate a filename timestamp with optional extension.
-
#generate(time = Time.now) ⇒ String
Generate a Base36 compact ID for the given time.
-
#iso_timestamp(time = Time.now) ⇒ String
Generate an ISO timestamp for human-readable output.
-
#parse(id_str) ⇒ Time?
Parse a Base36 compact ID string to Time.
Class Method Details
.detect_format(value) ⇒ Symbol?
Detect the format of an ID string
83 84 85 |
# File 'lib/ace/test_runner/atoms/timestamp_generator.rb', line 83 def self.detect_format(value) Ace::B36ts.detect_format(value) end |
Instance Method Details
#directory_name(time = Time.now) ⇒ String
Generate a directory name (alias for generate)
45 46 47 |
# File 'lib/ace/test_runner/atoms/timestamp_generator.rb', line 45 def directory_name(time = Time.now) generate(time) end |
#elapsed_time(start_time, end_time = Time.now) ⇒ String
Calculate elapsed time between two times
74 75 76 77 |
# File 'lib/ace/test_runner/atoms/timestamp_generator.rb', line 74 def elapsed_time(start_time, end_time = Time.now) duration = end_time - start_time format_duration(duration) end |
#filename_timestamp(time = Time.now, extension = nil) ⇒ String
Generate a filename timestamp with optional extension
54 55 56 57 |
# File 'lib/ace/test_runner/atoms/timestamp_generator.rb', line 54 def (time = Time.now, extension = nil) base = generate(time) extension ? "#{base}#{extension}" : base end |
#generate(time = Time.now) ⇒ String
Generate a Base36 compact ID for the given time
29 30 31 |
# File 'lib/ace/test_runner/atoms/timestamp_generator.rb', line 29 def generate(time = Time.now) Ace::B36ts.encode(time) end |
#iso_timestamp(time = Time.now) ⇒ String
Generate an ISO timestamp for human-readable output
37 38 39 |
# File 'lib/ace/test_runner/atoms/timestamp_generator.rb', line 37 def (time = Time.now) time.strftime(ISO_FORMAT) end |
#parse(id_str) ⇒ Time?
Parse a Base36 compact ID string to Time
63 64 65 66 67 |
# File 'lib/ace/test_runner/atoms/timestamp_generator.rb', line 63 def parse(id_str) Ace::B36ts.decode(id_str) rescue ArgumentError nil end |