Class: Ace::Task::Atoms::TaskIdFormatter

Inherits:
Object
  • Object
show all
Defined in:
lib/ace/task/atoms/task_id_formatter.rb

Overview

Wraps ItemIdFormatter with the “.t.” type marker for tasks.

Examples:

Generate and format a task ID

TaskIdFormatter.generate
# => ItemId(prefix: "8pp", type_marker: "t", suffix: "q7w", formatted_id: "8pp.t.q7w")

Format an existing b36ts ID

TaskIdFormatter.format("8ppq7w")
# => ItemId with formatted_id "8pp.t.q7w"

Constant Summary collapse

TYPE_MARKER =
"t"

Class Method Summary collapse

Class Method Details

.folder_name(formatted_id, slug) ⇒ String

Build folder name from formatted ID and slug

Parameters:

  • formatted_id (String)

    e.g., “8pp.t.q7w”

  • slug (String)

    e.g., “fix-login”

Returns:

  • (String)

    e.g., “8pp.t.q7w-fix-login”



47
48
49
# File 'lib/ace/task/atoms/task_id_formatter.rb', line 47

def self.folder_name(formatted_id, slug)
  Ace::Support::Items::Atoms::ItemIdFormatter.folder_name(formatted_id, slug)
end

.format(raw_b36ts) ⇒ Ace::Support::Items::Models::ItemId

Format an existing 6-char b36ts ID as a task ID

Parameters:

  • raw_b36ts (String)

    6-character b36ts ID

Returns:

  • (Ace::Support::Items::Models::ItemId)


32
33
34
# File 'lib/ace/task/atoms/task_id_formatter.rb', line 32

def self.format(raw_b36ts)
  Ace::Support::Items::Atoms::ItemIdFormatter.split(raw_b36ts, type_marker: TYPE_MARKER)
end

.generate(time = Time.now.utc) ⇒ Ace::Support::Items::Models::ItemId

Generate a new task ID from current time

Parameters:

  • time (Time) (defaults to: Time.now.utc)

    Time to encode (default: now)

Returns:

  • (Ace::Support::Items::Models::ItemId)


24
25
26
27
# File 'lib/ace/task/atoms/task_id_formatter.rb', line 24

def self.generate(time = Time.now.utc)
  raw = Ace::B36ts.encode(time, format: :"2sec")
  Ace::Support::Items::Atoms::ItemIdFormatter.split(raw, type_marker: TYPE_MARKER)
end

.reconstruct(formatted_id) ⇒ String

Reconstruct raw b36ts from a formatted task ID

Parameters:

  • formatted_id (String)

    e.g., “8pp.t.q7w”

Returns:

  • (String)

    Raw 6-char b36ts ID



39
40
41
# File 'lib/ace/task/atoms/task_id_formatter.rb', line 39

def self.reconstruct(formatted_id)
  Ace::Support::Items::Atoms::ItemIdFormatter.reconstruct(formatted_id)
end

.spec_filename(formatted_id, slug) ⇒ String

Build spec filename from formatted ID and slug

Parameters:

  • formatted_id (String)

    e.g., “8pp.t.q7w”

  • slug (String)

    e.g., “fix-login”

Returns:

  • (String)

    e.g., “8pp.t.q7w-fix-login.s.md”



55
56
57
58
# File 'lib/ace/task/atoms/task_id_formatter.rb', line 55

def self.spec_filename(formatted_id, slug)
  base = folder_name(formatted_id, slug)
  "#{base}.s.md"
end