public void CompositeFormattingEscapingMissingStartBracket()
        {
            var pool = new ManagedBufferPool<byte>(1024);
            var formatter = new StringFormatter(pool);

            Assert.Throws<Exception>(() => formatter.Format("{0}}", 1));
        }
        public void CompositeFormattingFormatStrings()
        {
            var formatter = new StringFormatter(pool);
            formatter.Format("Hello{0:x}{1:X}{2:G}", 10, 255, 3);

            Assert.Equal("HelloaFF3", formatter.ToString());
        }
        public void CompositeFormattingEscaping()
        {
            var format = "}}a {0} b {0} c {{{0}}} d {{e}} {{";
            var formatter = new StringFormatter(pool);
            formatter.Format(format, 1);

            Assert.Equal(string.Format(CultureInfo.InvariantCulture, format, 1), formatter.ToString());
        }
        public void CompositeFormattingFormatStrings()
        {
            var pool = new ManagedBufferPool<byte>(1024);
            var formatter = new StringFormatter(pool);
            formatter.Format("Hello{0:x}{1:X}{2:G}", 10, 255, 3);

            Assert.Equal("HelloaFF3", formatter.ToString());
        }
        public void CompositeFormattingBasics()
        {
            var time = DateTime.UtcNow;
            var pool = new ManagedBufferPool<byte>(1024);
            var formatter = new StringFormatter(pool);
            formatter.Format("{2} - Error {0}. File {1} not found.", 404, "index.html", time);

            Assert.Equal(time.ToString("G") + " - Error 404. File index.html not found.", formatter.ToString());
        }
 public void CompositeFormattingBasics()
 {
     var time = new DateTime(2016, 2, 9, 4, 1, 59, DateTimeKind.Utc);
     using (var formatter = new StringFormatter(pool))
     {
         formatter.Format("{2:G} - Error {0}. File {1} not found.", 404, "index.html", time);
         Assert.Equal("2/9/2016 4:01:59 AM - Error 404. File index.html not found.", formatter.ToString());
     }
 }
 public void CompositeFormattingBasics()
 {
     var time = DateTime.UtcNow;
     using (var formatter = new StringFormatter(pool))
     {
         formatter.Format("{2} - Error {0}. File {1} not found.", 404, "index.html", time);
         Assert.Equal(time.ToString("G") + " - Error 404. File index.html not found.", formatter.ToString());
     }
 }
示例#8
0
        public void Should_format_datetime_field()
        {
            var value = JsonValue.Create("2019-01-19T12:00:00Z");

            var field = Fields.DateTime(1, "field", Partitioning.Invariant);

            var formatted = StringFormatter.Format(field, value);

            Assert.Equal("2019-01-19T12:00:00Z", formatted);
        }
示例#9
0
        public void Should_format_references_field_without_items()
        {
            var value = JsonValue.Array();

            var field = Fields.References(1, "field", Partitioning.Invariant);

            var formatted = StringFormatter.Format(field, value);

            Assert.Equal("0 References", formatted);
        }
示例#10
0
        public void Should_format_number_field()
        {
            var value = JsonValue.Create(123);

            var field = Fields.Number(1, "field", Partitioning.Invariant);

            var formatted = StringFormatter.Format(field, value);

            Assert.Equal("123", formatted);
        }
示例#11
0
        public void Should_format_json_field()
        {
            var value = JsonValue.Object();

            var field = Fields.Json(1, "field", Partitioning.Invariant);

            var formatted = StringFormatter.Format(field, value);

            Assert.Equal("<Json />", formatted);
        }
示例#12
0
        public void Should_format_geolocation_field_with_invalid_type()
        {
            var value = JsonValue.Zero;

            var field = Fields.Geolocation(1, "field", Partitioning.Invariant);

            var formatted = StringFormatter.Format(field, value);

            Assert.Empty(formatted);
        }
示例#13
0
        public void Should_format_assets_field_with_multiple_items()
        {
            var value = JsonValue.Array(JsonValue.Object(), JsonValue.Object());

            var field = Fields.Assets(1, "field", Partitioning.Invariant);

            var formatted = StringFormatter.Format(field, value);

            Assert.Equal("2 Assets", formatted);
        }
