123456789_123456789_123456789_123456789_123456789_

Class: Bundler::Thor::Shell::HTML

Relationships & Source Files
Super Chains via Extension / Inclusion / Inheritance
Class Chain:
self, Basic
Instance Chain:
self, Basic
Inherits: Bundler::Thor::Shell::Basic
Defined in: lib/bundler/vendor/thor/lib/thor/shell/html.rb

Overview

Inherit from Basic and add set_color behavior. Check Basic to see all available methods.

Constant Summary

Basic - Inherited

DEFAULT_TERMINAL_WIDTH

Class Method Summary

Basic - Inherited

.new

Initialize base, mute and padding to nil.

Instance Attribute Summary

Basic - Inherited

#base,
#mute

Mute everything that’s inside given block.

#mute?

Check if base is muted.

#padding,
#padding=

Sets the output padding, not allowing less than zero values.

#can_display_colors?, #unix?, #quiet?

Instance Method Summary

Basic - Inherited

#ask

Asks something to the user and receives a response.

#error

Called if something goes wrong during the execution.

#file_collision

Deals with file collision and returns true if the file should be overwritten and false otherwise.

#indent

Sets the output padding while executing a block and resets it.

#no?

Make a question the to user and returns true if the user replies “n” or “no”.

#print_in_columns

Prints values in columns.

#print_table

Prints a table.

#print_wrapped

Prints a long string, word-wrapping the text to the current width of the terminal display.

#say

Say (print) something to the user.

#say_error

Say (print) an error to the user.

#say_status

Say a status with the given color and appends the message.

#terminal_width

This code was copied from Rake, available under MIT-LICENSE Copyright © 2003, 2004 Jim Weirich.

#yes?

Make a question the to user and returns true if the user replies “y” or “yes”.

#answer_match,
#as_unicode

See additional method definition at line 443.

#ask_filtered, #ask_simply,
#dynamic_width

Calculate the dynamic width of the terminal.

#dynamic_width_stty, #dynamic_width_tput, #lookup_color, #prepare_message, #stderr, #stdout, #truncate,
#set_color

Apply color to the given string with optional bold.

#file_collision_help, #git_merge_tool, #is?, #merge, #merge_tool, #show_diff

Constructor Details

This class inherits a constructor from Bundler::Thor::Shell::Basic

Instance Attribute Details

#can_display_colors?Boolean (readonly, protected)

[ GitHub ]

  
# File 'lib/bundler/vendor/thor/lib/thor/shell/html.rb', line 76

def can_display_colors?
  true
end

#diff_lcs_loaded?Boolean (readonly, protected)

This method is for internal use only.

Check if Diff::LCS is loaded. If it is, use it to create pretty output for diff.

[ GitHub ]

  
# File 'lib/bundler/vendor/thor/lib/thor/shell/html.rb', line 113

def diff_lcs_loaded? #:nodoc:
  return true if defined?(Diff::LCS)
  return @diff_lcs_loaded unless @diff_lcs_loaded.nil?

  @diff_lcs_loaded = begin
    require "diff/lcs"
    true
  rescue LoadError
    false
  end
end

Instance Method Details

#ask(statement, color = nil)

Ask something to the user and receives a response.

Example

ask(“What is your name?”)

TODO: Implement #ask for HTML

Raises:

  • (NotImplementedError)
[ GitHub ]

  
# File 'lib/bundler/vendor/thor/lib/thor/shell/html.rb', line 70

def ask(statement, color = nil)
  raise NotImplementedError, "Implement #ask for Bundler::Thor::Shell::HTML"
end

#output_diff_line(diff) (protected)

This method is for internal use only.
[ GitHub ]

  
# File 'lib/bundler/vendor/thor/lib/thor/shell/html.rb', line 96

def output_diff_line(diff) #:nodoc:
  case diff.action
  when "-"
    say "- #{diff.old_element.chomp}", :red, true
  when "+"
    say "+ #{diff.new_element.chomp}", :green, true
  when "!"
    say "- #{diff.old_element.chomp}", :red, true
    say "+ #{diff.new_element.chomp}", :green, true
  else
    say "  #{diff.old_element.chomp}", nil, true
  end
end

#set_color(string, *colors)

Set color by using a string or one of the defined constants. If a third option is set to true, it also adds bold to the string. This is based on Highline implementation and it automatically appends CLEAR to the end of the returned String.

[ GitHub ]

  
# File 'lib/bundler/vendor/thor/lib/thor/shell/html.rb', line 51

def set_color(string, *colors)
  if colors.all? { |color| color.is_a?(Symbol) || color.is_a?(String) }
    html_colors = colors.map { |color| lookup_color(color) }
    "<span style=\"#{html_colors.join('; ')};\">#{Bundler::Thor::Util.escape_html(string)}</span>"
  else
    color, bold = colors
    html_color = self.class.const_get(color.to_s.upcase) if color.is_a?(Symbol)
    styles = [html_color]
    styles << BOLD if bold
    "<span style=\"#{styles.join('; ')};\">#{Bundler::Thor::Util.escape_html(string)}</span>"
  end
end

#show_diff(destination, content) (protected)

This method is for internal use only.

Overwrite show_diff to show diff with colors if Diff::LCS is available.

[ GitHub ]

  
# File 'lib/bundler/vendor/thor/lib/thor/shell/html.rb', line 83

def show_diff(destination, content) #:nodoc:
  if diff_lcs_loaded? && ENV["THOR_DIFF"].nil? && ENV["RAILS_DIFF"].nil?
    actual  = File.binread(destination).to_s.split("\n")
    content = content.to_s.split("\n")

    Diff::LCS.sdiff(actual, content).each do |diff|
      output_diff_line(diff)
    end
  else
    super
  end
end