Class: Enviera::Utils
- Inherits:
-
Object
- Object
- Enviera::Utils
- Defined in:
- lib/enviera/utils.rb
Class Method Summary collapse
- .camelcase(string) ⇒ Object
- .colorize(message, color) ⇒ Object
- .confirm?(message) ⇒ Boolean
- .debug(messageinfo) ⇒ Object
- .find_all_subclasses_of(args) ⇒ Object
- .find_closest_class(args) ⇒ Object
- .info(messageinfo) ⇒ Object
- .print_message(args) ⇒ Object
- .read_password ⇒ Object
- .require_dir(classdir) ⇒ Object
- .snakecase(string) ⇒ Object
- .structure_message(messageinfo) ⇒ Object
- .trace(messageinfo) ⇒ Object
- .warn(messageinfo) ⇒ Object
Class Method Details
.camelcase(string) ⇒ Object
18 19 20 21 |
# File 'lib/enviera/utils.rb', line 18 def self.camelcase string return string if string !~ /_/ && string =~ /[A-Z]+.*/ string.split('_').map{|e| e.capitalize}.join end |
.colorize(message, color) ⇒ Object
108 109 110 111 112 113 114 115 116 117 118 119 120 121 |
# File 'lib/enviera/utils.rb', line 108 def self.colorize , color suffix = "\e[0m" prefix = case color when :red "\e[31m" when :green "\e[32m" when :blue "\e[34m" else #:white "\e[0m" end "#{prefix}#{}#{suffix}" end |
.confirm?(message) ⇒ Boolean
9 10 11 12 13 14 15 16 |
# File 'lib/enviera/utils.rb', line 9 def self.confirm? result = ask("#{} (y/N): ") if result.downcase == "y" or result.downcase == "yes" true else false end end |
.debug(messageinfo) ⇒ Object
91 92 93 |
# File 'lib/enviera/utils.rb', line 91 def self.debug self.({ :message => self.( ), :enviera_loglevel => :debug, :cli_color => :green, :threshold => 1 }) end |
.find_all_subclasses_of(args) ⇒ Object
53 54 55 56 57 58 59 60 61 |
# File 'lib/enviera/utils.rb', line 53 def self.find_all_subclasses_of args parent_class = args[ :parent_class ] constants = parent_class.constants candidates = [] constants.each do | candidate | candidates << candidate.to_s.split('::').last if parent_class.const_get(candidate).class.to_s == "Class" end candidates end |
.find_closest_class(args) ⇒ Object
28 29 30 31 32 33 34 35 36 37 38 39 40 41 |
# File 'lib/enviera/utils.rb', line 28 def self.find_closest_class args parent_class = args[ :parent_class ] class_name = args[ :class_name ] constants = parent_class.constants candidates = [] constants.each do | candidate | candidates << candidate.to_s if candidate.to_s.downcase == class_name.downcase end if candidates.count > 0 parent_class.const_get candidates.first else nil end end |
.info(messageinfo) ⇒ Object
87 88 89 |
# File 'lib/enviera/utils.rb', line 87 def self.info self.({ :message => self.( ), :enviera_loglevel => :debug, :cli_color => :white, :threshold => 0 }) end |
.print_message(args) ⇒ Object
99 100 101 102 103 104 105 106 |
# File 'lib/enviera/utils.rb', line 99 def self.( args ) = args[:message] ||= "" enviera_loglevel = args[:enviera_loglevel] ||= :debug cli_color = args[:cli_color] ||= :blue threshold = args[:threshold] STDERR.puts self.colorize( , cli_color ) if threshold.nil? or Enviera.verbosity_level > threshold end |
.read_password ⇒ Object
5 6 7 |
# File 'lib/enviera/utils.rb', line 5 def self.read_password ask("Enter password: ") {|q| q.echo = "*" } end |
.require_dir(classdir) ⇒ Object
43 44 45 46 47 48 49 50 51 |
# File 'lib/enviera/utils.rb', line 43 def self.require_dir classdir num_class_hierarchy_levels = self.to_s.split("::").count - 1 root_folder = File.dirname(__FILE__) + "/" + Array.new(num_class_hierarchy_levels).fill("..").join("/") class_folder = root_folder + "/" + classdir Dir[File.("#{class_folder}/*.rb")].uniq.each do |file| self.trace "Requiring file: #{file}" require file end end |
.snakecase(string) ⇒ Object
23 24 25 26 |
# File 'lib/enviera/utils.rb', line 23 def self.snakecase string return string if string !~ /[A-Z]/ string.split(/(?=[A-Z])/).collect {|x| x.downcase}.join("_") end |
.structure_message(messageinfo) ⇒ Object
63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 |
# File 'lib/enviera/utils.rb', line 63 def self. = {:from => "enviera-core"} case .class.to_s when 'Hash' .merge!() else .merge!({:msg => .to_s}) end [:prefix] = "[#{[:from]}]" [:spacer] = " #{' ' * [:from].length} " formatted_output = [:msg].split("\n").each_with_index.map do |line, index| if index == 0 "#{[:prefix]} #{line}" else "#{[:spacer]} #{line}" end end formatted_output.join "\n" end |
.trace(messageinfo) ⇒ Object
95 96 97 |
# File 'lib/enviera/utils.rb', line 95 def self.trace self.({ :message => self.( ), :enviera_loglevel => :debug, :cli_color => :blue, :threshold => 2 }) end |
.warn(messageinfo) ⇒ Object
83 84 85 |
# File 'lib/enviera/utils.rb', line 83 def self.warn self.({ :message => self.( ), :enviera_loglevel => :warn, :cli_color => :red }) end |