示例#14
0
        public void Should_format_geolocation_field_with_correct_data()
        {
            var value = JsonValue.Object().Add("latitude", 18.9).Add("longitude", 10.9);

            var field = Fields.Geolocation(1, "field", Partitioning.Invariant);

            var formatted = StringFormatter.Format(field, value);

            Assert.Equal("18.9, 10.9", formatted);
        }
示例#15
0
        public void Should_format_assets_field_with_wrong_type()
        {
            var value = JsonValue.True;

            var field = Fields.Assets(1, "field", Partitioning.Invariant);

            var formatted = StringFormatter.Format(field, value);

            Assert.Equal("0 Assets", formatted);
        }
示例#16
0
        public void Should_format_geolocation_field_with_missing_property()
        {
            var value = JsonValue.Object().Add("latitude", 18.9);

            var field = Fields.Geolocation(1, "field", Partitioning.Invariant);

            var formatted = StringFormatter.Format(field, value);

            Assert.Empty(formatted);
        }
示例#17
0
        public void Should_format_boolean_field_with_wrong_type()
        {
            var value = JsonValue.Zero;

            var field = Fields.Boolean(1, "field", Partitioning.Invariant);

            var formatted = StringFormatter.Format(field, value);

            Assert.Equal("No", formatted);
        }
        public void StringFormatter_CanFormatByteArgument()
        {
            var formatter = new StringFormatter();
            var buffer    = new StringBuilder();

            formatter.Reset();
            formatter.AddArgument((Byte)123);
            formatter.Format("this is a Byte value: {0}", buffer);

            TheResultingString(buffer).ShouldBe("this is a Byte value: 123");
        }
        public void StringFormatter_CanFormatInt32Argument()
        {
            var formatter = new StringFormatter();
            var buffer    = new StringBuilder();

            formatter.Reset();
            formatter.AddArgument(12345);
            formatter.Format("this is an Int32 value: {0}", buffer);

            TheResultingString(buffer).ShouldBe("this is an Int32 value: 12345");
        }
        public void StringFormatter_CanFormatStringArgument()
        {
            var formatter = new StringFormatter();
            var buffer    = new StringBuilder();

            formatter.Reset();
            formatter.AddArgument("world");
            formatter.Format("hello {0}", buffer);

            TheResultingString(buffer).ShouldBe("hello world");
        }
示例#21
0
        public void StringFormatter_CanFormatDoubleArgumentWithDecimalsCommand()
        {
            var formatter = new StringFormatter();
            var buffer    = new StringBuilder();

            formatter.Reset();
            formatter.AddArgument(123.456789);
            formatter.Format("this is a Double value: {0:decimals:2}", buffer);

            TheResultingString(buffer).ShouldBe("this is a Double value: 123.46");
        }
示例#22
0
        public void StringFormatter_CanFormatDoubleArgument()
        {
            var formatter = new StringFormatter();
            var buffer    = new StringBuilder();

            formatter.Reset();
            formatter.AddArgument(123.45);
            formatter.Format("this is a Double value: {0}", buffer);

            TheResultingString(buffer).ShouldBe("this is a Double value: 123.45000");
        }
示例#23
0
        public void StringFormatter_CanFormatCharArgument()
        {
            var formatter = new StringFormatter();
            var buffer    = new StringBuilder();

            formatter.Reset();
            formatter.AddArgument('Z');
            formatter.Format("this is a Char value: {0}", buffer);

            TheResultingString(buffer).ShouldBe("this is a Char value: Z");
        }
