1/* 2 * Copyright (C) 2010 Google Inc. 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 17package com.google.clearsilver.jsilver.functions.structure; 18 19import com.google.clearsilver.jsilver.data.Data; 20import com.google.clearsilver.jsilver.functions.NonEscapingFunction; 21import com.google.clearsilver.jsilver.values.Value; 22import static com.google.clearsilver.jsilver.values.Value.literalConstant; 23import static com.google.clearsilver.jsilver.values.Value.literalValue; 24import com.google.clearsilver.jsilver.values.VariableValue; 25 26/** 27 * Returns the Data variable name for a local variable alias. 28 */ 29public class NameFunction extends NonEscapingFunction { 30 31 /** 32 * @param args A local variable 33 * @return Name (as string) 34 */ 35 public Value execute(Value... args) { 36 Value value = args[0]; 37 if (value instanceof VariableValue) { 38 VariableValue variableValue = (VariableValue) value; 39 Data variable = variableValue.getReference(); 40 if (variable != null) { 41 return literalValue(variable.getSymlink().getName(), variableValue.getEscapeMode(), 42 variableValue.isPartiallyEscaped()); 43 } 44 } 45 return literalConstant("", value); 46 } 47 48} 49