| /* 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); | |
| } | |
| } |