示例#24
0
        public void StringFormatter_CanFormatByteArgument()
        {
            var formatter = new StringFormatter();
            var buffer    = new StringBuilder();

            formatter.Reset();
            formatter.AddArgument((Byte)123);
            formatter.Format("this is a Byte value: {0}", buffer);

            TheResultingString(buffer).ShouldBe("this is a Byte value: 123");
        }
        public void StringFormatter_CanFormatSingleArgumentWithDecimalsCommand()
        {
            var formatter = new StringFormatter();
            var buffer    = new StringBuilder();

            formatter.Reset();
            formatter.AddArgument(123.456789f);
            formatter.Format("this is a Single value: {0:decimals:2}", buffer);

            TheResultingString(buffer).ShouldBe("this is a Single value: 123.46");
        }
        public void StringFormatter_CanFormatSingleArgument()
        {
            var formatter = new StringFormatter();
            var buffer    = new StringBuilder();

            formatter.Reset();
            formatter.AddArgument(123.45f);
            formatter.Format("this is a Single value: {0}", buffer);

            TheResultingString(buffer).ShouldBe("this is a Single value: 123.45000");
        }
        public void StringFormatter_CanFormatCharArgument()
        {
            var formatter = new StringFormatter();
            var buffer    = new StringBuilder();

            formatter.Reset();
            formatter.AddArgument('Z');
            formatter.Format("this is a Char value: {0}", buffer);

            TheResultingString(buffer).ShouldBe("this is a Char value: Z");
        }
        public void StringFormatter_CanFormatStringArgument()
        {
            var formatter = new StringFormatter();
            var buffer    = new StringBuilder();

            formatter.Reset();
            formatter.AddArgument("world");
            formatter.Format("hello {0}", buffer);

            TheResultingString(buffer).ShouldBe("hello world");
        }
示例#29
0
        public static void IsTrue(bool condition, string formatString, params object[] args)
        {
            if (condition)
            {
                return;
            }

            var message = StringFormatter.Format(formatString, args);

            throw new InvalidOperationException(message);
        }
示例#30
0
        public void CompositeFormattingFormatStrings()
        {
            var format = "Hello{0:x}{1:X}{2:G}";

            using (var formatter = new StringFormatter())
            {
                var expected = string.Format(CultureInfo.InvariantCulture, format, 10, 255, 3);

                formatter.Format(format, 10, 255, 3);
                Assert.Equal(expected, formatter.ToString());
            }
        }
示例#31
0
        public void CompositeFormattingEscaping()
        {
            var format = "}}a {0} b {0} c {{{0}}} d {{e}} {{";

            using (var formatter = new StringFormatter())
            {
                var expected = string.Format(CultureInfo.InvariantCulture, format, 1);

                formatter.Format(format, 1);
                Assert.Equal(expected, formatter.ToString());
            }
        }
        public void Should_format_string_field_with_photo_editor()
        {
            var value = JsonValue.Create("hello");

            var field = Fields.String(1, "field", Partitioning.Invariant, new StringFieldProperties {
                Editor = StringFieldEditor.StockPhoto
            });

            var formatted = StringFormatter.Format(value, field);

            Assert.Equal("[Photo]", formatted);
        }
示例#33
0
        public void StringFormatter_CanFormatBooleanArgument()
        {
            var formatter = new StringFormatter();
            var buffer    = new StringBuilder();

            formatter.Reset();
            formatter.AddArgument(true);
            formatter.AddArgument(false);
            formatter.Format("this is {0} and this is {1}", buffer);

            TheResultingString(buffer).ShouldBe("this is True and this is False");
        }
        public void StringFormatter_CanFormatBooleanArgument()
        {
            var formatter = new StringFormatter();
            var buffer    = new StringBuilder();

            formatter.Reset();
            formatter.AddArgument(true);
            formatter.AddArgument(false);
            formatter.Format("this is {0} and this is {1}", buffer);

            TheResultingString(buffer).ShouldBe("this is True and this is False");
        }
示例#35
0
        public void CompositeFormattingDateTimeOffset()
        {
            var format = "{0}#{1}";
            var value  = new DateTimeOffset(2016, 9, 23, 10, 53, 1, 1, TimeSpan.FromHours(1));

            using (var formatter = new StringFormatter())
            {
                var expected = string.Format(CultureInfo.InvariantCulture, format, value, value);

                formatter.Format(format, value, value);
                Assert.Equal(expected, formatter.ToString());
            }
        }
示例#36
0
        private void button4_Click(object sender, EventArgs e)
        {
            const string input = @"Hello, $(IF $loggedIn $username 'Unknown')!
You are $(IF $loggedIn $(IF $(ISMATCH $role '(admin)|(root)') 'a superuser' 'a normal user') 'not registered')!";

            var sf = new StringFormatter();

            sf.Variables.Add("loggedin", "false");
            sf.Variables.Add("username", "filmee24");
            sf.Variables.Add("role", "user");

            MessageBox.Show(sf.Format(input));
        }
