Class: Hiera::Backend::Eyaml::Utils
- Inherits:
-
Object
- Object
- Hiera::Backend::Eyaml::Utils
- Defined in:
- lib/hiera/backend/eyaml/utils.rb
Class Method Summary collapse
- .camelcase(string) ⇒ Object
- .convert_to_utf_8(string) ⇒ Object
- .find_all_subclasses_of(args) ⇒ Object
- .find_closest_class(args) ⇒ Object
- .hiera? ⇒ Boolean
- .require_dir(classdir) ⇒ Object
- .snakecase(string) ⇒ Object
Class Method Details
.camelcase(string) ⇒ Object
9 10 11 12 13 |
# 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) ⇒ Object
58 59 60 61 62 63 64 65 66 |
# 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) ⇒ Object
44 45 46 47 48 49 50 51 52 |
# 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) ⇒ Object
21 22 23 24 25 26 27 28 29 30 31 32 |
# 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? ⇒ Boolean
54 55 56 |
# File 'lib/hiera/backend/eyaml/utils.rb', line 54 def self.hiera? 'hiera'.eql? Eyaml::Options[:source] end |
.require_dir(classdir) ⇒ Object
34 35 36 37 38 39 40 41 42 |
# 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.("#{class_folder}/*.rb")].uniq.each do |file| LoggingHelper.trace "Requiring file: #{file}" require file end end |
.snakecase(string) ⇒ Object
15 16 17 18 19 |
# 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 |