class String

Public Instance Methods

camelize() click to toggle source
# File lib/hammer_cli/utils.rb, line 19
def camelize()
  return self if self !~ /_/ && self =~ /[A-Z]+.*/
  split('_').map{|e| e.capitalize}.join
end
constantize() click to toggle source
# File lib/hammer_cli/utils.rb, line 38
def constantize
  raise NameError, "Can't constantize empty string" if self.empty?
  HammerCLI.constant_path(self)[-1]
end
format(params) click to toggle source
# File lib/hammer_cli/utils.rb, line 5
def format(params)
  if params.is_a? Hash
    array_params = self.scan(/%[<{]([^>}]*)[>}]/).collect do |name|
      name = name[0]
      params[name.to_s] || params[name.to_sym]
    end
    self.gsub(/%[<]([^>]*)[>]/, '%')
        .gsub(/%[{]([^}]*)[}]/, '%s')
        .gsub(/\%(\W?[^bBdiouxXeEfgGaAcps])/, '%%\1') % array_params
  else
    self.gsub(/\%(\W?[^bBdiouxXeEfgGaAcps])/, '%%\1') % params
  end
end
indent_with(indent_str) click to toggle source
# File lib/hammer_cli/utils.rb, line 24
def indent_with(indent_str)
  gsub(/^/, indent_str)
end
underscore() click to toggle source
# File lib/hammer_cli/utils.rb, line 28
def underscore
  word = self.dup
  word.gsub!(/::/, '/')
  word.gsub!(/([A-Z]+)([A-Z][a-z])/,'\1_\2')
  word.gsub!(/([a-z\d])([A-Z])/,'\1_\2')
  word.tr!("-", "_")
  word.downcase!
  word
end
wrap(line_width: 80, break_sequence: "\n") click to toggle source

Rails implementation: github.com/rails/rails/blob/main/actionview/lib/action_view/helpers/text_helper.rb#L260

# File lib/hammer_cli/utils.rb, line 44
def wrap(line_width: 80, break_sequence: "\n")
  split("\n").collect! do |line|
    line.length > line_width ? line.gsub(/(.{1,#{line_width}})(\s+|$)/, "\\1#{break_sequence}").strip : line
  end * break_sequence
end