示例#37
0
        public void CompositeFormattingGuid()
        {
            var format = "{0}#{1}";
            var value  = Guid.NewGuid();

            using (var formatter = new StringFormatter())
            {
                var expected = string.Format(CultureInfo.InvariantCulture, format, value, value);

                formatter.Format(format, value, value);
                Assert.Equal(expected, formatter.ToString());
            }
        }
示例#38
0
        private string FormatName(IEnrichedContentEntity content, string masterLanguage)
        {
            var sb = new StringBuilder();

            IJsonValue?GetValue(NamedContentData?data, RootField field)
            {
                if (data != null && data.TryGetValue(field.Name, out var fieldValue) && fieldValue != null)
                {
                    var isInvariant = field.Partitioning.Equals(Partitioning.Invariant);

                    if (isInvariant && fieldValue.TryGetValue("iv", out var value))
                    {
                        return(value);
                    }

                    if (!isInvariant && fieldValue.TryGetValue(masterLanguage, out value))
                    {
                        return(value);
                    }
                }

                return(null);
            }

            if (content.ReferenceFields != null)
            {
                foreach (var field in content.ReferenceFields)
                {
                    var value = GetValue(content.ReferenceData, field) ?? GetValue(content.Data, field);

                    var formatted = StringFormatter.Format(value, field);

                    if (!string.IsNullOrWhiteSpace(formatted))
                    {
                        if (sb.Length > 0)
                        {
                            sb.Append(", ");
                        }

                        sb.Append(formatted);
                    }
                }
            }

            if (sb.Length == 0)
            {
                return("Content");
            }

            return(sb.ToString());
        }
        /// <summary>
        ///     Run only the viewModel replacer.
        /// </summary>
        /// <param name="messageTemplate">template to parse</param>
        /// <param name="viewModel">viewModel used to fill the template.</param>
        /// <returns>HTML</returns>
        public string RunFormatterOnly(Template messageTemplate, object viewModel)
        {
            if (messageTemplate == null)
            {
                throw new ArgumentNullException("messageTemplate");
            }

            var sr   = new StreamReader(messageTemplate.Content);
            var text = sr.ReadToEnd();
            //return Smart.Format(text, viewModel);
            var formatter = new StringFormatter();

            return(formatter.Format(text, viewModel));
        }
示例#40
0
        public void FormatStringFormatter()
        {
            try
            {
                var f = new StringFormatter {
                    FormatStr = ""
                };
                f.Format("");
                throw new Exception("TEST FAILED.");
            }
            catch (ArgumentException se)
            {
                Assert.Equal("FormatString should not be null or empty", se.Message);
            }

            try
            {
                var f = new StringFormatter {
                    FormatStr = null
                };
                f.Format("");
                throw new Exception("TEST FAILED.");
            }
            catch (ArgumentException se)
            {
                Assert.Equal("FormatString should not be null or empty", se.Message);
            }

            try
            {
                var f = new StringFormatter {
                    FormatStr = "     "
                };
                f.Format("");
                throw new Exception("TEST FAILED.");
            }
            catch (ArgumentException se)
            {
                Assert.Equal("FormatString should not be null or empty", se.Message);
            }

            var formatter1 = new StringFormatter {
                FormatStr = "http://{0}"
            };

            Assert.Equal("http://a", formatter1.Format("a"));

            //StringFormater formatter2 = new StringFormater { Format = "http://{0}/{1}" };
            //Assert.Equal("http://a/b", formatter2.Formate(new[] { "a", "b" }));
        }
