Class: WifiWand::Commands::OutputSupport

Inherits:
Object
  • Object
show all
Includes:
OutputFormatter
Defined in:
lib/wifi_wand/commands/output_support.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Methods included from OutputFormatter

#colorize_network_name, #colorize_status, #colorize_text, #colorize_values, #format_boolean_status, #format_internet_status, #format_object, #post_process, #post_processor, #status_line

Constructor Details

#initialize(cli) ⇒ OutputSupport

Returns a new instance of OutputSupport.



12
13
14
# File 'lib/wifi_wand/commands/output_support.rb', line 12

def initialize(cli)
  @cli = cli
end

Instance Attribute Details

#cliObject (readonly)

Returns the value of attribute cli.



10
11
12
# File 'lib/wifi_wand/commands/output_support.rb', line 10

def cli
  @cli
end

Instance Method Details

#available_networks_empty_messageObject



46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
# File 'lib/wifi_wand/commands/output_support.rb', line 46

def available_networks_empty_message
  if cli.model.is_a?(WifiWand::Platforms::Mac::Model)
    <<~MESSAGE.chomp
      No visible networks were found.
      On macOS 14+, this can mean the macOS helper application could not get usable
      Location Services authorization for WiFi SSIDs.
    MESSAGE
  elsif cli.model.is_a?(WifiWand::Platforms::Ubuntu::Model)
    <<~MESSAGE.chomp
      No visible networks were found.
      If you expect to see networks, try running `nmcli device wifi rescan` or check your hardware/drivers.
    MESSAGE
  else
    'No visible networks were found.'
  end
end

#display_width(text) ⇒ Object



42
43
44
# File 'lib/wifi_wand/commands/output_support.rb', line 42

def display_width(text)
  strip_ansi(text).scan(/\X/).sum { |grapheme| grapheme_display_width(grapheme) }
end

#handle_output(data, human_readable_string_producer) ⇒ Object



19
20
21
22
23
24
25
26
27
28
29
30
31
# File 'lib/wifi_wand/commands/output_support.rb', line 19

def handle_output(data, human_readable_string_producer)
  if cli.interactive_mode
    data
  else
    output = if cli.options.post_processor
      post_process(data)
    else
      human_readable_string_producer.call
    end

    cli.out_stream.puts output unless output.to_s.empty?
  end
end

#optionsObject



17
# File 'lib/wifi_wand/commands/output_support.rb', line 17

def options    = cli.options

#out_streamObject



16
# File 'lib/wifi_wand/commands/output_support.rb', line 16

def out_stream = cli.out_stream

#status_progress_modeObject



33
34
35
36
37
38
# File 'lib/wifi_wand/commands/output_support.rb', line 33

def status_progress_mode
  return :none if cli.options.post_processor
  return :none unless cli.out_stream.respond_to?(:tty?) && cli.out_stream.tty?

  :inline
end

#strip_ansi(text) ⇒ Object



40
# File 'lib/wifi_wand/commands/output_support.rb', line 40

def strip_ansi(text) = text.to_s.gsub(/\e\[[\d;]*m/, '')