Module: Aquarium::Utils::NameUtils

Defined in:
lib/aquarium/utils/name_utils.rb

Overview

NameUtils

Convert various strings, symbols, object ids, etc. into valid “names” that can be used as method names, etc.

Constant Summary collapse

@@char_expr_map =
{
  '='  => '_equal_',
  '?'  => '_questionmark_',
  '!'  => '_exclamationmark_',
  '~'  => '_tilde_',
  '-'  => '_minus_',
  '+'  => '_plus_',
  '/'  => '_slash_',
  '*'  => '_star_',
  '<'  => '_lessthan_',
  '>'  => '_greaterthan_',
  '<<' => '_leftshift_',
  '>>' => '_rightshift_',
  '=~' => '_matches_',
  '%'  => '_percent_',
  '^'  => '_caret_',
  '[]' => '_brackets_',
  '&'  => '_ampersand_',
  '|'  => '_pipe_',
  '`'  => '_backtick_'
}

Class Method Summary collapse

Class Method Details

.make_type_or_object_key(type_or_object) ⇒ Object



32
33
34
35
36
37
38
# File 'lib/aquarium/utils/name_utils.rb', line 32

def self.make_type_or_object_key type_or_object
  if Aquarium::Utils::TypeUtils.is_type?(type_or_object) 
    make_valid_type_name type_or_object
  else
    make_valid_object_name type_or_object
  end
end

.make_valid_attr_name_from_method_name(method_name) ⇒ Object



53
54
55
56
57
58
59
# File 'lib/aquarium/utils/name_utils.rb', line 53

def self.make_valid_attr_name_from_method_name method_name
  new_name = method_name.to_s
  @@char_expr_map.keys.sort{|x,y| y.length <=> x.length}.each do |expr|
    new_name.gsub! expr, @@char_expr_map[expr]
  end
  new_name.intern
end

.make_valid_object_id_name(object_id) ⇒ Object

Fixes Tracker #13864.



49
50
51
# File 'lib/aquarium/utils/name_utils.rb', line 49

def self.make_valid_object_id_name object_id
  object_id.to_s.gsub(/^-/, "_neg_")
end

.make_valid_object_name(type_or_object) ⇒ Object



44
45
46
# File 'lib/aquarium/utils/name_utils.rb', line 44

def self.make_valid_object_name type_or_object
  "#{make_valid_type_name(type_or_object.class)}_#{make_valid_object_id_name(type_or_object.object_id)}"
end

.make_valid_type_name(type) ⇒ Object



40
41
42
# File 'lib/aquarium/utils/name_utils.rb', line 40

def self.make_valid_type_name type
  type.name.gsub(/:/, '_')
end