示例#41
0
        public void CompositeFormattingBasics()
        {
            var format   = "{2:G} - Error {0}. File {1} not found.";
            var time     = new DateTime(2016, 2, 9, 4, 1, 59, DateTimeKind.Utc);
            var code     = 404;
            var fileName = "index.html";

            using (var formatter = new StringFormatter())
            {
                var expected = string.Format(CultureInfo.InvariantCulture, format, code, fileName, time);

                formatter.Format(format, code, fileName, time);
                Assert.Equal(expected, formatter.ToString());
            }
        }
        /// <summary>
        ///     Run all formatters (replace text tokens, run markdown and finalize with a syntax highlighter)
        /// </summary>
        /// <param name="messageTemplate">template to parse</param>
        /// <param name="viewModel">viewModel used to fill the template.</param>
        /// <returns>HTML</returns>
        public string RunAll(Template messageTemplate, object viewModel)
        {
            if (messageTemplate == null)
            {
                throw new ArgumentNullException("messageTemplate");
            }

            var sr        = new StreamReader(messageTemplate.Content);
            var text      = sr.ReadToEnd();
            var formatter = new StringFormatter();

            text = formatter.Format(text, viewModel);
            text = Markdown(text);
            return(ColorizeCode(text));
        }
        public void TestSingleNoParameters()
        {
            var stringFormatter = new StringFormatter();
            var str             = stringFormatter.Format(
                "Up is %UP",
                (name, parameters) =>
            {
                if (name == "UP")
                {
                    Assert.IsNull(parameters);
                    return("down");
                }
                throw new ArgumentException(string.Format("The replacement parameter '{0}' is not supported", name));
            });

            Assert.AreEqual("Up is down", str);
        }
示例#44
0
        public static string __repr__(CodeContext/*!*/ context, double self) {
            if (Double.IsNaN(self)) {
                return "nan";
            }

            // first format using Python's specific formatting rules...
            StringFormatter sf = new StringFormatter(context, "%.17g", self);
            sf._TrailingZeroAfterWholeFloat = true;
            string res = sf.Format();
            if (LiteralParser.ParseFloat(res) == self) {
                return res;
            }

            // if it's not round trippable though use .NET's round-trip format
            return self.ToString("R", CultureInfo.InvariantCulture);
        }
示例#45
0
 public static string __str__(CodeContext/*!*/ context, double x) {
     StringFormatter sf = new StringFormatter(context, "%.12g", x);
     sf._TrailingZeroAfterWholeFloat = true;
     return sf.Format();
 }
示例#46
0
 public static string __str__(CodeContext/*!*/ context, float x) {
     // Python does not natively support System.Single. However, we try to provide
     // formatting consistent with System.Double.
     StringFormatter sf = new StringFormatter(context, "%.6g", x);
     sf._TrailingZeroAfterWholeFloat = true;
     return sf.Format();
 }
            public void NoPrefixSuffix()
            {
                StringFormatter stringFormatter = new StringFormatter(string.Empty, string.Empty, null);
                Application application = new Application
                                              {
                                                  OrganisationId = "MyOrg!",
                                                  ApplicationId = "4kdlsjfdlsfjldsads",
                                                  Created = new DateTime(1977, 5, 25, 0, 0, 0, DateTimeKind.Utc)
                                              };
                application.ApplicationData.Add("key1", "someval");
                application.ApplicationData.Add("key2", 456);
                application.ApplicationData.Add("key3", false);

                string replacedAppValue1 = stringFormatter.Format(@"key1", application, new ControlList());
                Assert.AreEqual("someval", replacedAppValue1);

                string replacedAppValue2 = stringFormatter.Format(@"key3", application, new ControlList());
                Assert.AreEqual("False", replacedAppValue2);
            }
 public void CompositeFormattingEscapingMissingStartBracket()
 {
     var formatter = new StringFormatter(pool);
     Assert.Throws<Exception>(() => formatter.Format("{0}}", 1));
 }
示例#49
0
        public void Localization_LocalizedTextFormatting()
        {
            LoadTestLocalizationDatabaseFromXml();

            UsingCulture("fr-FR", () =>
            {
                var formatter = new StringFormatter();
                var buffer = new StringBuilder();

                formatter.Reset();
                formatter.AddArgument(Localization.Get("SWORD").GetPluralVariant(1));
                formatter.AddArgument(Localization.Get("GLOWING"));
                formatter.Format("test: {?:match:0:def_art}{0} {1:match:0:adj}", buffer);

                TheResultingString(buffer)
                    .ShouldBe("test: l'epée rougeoyante");

                formatter.Reset();
                formatter.AddArgument(Localization.Get("SWORD").GetPluralVariant(2));
                formatter.AddArgument(Localization.Get("GLOWING"));
                formatter.Format("test: {?:match:0:def_art}{0} {1:match:0:adj}", buffer);

                TheResultingString(buffer)
                    .ShouldBe("test: les epées rougeoyantes");
            });
        }