Class: SnippetCli::ReplacementWizard

Inherits:
Object
  • Object
show all
Includes:
ReplacementTextCollector, ReplacementValidator, WizardHelpers::PromptHelpers, WizardHelpers::ValidationLoop
Defined in:
lib/snippet_cli/replacement_wizard.rb

Overview

Handles all interactive replacement collection for the new-snippet wizard. Keeps Gum/UI calls out of NewWorkflow so orchestration and domain logic can be read and tested without UI concerns.

Constant Summary

Constants included from ReplacementTextCollector

SnippetCli::ReplacementTextCollector::EMPTY_REPLACE_WARNING

Instance Method Summary collapse

Methods included from WizardHelpers::PromptHelpers

#collect_search_terms, #confirm!, #list_confirm!, #optional_prompt, #prompt!

Methods included from WizardHelpers::ValidationLoop

#prompt_non_empty, #prompt_until_valid

Instance Method Details

#collect(vars, global_var_names: []) ⇒ Object

Collects a replacement hash (type + value) with var validation. Returns e.g. { replace: ‘…’ } or { markdown: ‘…’ } or { image_path: ‘…’, vars: [] }.



22
23
24
# File 'lib/snippet_cli/replacement_wizard.rb', line 22

def collect(vars, global_var_names: [])
  collect_replacement(vars, global_var_names: global_var_names)
end

#collect_advanced_optionsObject

Collects advanced snippet options (label, comment, search_terms, word, propagate_case). Returns a hash with all keys present (nil/false/[] for declined options).



28
29
30
31
32
# File 'lib/snippet_cli/replacement_wizard.rb', line 28

def collect_advanced_options
  return { label: nil, comment: nil, search_terms: [] } unless confirm!('Show advanced options?')

  advanced_options_hash
end

#collect_plain_replaceObject

Collects plain replacement text only (used for –bare mode).



35
36
37
# File 'lib/snippet_cli/replacement_wizard.rb', line 35

def collect_plain_replace
  collect_replace([])
end