private void UpdateUi()
        {
            var srcList = referenceLink.Sources;
            var action  = referenceLink.Action;
            var spannableTextBuilder = new SpannableTextBuilder();

            ISpanned spannedText;

            string html = new HtmlTagHelper().FormatAdditionalTags(referenceLink.HtmlText);

            if (Build.VERSION.SdkInt >= BuildVersionCodes.N)
            {
                spannedText = Html.FromHtml(html, FromHtmlOptions.ModeLegacy);
            }
            else
            {
#pragma warning disable 618
                spannedText = Html.FromHtml(html);
#pragma warning restore 618
            }

            Control.TextFormatted = spannableTextBuilder.CreateSubtitlesText(action(), spannedText, srcList);

            // Make links clickable
            Control.MovementMethod = LinkMovementMethod.Instance;
            Control.AutoLinkMask   = MatchOptions.All;
            Control.Clickable      = true;
            Control.LinksClickable = true;
        }
Пример #2
0
        public List <string> ToTokenList(string format, IFormatProvider formatProvider)
        {
            List <string> words = new List <string>();

            if (format == "html" && new String[] { "ona", "mi", "sina" }.Contains(head.Text))
            {
                words.Add(HtmlTagHelper.SpanWrap("anaphora", head.ToString(format, formatProvider)));
            }
            else
            {
                words.Add(head.ToString(format, formatProvider));
            }

            if (Modifiers != null && Modifiers.Count > 0)
            {
                words.AddIfNeeded("(", format);
                words.AddRange(modifiers.Select(x => x.ToString(format, formatProvider)));
                words.AddIfNeeded(")", format);
            }
            if (prepositionalPhrases != null)
            {
                foreach (PrepositionalPhrase phrase in prepositionalPhrases)
                {
                    words.AddIfNeeded("(", format);
                    words.AddRange(phrase.ToTokenList(format, formatProvider));
                    words.AddIfNeeded(")", format);
                }
            }

            return(words);
        }
        public void HtmlTagFor_Expression_Constant()
        {
            var helper = new HtmlTagHelper <Model1>();

            Assert.Throws <InvalidOperationException>(
                () => helper.HtmlTagFor(m => 1, "input"));
        }
        public void HtmlTagFor_Expression_MethodCall()
        {
            var helper = new HtmlTagHelper <Model1>();

            Assert.Throws <InvalidOperationException>(
                () => helper.HtmlTagFor(m => m.PropInt.ToString(), "input"));
        }
        public void SelectFor_NotNull_DefaultValue()
        {
            var model = new Model1()
            {
                PropInt = 1
            };
            var helper = new HtmlTagHelper <Model1>(model);

            var propExpression = Expr((Model1 m) => m.PropInt);
            var tag            = helper.SelectFor(
                propExpression,
                OptionsList.CreateForEnum <Enum1>(),
                defaultValue: 2);

            AssertValid(tag, "select", "PropInt");

            var firstChild  = tag.Children.First();
            var secondChild = tag.Children.Skip(1).First();
            var thirdChild  = tag.Children.Skip(2).First();

            Assert.Equal("Option1", firstChild.Text());
            Assert.True(firstChild.ValueIsEqual(1));
            Assert.True(firstChild.HasAttr("selected"));
            Assert.Equal("Option2", secondChild.Text());
            Assert.True(secondChild.ValueIsEqual(2));
            Assert.False(secondChild.HasAttr("selected"));
            Assert.Equal("Option3", thirdChild.Text());
            Assert.True(thirdChild.ValueIsEqual(3));
            Assert.False(thirdChild.HasAttr("selected"));
        }
