blob: c1406d06f62b61020ed83cbe7f2170d11bec54f4 [file] [log] [blame]
/*
* Copyright (c) 2011 Google Inc.
*
* All rights reserved. This program and the accompanying materials are made available under the terms of the Eclipse
* Public License v1.0 which accompanies this distribution, and is available at
*
* http://www.eclipse.org/legal/epl-v10.html
*/
package com.google.eclipse.protobuf.naming;
import com.google.eclipse.protobuf.model.util.Options;
import com.google.eclipse.protobuf.protobuf.*;
import com.google.inject.*;
import org.eclipse.emf.ecore.EObject;
/**
* Utility methods related to naming.
*
* @author alruiz@google.com (Alex Ruiz)
*/
@Singleton
public class Naming {
@Inject private NameResolver nameResolver;
@Inject private Options options;
/**
* Returns the name of the given object. If the name will be used for an option and if the given object is a
* <code>{@link Group}</code>, this method will return the name of the group in lower case.
* @param e the given object.
* @param usage indicates how the returned name will be used.
* @return the name of the given object.
*/
String nameOf(EObject e, NamingUsage usage) {
if (NamingUsage.DEFAULT.equals(usage)) return nameResolver.nameOf(e);
if (e instanceof IndexedElement) return options.nameForOption((IndexedElement) e);
return nameResolver.nameOf(e);
}
/**
* Indicates if the name to obtain will be used by a type (default) or an option.
*
* @author alruiz@google.com (Alex Ruiz)
*/
static enum NamingUsage {
DEFAULT, OPTION;
}
}