Module: AiCli::Helpers::ScriptEditor
- Defined in:
- lib/aicli/helpers/script_editor.rb
Class Method Summary collapse
- .ask(script) ⇒ Object
- .ask_line(script) ⇒ Object
- .ask_multiline(script) ⇒ Object
- .clear_reline_hook ⇒ Object
- .quit! ⇒ Object
Class Method Details
.ask(script) ⇒ Object
11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
# File 'lib/aicli/helpers/script_editor.rb', line 11 def ask(script) text = script.to_s return nil if text.strip.empty? puts '' puts I18n.t('Edit script') puts Theme.dim(I18n.t('Edit with arrow keys, Enter to confirm, Ctrl+C to cancel')) puts '' if text.include?("\n") ask_multiline(text) else ask_line(text) end rescue Interrupt, TTY::Reader::InputInterrupt quit! ensure clear_reline_hook end |
.ask_line(script) ⇒ Object
31 32 33 34 35 36 37 38 39 40 41 42 43 |
# File 'lib/aicli/helpers/script_editor.rb', line 31 def ask_line(script) require 'reline' Reline.pre_input_hook = proc do Reline.insert_text(script.dup) Reline.pre_input_hook = nil end line = Reline.readline('$ ', true) line&.strip rescue Interrupt quit! end |
.ask_multiline(script) ⇒ Object
45 46 47 48 49 50 51 |
# File 'lib/aicli/helpers/script_editor.rb', line 45 def ask_multiline(script) prompt = Helpers::Theme.prompt(interrupt: :exit) edited = prompt.editor(I18n.t('Edit script'), script, ext: 'sh') edited&.strip rescue TTY::Reader::InputInterrupt quit! end |
.clear_reline_hook ⇒ Object
58 59 60 61 62 |
# File 'lib/aicli/helpers/script_editor.rb', line 58 def clear_reline_hook return unless defined?(Reline) Reline.pre_input_hook = nil end |