Пример #6
0
        public override string ToString(string format, IFormatProvider formatProvider)
        {
            Dialect c = formatProvider.GetFormat(typeof(Word)) as Dialect;

            string        headString = head.ToString(format, formatProvider);
            List <string> parts      = new List <string>(tags.Count);

            foreach (Word tag in tags)
            {
                parts.Add(tag.ToString(format, formatProvider));
            }


            if (format == "html")
            {
                return(headString + " " + HtmlTagHelper.SpanWrap("conjunction", string.Join(" ", parts)));
            }
            else if (format.StartCheck("b"))
            {
                return(headString + " |" + string.Join(" ", parts) + "| ");
            }
            else
            {
                return(headString + " " + string.Join(" ", parts));
            }
        }
Пример #7
0
        protected override void OnElementChanged(ElementChangedEventArgs <Label> elementChangedEventArgs)
        {
            base.OnElementChanged(elementChangedEventArgs);

            formslink = elementChangedEventArgs.NewElement as HtmlLink;

            if (formslink != null)
            {
                string html = new HtmlTagHelper().FormatAdditionalTags(formslink.HtmlText);

                if (Build.VERSION.SdkInt >= BuildVersionCodes.N)
                {
                    Control.TextFormatted = Html.FromHtml(html, FromHtmlOptions.ModeLegacy);
                }
                else
                {
#pragma warning disable 618
                    Control.TextFormatted = Html.FromHtml(html);
#pragma warning restore 618
                }

                // Make links clickable
                Control.MovementMethod = LinkMovementMethod.Instance;
                Control.AutoLinkMask   = MatchOptions.All;
                Control.Clickable      = true;
                Control.LinksClickable = true;
            }
        }
        public void Select_Null_DefaultValue()
        {
            var model = new Model1()
            {
                PropInt = null
            };
            var helper = new HtmlTagHelper(model);

            var name = "PropInt";
            var tag  = helper.Select(
                name,
                OptionsList.CreateForEnum <Enum1>(),
                defaultValue: 2);

            AssertValid(tag, "select", name);

            var firstChild  = tag.Children.First();
            var secondChild = tag.Children.Skip(1).First();
            var thirdChild  = tag.Children.Skip(2).First();

            Assert.Equal("Option1", firstChild.Text());
            Assert.True(firstChild.ValueIsEqual(1));
            Assert.False(firstChild.HasAttr("selected"));
            Assert.Equal("Option2", secondChild.Text());
            Assert.True(secondChild.ValueIsEqual(2));
            Assert.True(secondChild.HasAttr("selected"));
            Assert.Equal("Option3", thirdChild.Text());
            Assert.True(thirdChild.ValueIsEqual(3));
            Assert.False(thirdChild.HasAttr("selected"));
        }
Пример #9
0
        //Dupe
        public string ToString(string format, IFormatProvider formatProvider)
        {
            if (format == null)
            {
                format = "g";
            }
            Dialect c = formatProvider.GetFormat(typeof(Particle)) as Dialect;

            //// Handle null or empty string.
            if (String.IsNullOrEmpty(format))
            {
                format = "g";
            }
            // Remove spaces and convert to uppercase.
            format = format.Trim();
            if (format == null || format == "g" || format == "G")
            {
                return(Text);
            }

            if (format == "html")
            {
                return(HtmlTagHelper.SpanWrap("function", Text));
            }


            bool includePos = false;

            if (format.ContainsCheck(":"))
            {
                string[] parts = format.Split(new char[] { ':' });
                format     = parts[0];
                includePos = Convert.ToBoolean(parts[1]);
            }
            CultureInfo ci = Thread.CurrentThread.CurrentCulture;

            string language;

            if (c.TargetGloss == "thread")
            {
                language = ci.TwoLetterISOLanguageName;
            }
            else
            {
                language = c.TargetGloss;
            }

            if (language == "tp")
            {
                return(Text == " "?"":Text); //And maybe POS
            }
            if (includePos)
            {
                return(TryGloss(language, format) + "(" + format + ")");
            }
            else
            {
                return(TryGloss(language, format));
            }
        }
Пример #10
0
        public void File()
        {
            var helper = new HtmlTagHelper();
            var name   = "name1";
            var tag    = helper.File(name);

            AssertValid(tag, "input", name, "file");
        }
