class Hiera::Backend::Eyaml::Utils

Public Class Methods

camelcase(string) click to toggle source
# File lib/hiera/backend/eyaml/utils.rb, line 9
def self.camelcase(string)
  return string if string !~ /_/ && string =~ /[A-Z]+.*/

  string.split('_').map { |e| e.capitalize }.join
end
convert_to_utf_8(string) click to toggle source
# File lib/hiera/backend/eyaml/utils.rb, line 58
def self.convert_to_utf_8(string)
  orig_encoding = string.encoding
  return string if orig_encoding == Encoding::UTF_8

  string.dup.force_encoding(Encoding::UTF_8)
rescue EncodingError => e
  warn "Unable to encode to \"Encoding::UTF_8\" using the original \"#{orig_encoding}\""
  string
end
find_all_subclasses_of(args) click to toggle source
# File lib/hiera/backend/eyaml/utils.rb, line 44
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).instance_of?(::Class)
  end
  candidates
end
find_closest_class(args) click to toggle source
# File lib/hiera/backend/eyaml/utils.rb, line 21
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
  return unless candidates.count > 0

  parent_class.const_get candidates.first
end
hiera?() click to toggle source
# File lib/hiera/backend/eyaml/utils.rb, line 54
def self.hiera?
  'hiera'.eql? Eyaml::Options[:source]
end
require_dir(classdir) click to toggle source
# File lib/hiera/backend/eyaml/utils.rb, line 34
def self.require_dir(classdir)
  num_class_hierarchy_levels = 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.expand_path("#{class_folder}/*.rb")].uniq.each do |file|
    LoggingHelper.trace "Requiring file: #{file}"
    require file
  end
end
snakecase(string) click to toggle source
# File lib/hiera/backend/eyaml/utils.rb, line 15
def self.snakecase(string)
  return string unless /[A-Z]/.match?(string)

  string.split(/(?=[A-Z])/).collect { |x| x.downcase }.join('_')
end