Example #1
0
        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);
        }
Example #2
0
        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("`", "\\`")}`;
}}");
        }
Example #3
0
        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(";");
        }