private CodeGenerationParameter CreateGenerationParameter(string parameter) { string paramWithoutIdentifiers = parameter.Replace("###", ""); string[] split = paramWithoutIdentifiers.Split(new char[] { ':' }, 2, StringSplitOptions.RemoveEmptyEntries); if (split.Length != 2) { Debug.LogError("Invalid structure for parameter. Should be ###IDENTIFIER:TYPE###. Instead found " + parameter); return(null); } string identifier = split[0].Trim(); string typeStr = split[1].Trim(); Type type = MatchType(typeStr); if (type == null) { Debug.LogError("Could not match type for " + parameter + "\nType string recognized as: " + typeStr); return(null); } CodeGenerationParameter generationParameter = new CodeGenerationParameter(); generationParameter.Identifier = identifier; generationParameter.ParameterType = typeStr; generationParameter.ReplacementString = parameter; return(generationParameter); }
private void ParseParameters(string template) { parameters.Clear(); Dictionary <string, CodeGenerationParameter> extractedParameters = new Dictionary <string, CodeGenerationParameter>(); int paramStartIndex = template.IndexOf(PARAMETER_IDENTIFIER); if (paramStartIndex < 0) { return; } do { string parameter = ExtractParameter(template, ref paramStartIndex); CodeGenerationParameter generationParameter = CreateGenerationParameter(parameter); if (generationParameter != null && !extractedParameters.ContainsKey(generationParameter.Identifier)) { extractedParameters.Add(generationParameter.Identifier, generationParameter); } } while (paramStartIndex >= 0); parameters.AddRange(extractedParameters.Values); }