public static TermValue GetTerm(SimpleTermDefinition definition, CultureInfo culture) { if (definition.Translations.TryGetValue(culture, out var value) && value != null) { return(value); } if (culture.CultureTypes.HasFlag(CultureTypes.UserCustomCulture)) { culture = culture.Parent; if (definition.Translations.TryGetValue(culture, out value) && value != null) { return(value); } } if (culture.CultureTypes.HasFlag(CultureTypes.SpecificCultures)) { if (definition.Translations.TryGetValue(culture.Parent, out value) && value != null) { return(value); } } return(definition.Translations.TryGetValue(new CultureInfo("en"), out value) && value != null ? value : null); }
public static void GenerateTermDeclaration_Method(StringBuilder builder, SimpleTermDefinition definition, CultureInfo culture) { var termValue = GetTerm(definition, culture).JsTemplateValue; termValue = parameterRegex.Replace(termValue, "${$1}"); termValue = escapedRegex.Replace(termValue, "{$1}"); builder.AppendLine($@"{definition.Key} ({string.Join(", ", definition.AllParameters.Select(p => p.Name))}) {{ return `{termValue.Replace("`", "\\`")}`; }}"); }
public static void GenerateTermDeclaration_Property(StringBuilder builder, SimpleTermDefinition definition, string termKey, CultureInfo culture) { var termValue = GetTerm(definition, culture).JsTemplateValue; termValue = escapedRegex.Replace(termValue, "{$1}"); builder.AppendLine($@" get {termKey}() {{ return `{termValue.Replace("`", "\\`")}`; }}"); }
public static void GenerateXmlDocComments(StringBuilder builder, CultureSettings settings, SimpleTermDefinition definition) { var defaultCopy = definition.Translations[settings.DefaultCulture]; builder .AppendLine(" /// <summary>") .Append(" /// ").Append(settings.DefaultCulture.Name).Append(": \"").Append(defaultCopy.OriginalValue).AppendLine("\"") .AppendLine(" /// </summary>"); }
public static void RenderTermCultureSwitch_CSharp(StringBuilder builder, CultureSettings settings, SimpleTermDefinition definition, bool escaped) { if (escaped) { builder.Append("new EscapedTerm("); } builder.Append($@"new StaticTerm(""{definition.Key}"", new Dictionary<string, string> {{ "); var cases = new List <string>(); for (var i = 0; i < settings.SupportedCultures.Count; i++) { var culture = settings.SupportedCultures[i]; var termValue = GetTerm(definition, culture); var termText = termValue.CSharpStringFormatValue; builder .Append("{ \"") .Append(culture.Name.ToLowerInvariant()) .Append("\", @\"") .Append(termText.Replace("\"", "\"\"")) .Append("\" } "); if (i < settings.SupportedCultures.Count - 1) { builder.Append(", "); } } builder.Append("})"); if (escaped) { builder.Append(")"); } }
public static void GenerateTermDeclaration_Method(StringBuilder builder, CultureSettings settings, string fullClassName, SimpleTermDefinition definition) { GenerateTermDeclaration_Property(builder, settings, fullClassName, definition, "_" + definition.Key); GenerateXmlDocComments(builder, settings, definition); builder .Append($@" public static Term ") .Append(definition.Key) .Append(" ("); for (var i = 0; i < definition.AllParameters.Count; i++) { var parameter = definition.AllParameters[i]; builder .Append(parameter.Type) .Append(' ') .Append(parameter.Name); if (i < definition.AllParameters.Count - 1) { builder.Append(", "); } } builder .AppendLine(")") .AppendLine(" {") .Append(" return new ParameterisedTerm(_") .Append(definition.Key) .Append(", "); for (var i = 0; i < definition.AllParameters.Count; i++) { builder.Append(definition.AllParameters[i].Name); if (i < definition.AllParameters.Count - 1) { builder.Append(", "); } } builder .AppendLine(");") .AppendLine(" }"); }
public static void GenerateTermDeclaration_Property(StringBuilder builder, CultureSettings settings, string fullClassName, SimpleTermDefinition definition, string termKey, bool @public = false) { builder.Append(" "); if (@public) { GenerateXmlDocComments(builder, settings, definition); builder.Append("public "); } builder.Append($@"static readonly Term {termKey} = "); RenderTermCultureSwitch_CSharp(builder, settings, definition, @public); builder.AppendLine(";"); }