Parent

Class/Module Index [+]

Quicksearch

RGen::Serializer::QualifiedNameProvider

simple identifier calculation based on qualified names prerequisits:

Public Class Methods

new(options={}) click to toggle source
# File lib/rgen/serializer/qualified_name_provider.rb, line 12
def initialize(options={})
  @qualified_name_cache = {}
  @attribute_name = options[:attribute_name] || "name"
  @separator = options[:separator] || "/"
  @leading_separator = options.has_key?(:leading_separator) ? options[:leading_separator] : true 
end

Public Instance Methods

identifier(element) click to toggle source
# File lib/rgen/serializer/qualified_name_provider.rb, line 19
def identifier(element)
  (element.is_a?(RGen::MetamodelBuilder::MMProxy) && element.targetIdentifier) || qualified_name(element)
end
qualified_name(element) click to toggle source
# File lib/rgen/serializer/qualified_name_provider.rb, line 23
def qualified_name(element)
  return @qualified_name_cache[element] if @qualified_name_cache[element]
  localIdent = ((element.respond_to?(@attribute_name) && element.getGeneric(@attribute_name)) || "").strip
  parentRef = element.class.ecore.eAllReferences.select{|r| r.eOpposite && r.eOpposite.containment}.first
  parent = parentRef && element.getGeneric(parentRef.name)
  if parent
    if localIdent.size > 0
      parentIdent = qualified_name(parent)
      result = parentIdent + @separator + localIdent
    else
      result = qualified_name(parent)
    end
  else
    result = (@leading_separator ? @separator : "") + localIdent
  end
  @qualified_name_cache[element] = result
end

[Validate]

Generated with the Darkfish Rdoc Generator 2.