|  | /* Copyright (C) 2011  Jan Källman | 
|  | * | 
|  | * This library is free software; you can redistribute it and/or | 
|  | * modify it under the terms of the GNU Lesser General Public | 
|  | * License as published by the Free Software Foundation; either | 
|  | * version 2.1 of the License, or (at your option) any later version. | 
|  |  | 
|  | * This library is distributed in the hope that it will be useful, | 
|  | * but WITHOUT ANY WARRANTY; without even the implied warranty of | 
|  | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. | 
|  | * See the GNU Lesser General Public License for more details. | 
|  | * | 
|  | * The GNU Lesser General Public License can be viewed at http://www.opensource.org/licenses/lgpl-license.php | 
|  | * If you unfamiliar with this license or have questions about it, here is an http://www.gnu.org/licenses/gpl-faq.html | 
|  | * | 
|  | * All code and executables are provided "as is" with no warranty either express or implied. | 
|  | * The author accepts no liability for any damage or loss of business that this product may cause. | 
|  | * | 
|  | * Code change notes: | 
|  | * | 
|  | * Author							Change						Date | 
|  | ******************************************************************************* | 
|  | * Mats Alm   		                Added		                2013-12-03 | 
|  | *******************************************************************************/ | 
|  |  | 
|  | using System; | 
|  | using System.Collections.Frozen; | 
|  | using System.Collections.Generic; | 
|  |  | 
|  | namespace EpplusFormulaParser; | 
|  |  | 
|  | internal static class FunctionRepository { | 
|  | private static readonly FrozenSet<string> _functions = new HashSet<string>( | 
|  | StringComparer.InvariantCultureIgnoreCase) { | 
|  | // Text | 
|  | "len", | 
|  | "lower", | 
|  | "upper", | 
|  | "left", | 
|  | "right", | 
|  | "mid", | 
|  | "replace", | 
|  | "rept", | 
|  | "substitute", | 
|  | "concatenate", | 
|  | "char", | 
|  | "exact", | 
|  | "find", | 
|  | "fixed", | 
|  | "proper", | 
|  | "text", | 
|  | "t", | 
|  | "hyperlink", | 
|  | // Numbers | 
|  | "int", | 
|  | // Math | 
|  | "abs", | 
|  | "asin", | 
|  | "asinh", | 
|  | "cos", | 
|  | "cosh", | 
|  | "power", | 
|  | "sign", | 
|  | "sqrt", | 
|  | "sqrtpi", | 
|  | "pi", | 
|  | "product", | 
|  | "ceiling", | 
|  | "count", | 
|  | "counta", | 
|  | "countblank", | 
|  | "countif", | 
|  | "countifs", | 
|  | "fact", | 
|  | "floor", | 
|  | "sin", | 
|  | "sinh", | 
|  | "sum", | 
|  | "sumif", | 
|  | "sumifs", | 
|  | "sumproduct", | 
|  | "sumsq", | 
|  | "stdev", | 
|  | "stdevp", | 
|  | "stdev.s", | 
|  | "stdev.p", | 
|  | "subtotal", | 
|  | "exp", | 
|  | "log", | 
|  | "log10", | 
|  | "ln", | 
|  | "max", | 
|  | "maxa", | 
|  | "median", | 
|  | "min", | 
|  | "mina", | 
|  | "mod", | 
|  | "average", | 
|  | "averagea", | 
|  | "averageif", | 
|  | "averageifs", | 
|  | "round", | 
|  | "rounddown", | 
|  | "roundup", | 
|  | "rand", | 
|  | "randbetween", | 
|  | "quotient", | 
|  | "trunc", | 
|  | "tan", | 
|  | "tanh", | 
|  | "atan", | 
|  | "atan2", | 
|  | "atanh", | 
|  | "acos", | 
|  | "acosh", | 
|  | "var", | 
|  | "varp", | 
|  | "large", | 
|  | "small", | 
|  | "degrees", | 
|  | // Information | 
|  | "isblank", | 
|  | "isnumber", | 
|  | "istext", | 
|  | "isnontext", | 
|  | "iserror", | 
|  | "iserr", | 
|  | "error.type", | 
|  | "iseven", | 
|  | "isodd", | 
|  | "islogical", | 
|  | "isna", | 
|  | "na", | 
|  | "n", | 
|  | // Logical | 
|  | "if", | 
|  | "iferror", | 
|  | "ifna", | 
|  | "not", | 
|  | "and", | 
|  | "or", | 
|  | "true", | 
|  | "false", | 
|  | // Reference and lookup | 
|  | "address", | 
|  | "hlookup", | 
|  | "vlookup", | 
|  | "lookup", | 
|  | "match", | 
|  | "row", | 
|  | "rows", | 
|  | "column", | 
|  | "columns", | 
|  | "choose", | 
|  | "index", | 
|  | "indirect", | 
|  | "offset", | 
|  | // Date | 
|  | "date", | 
|  | "today", | 
|  | "now", | 
|  | "day", | 
|  | "month", | 
|  | "year", | 
|  | "time", | 
|  | "hour", | 
|  | "minute", | 
|  | "second", | 
|  | "weeknum", | 
|  | "weekday", | 
|  | "days360", | 
|  | "yearfrac", | 
|  | "edate", | 
|  | "eomonth", | 
|  | "isoweeknum", | 
|  | "workday", | 
|  | // Database | 
|  | "dget", | 
|  | "dcount", | 
|  | "dcounta", | 
|  | "dmax", | 
|  | "dmin", | 
|  | "dsum", | 
|  | "daverage", | 
|  | "dvar", | 
|  | "dvarp", | 
|  | }.ToFrozenSet(); | 
|  |  | 
|  | public static bool IsFunctionName(string name) { | 
|  | return _functions.Contains(name); | 
|  | } | 
|  | } |