Пример #11
0
        public void TextArea()
        {
            var helper = new HtmlTagHelper();
            var name   = "name1";
            var tag    = helper.TextArea(name);

            AssertValid(tag, "textarea", name);
        }
Пример #12
0
        public void Password()
        {
            var helper = new HtmlTagHelper();
            var name   = "name1";
            var tag    = helper.Password(name);

            AssertValid(tag, "input", name, "password");
        }
Пример #13
0
        public void Hidden()
        {
            var helper = new HtmlTagHelper();
            var name   = "name1";
            var tag    = helper.Hidden(name);

            AssertValid(tag, "input", name, "hidden");
        }
Пример #14
0
        public void TextBox()
        {
            var helper = new HtmlTagHelper();
            var name   = "name1";
            var tag    = helper.TextBox(name);

            AssertValid(tag, "input", name, "text");
        }
Пример #15
0
        public void HtmlTag_Any()
        {
            var helper  = new HtmlTagHelper();
            var tagName = "any";
            var name    = "name2";
            var tag     = helper.HtmlTag(tagName, name);

            AssertValid(tag, tagName, name);
        }
Пример #16
0
        public void HtmlTag_Input()
        {
            var helper  = new HtmlTagHelper();
            var tagName = "input";
            var name    = "name1";
            var tag     = helper.HtmlTag(tagName, name);

            AssertValid(tag, tagName, name);
        }
Пример #17
0
        public void HtmlTag_Input()
        {
            var helper = new HtmlTagHelper();
            var tagName = "input";
            var name = "name1";
            var tag = helper.HtmlTag(tagName, name);

            AssertValid(tag, tagName, name);
        }
Пример #18
0
        public void Radio_Checked()
        {
            var helper = new HtmlTagHelper();
            var name   = "name1";
            var tag    = helper.Radio(name, isChecked: true);

            AssertValid(tag, "input", name, "radio");
            Assert.True(tag.Checked());
        }
Пример #19
0
        public void CheckBox_Checked()
        {
            var helper = new HtmlTagHelper();
            var name   = "name1";
            var tag    = helper.CheckBox(name, isChecked: true);

            AssertValid(tag, "input", name, "checkbox");
            Assert.True(tag.Checked());
        }
Пример #20
0
        public void Input_Any()
        {
            var helper = new HtmlTagHelper();
            var name   = "name1";
            var type   = "any";
            var tag    = helper.Input(type, name);

            AssertValid(tag, "input", name, type);
        }
Пример #21
0
        public void Input_Text_InputType()
        {
            var helper = new HtmlTagHelper();
            var name   = "name1";
            var type   = InputType.Text;
            var tag    = helper.Input(type, name);

            AssertValid(tag, "input", name, "text");
        }
Пример #22
0
        public void HtmlTag_Input_Value_Date()
        {
            var model = new Model1() { PropDate = DateTime.UtcNow };
            var helper = new HtmlTagHelper(model);
            var tagName = "input";
            var name = "PropDate";
            var tag = helper.HtmlTag(tagName, name);

            AssertValid(tag, tagName, name, value: model.PropDate);
        }
Пример #23
0
        public void GetHeadTag_OnExecuteWithMultipleHeadTags_ThrowsException()
        {
            var doc = new HtmlDocument();

            doc.LoadHtml("<html><head><title>Title</title></head><head><title>Title</title></head></html>");

            var htmlTagHelper = new HtmlTagHelper();

            htmlTagHelper.GetHeadTag(doc.DocumentNode);
        }
Пример #24
0
        public void GetBodyTag_OnExecuteWithNoBodyTag_ThrowsException()
        {
            var doc = new HtmlDocument();

            doc.LoadHtml("<html><title>Title</title></html>");

            var htmlTagHelper = new HtmlTagHelper();

            htmlTagHelper.GetBodyTag(doc.DocumentNode);
        }
