Sha256: 2783360d05f868c19d7f0a081573760498fe3af30599f09253408c40305a0662

Contents?: true

Size: 1.65 KB

Versions: 5

Compression:

Stored size: 1.65 KB

Contents

require 'aquarium/utils/type_utils'

# Convert various strings, symbols, object ids, etc. into valid "names" that
# can be used as method names, etc.
module Aquarium
  module Utils
    module NameUtils

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

      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

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

      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

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

      def self.make_valid_attr_name_from_method_name method_name
        new_name = method_name.to_s
        @@char_map.each do |char, substitute|
          new_name.gsub! char, substitute
        end
        new_name.intern
      end
    end
  end
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
aquarium-0.2.0 lib/aquarium/utils/name_utils.rb
aquarium-0.1.7 lib/aquarium/utils/name_utils.rb
aquarium-0.1.8 lib/aquarium/utils/name_utils.rb
aquarium-0.3.0 lib/aquarium/utils/name_utils.rb
aquarium-0.3.1 lib/aquarium/utils/name_utils.rb