Class: Ace::Tmux::Molecules::SessionBuilder

Inherits:
Object
  • Object
show all
Defined in:
lib/ace/tmux/molecules/session_builder.rb

Overview

Combines PresetLoader + PresetResolver to build fully resolved models

Loads a session preset, resolves all nested window/pane presets, and constructs the model hierarchy (Session → Window → Pane).

Instance Method Summary collapse

Constructor Details

#initialize(preset_loader:) ⇒ SessionBuilder

Returns a new instance of SessionBuilder.

Parameters:

  • preset_loader (PresetLoader)

    Loader for finding presets



12
13
14
# File 'lib/ace/tmux/molecules/session_builder.rb', line 12

def initialize(preset_loader:)
  @preset_loader = preset_loader
end

Instance Method Details

#build(preset_name) ⇒ Models::Session

Build a fully resolved Session model from a preset name

Parameters:

  • preset_name (String)

    Session preset name

Returns:

Raises:



21
22
23
24
25
26
27
28
29
30
31
32
33
# File 'lib/ace/tmux/molecules/session_builder.rb', line 21

def build(preset_name)
  raw = @preset_loader.load("sessions", preset_name)
  raise PresetNotFoundError, "Session preset not found: #{preset_name}" unless raw

  # Resolve all preset references
  resolved = Atoms::PresetResolver.resolve_session(
    raw,
    window_lookup: @preset_loader.to_lookup("windows"),
    pane_lookup: @preset_loader.to_lookup("panes")
  )

  build_session_model(resolved)
end

#build_window(preset_name) ⇒ Models::Window

Build a fully resolved Window model from a preset name

Parameters:

  • preset_name (String)

    Window preset name

Returns:

Raises:



40
41
42
43
44
45
46
47
48
49
50
# File 'lib/ace/tmux/molecules/session_builder.rb', line 40

def build_window(preset_name)
  raw = @preset_loader.load("windows", preset_name)
  raise PresetNotFoundError, "Window preset not found: #{preset_name}" unless raw

  resolved = Atoms::PresetResolver.resolve_window(
    raw,
    pane_lookup: @preset_loader.to_lookup("panes")
  )

  build_window_model(resolved)
end