Пример #25
0
        public void HtmlTag_Input_Value_Null()
        {
            var model = new Model1() { PropInt = null };
            var helper = new HtmlTagHelper(model);
            var tagName = "input";
            var name = "PropInt";
            var tag = helper.HtmlTag(tagName, name);

            AssertValid(tag, tagName, name, value: model.PropInt);
        }
        public void HtmlTagFor_Any()
        {
            var helper = new HtmlTagHelper <Model1>();

            var propExpression = Expr((Model1 m) => m.PropInt);
            var tagName        = "any";
            var tag            = helper.HtmlTagFor(propExpression, tagName);

            AssertValid(tag, tagName, "PropInt");
        }
Пример #27
0
        public void GetMetaTags_OnExecuteWithNoMetaTags_ThrowsException()
        {
            var doc = new HtmlDocument();

            doc.LoadHtml("<html>Empty</html>");

            var htmlTagHelper = new HtmlTagHelper();

            htmlTagHelper.GetMetaTags(doc.DocumentNode);
        }
Пример #28
0
        public void GetBodyTag_OnExecuteWithMultipleBodyTags_ThrowsException()
        {
            var doc = new HtmlDocument();

            doc.LoadHtml("<html><body><div>Content</div></body><body><div>Content</div></body></html>");

            var htmlTagHelper = new HtmlTagHelper();

            htmlTagHelper.GetBodyTag(doc.DocumentNode);
        }
Пример #29
0
        public void GetMetaTags_OnExecuteWithMetaTags_ReturnsMetaTagsNodes()
        {
            var doc = new HtmlDocument();

            doc.LoadHtml("<html><meta /><meta /></html>");

            var htmlTagHelper = new HtmlTagHelper();
            var metaTags      = htmlTagHelper.GetMetaTags(doc.DocumentNode);

            Assert.IsNotNull(metaTags);
            Assert.AreEqual(2, metaTags.Count());
        }
Пример #30
0
        public void GetHeadTag_OnExecuteWithHeadTag_ReturnsTheHeadNode()
        {
            var doc = new HtmlDocument();

            doc.LoadHtml("<html><head><title>Title</title></head></html>");

            var htmlTagHelper = new HtmlTagHelper();
            var headTag       = htmlTagHelper.GetHeadTag(doc.DocumentNode);

            Assert.IsNotNull(headTag);
            Assert.AreEqual("<title>Title</title>", headTag.InnerHtml);
        }
Пример #31
0
        public void GetBodyTag_OnExecuteWithBodyTag_ReturnsTheBodyNode()
        {
            var doc = new HtmlDocument();

            doc.LoadHtml("<html><body><div>Content</div></body></html>");

            var htmlTagHelper = new HtmlTagHelper();
            var bodyTag       = htmlTagHelper.GetBodyTag(doc.DocumentNode);

            Assert.IsNotNull(bodyTag);
            Assert.AreEqual("<div>Content</div>", bodyTag.InnerHtml);
        }
        public void RadioFor_Value_Int()
        {
            var model = new Model1()
            {
                PropInt = 1
            };
            var helper = new HtmlTagHelper <Model1>(model);

            var propExpression = Expr((Model1 m) => m.PropInt);
            var tag            = helper.RadioFor(propExpression);

            AssertValid(tag, "input", "PropInt", type: "radio", value: model.PropInt);
        }
        public void TextAreaFor_Value_Int()
        {
            var model = new Model1()
            {
                PropInt = 1
            };
            var helper = new HtmlTagHelper <Model1>(model);

            var propExpression = Expr((Model1 m) => m.PropInt);
            var tag            = helper.TextAreaFor(propExpression);

            AssertValid(tag, "textarea", "PropInt", value: model.PropInt);
        }
Пример #34
0
        public void Password()
        {
            var helper = new HtmlTagHelper();
            var name = "name1";
            var tag = helper.Password(name);

            AssertValid(tag, "input", name, "password");
        }
Пример #35
0
        public void HtmlTag_Any()
        {
            var helper = new HtmlTagHelper();
            var tagName = "any";
            var name = "name2";
            var tag = helper.HtmlTag(tagName, name);

            AssertValid(tag, tagName, name);
        }
Пример #36
0
        public void Hidden()
        {
            var helper = new HtmlTagHelper();
            var name = "name1";
            var tag = helper.Hidden(name);

            AssertValid(tag, "input", name, "hidden");
        }
Пример #37
0
        public void File()
        {
            var helper = new HtmlTagHelper();
            var name = "name1";
            var tag = helper.File(name);

            AssertValid(tag, "input", name, "file");
        }
Пример #38
0
        public void Radio_Checked()
        {
            var helper = new HtmlTagHelper();
            var name = "name1";
            var tag = helper.Radio(name, isChecked: true);

            AssertValid(tag, "input", name, "radio");
            Assert.True(tag.Checked());
        }
Пример #39
0
        public void CheckBox_Checked()
        {
            var helper = new HtmlTagHelper();
            var name = "name1";
            var tag = helper.CheckBox(name, isChecked: true);

            AssertValid(tag, "input", name, "checkbox");
            Assert.True(tag.Checked());
        }
Пример #40
0
        public void Select_NotNull_DefaultValue()
        {
            var model = new Model1() { PropInt = 1 };
            var helper = new HtmlTagHelper(model);

            var name = "PropInt";
            var tag = helper.Select(
                name,
                OptionsList.CreateForEnum<Enum1>(),
                defaultValue: 2);

            AssertValid(tag, "select", name);

            var firstChild = tag.Children.First();
            var secondChild = tag.Children.Skip(1).First();
            var thirdChild = tag.Children.Skip(2).First();

            Assert.Equal("Option1", firstChild.Text());
            Assert.True(firstChild.ValueIsEqual(1));
            Assert.True(firstChild.HasAttr("selected"));
            Assert.Equal("Option2", secondChild.Text());
            Assert.True(secondChild.ValueIsEqual(2));
            Assert.False(secondChild.HasAttr("selected"));
            Assert.Equal("Option3", thirdChild.Text());
            Assert.True(thirdChild.ValueIsEqual(3));
            Assert.False(thirdChild.HasAttr("selected"));
        }
Пример #41
0
        public void TextArea()
        {
            var helper = new HtmlTagHelper();
            var name = "name1";
            var tag = helper.TextArea(name);

            AssertValid(tag, "textarea", name);
        }
Пример #42
0
        public void Input_Any()
        {
            var helper = new HtmlTagHelper();
            var name = "name1";
            var type = "any";
            var tag = helper.Input(type, name);

            AssertValid(tag, "input", name, type);
        }
Пример #43
0
        public void TextBox()
        {
            var helper = new HtmlTagHelper();
            var name = "name1";
            var tag = helper.TextBox(name);

            AssertValid(tag, "input", name, "text");
        }
Пример #44
0
        public void Input_Text_InputType()
        {
            var helper = new HtmlTagHelper();
            var name = "name1";
            var type = InputType.Text;
            var tag = helper.Input(type, name);

            AssertValid(tag, "input", name, "text");
        }
Пример #45
0
        public void CheckBoxList_NotNull_DefaultValue()
        {
            var model = new Model1() { PropIntList = Coll.Array(2, 3) };
            var helper = new HtmlTagHelper(model);

            var name = "PropIntList";
            var tag = helper.CheckBoxList(
                name,
                OptionsList.CreateForEnum<Enum1>(),
                defaultValues: Coll.Array(1, 2, 4));

            Assert.Equal(3, tag.Children.Count());
            CheckBoxListTagTest.AssertValidOption(tag.Options.Skip(0).First(), name: name, display: "Option1", value: 1, isChecked: false);
            CheckBoxListTagTest.AssertValidOption(tag.Options.Skip(1).First(), name: name, display: "Option2", value: 2, isChecked: true);
            CheckBoxListTagTest.AssertValidOption(tag.Options.Skip(2).First(), name: name, display: "Option3", value: 3, isChecked: true);
        }