Exemple #1
0
        public static XmlReader GetAsXmlReader(ITagAttribute attribute, TagModel model, string fallBack)
        {
            XmlReader reader = null;
            object    raw    = Get(attribute, model) ?? fallBack;

            if (raw == null)
            {
                return(reader);
            }
            if (raw is string && !String.IsNullOrEmpty((string)raw))
            {
                var textReader = new StringReader((string)raw);
                reader = XmlReader.Create(textReader);
            }
            else if (raw is Stream)
            {
                XmlReader.Create((Stream)raw);
            }
            else if (raw is TextReader)
            {
                reader = XmlReader.Create((TextReader)raw);
            }
            else if (raw is XmlReader)
            {
                reader = (XmlReader)raw;
            }
            else
            {
                throw TagException.UnsupportedInput(raw.GetType(), typeof(string), typeof(Stream), typeof(TextReader),
                                                    typeof(XmlReader)).Decorate(attribute.Context);
            }

            return(reader);
        }
        private NumberStyles GetAsNumberStyle(ITagAttribute styles, TagModel model, NumberStyles style)
        {
            if (Styles == null)
            {
                return(style);
            }
            string stylesAsString = GetAsString(Styles, model);

            if (stylesAsString != null)
            {
                bool     first     = true;
                string[] stylesStr = stylesAsString.Split(',');
                foreach (string styleStr in stylesStr)
                {
                    if (first)
                    {
                        style = EnumParser <NumberStyles> .Parse(styleStr);
                    }
                    else
                    {
                        style = style | EnumParser <NumberStyles> .Parse(styleStr);
                    }
                    first = false;
                }
            }
            return(style);
        }
Exemple #3
0
        public static XPathNodeIterator GetAndEvaluate(ITagAttribute source, ITagAttribute xPath, TagModel model)
        {
            string            xPathAsStr = GetAsString(xPath, model);
            object            var        = model[GetAsString(source, model) ?? String.Empty];
            XPathNodeIterator result     = null;

            if (var != null && xPathAsStr != null)
            {
//                XmlNode node;
                XPathNavigator navigator;
                if (var is XPathNavigator)
                {
                    navigator = (XPathNavigator)var;
                }
                else
                {
                    navigator = ((IXPathNavigable)var).CreateNavigator();
                }

                var nsmgr = new XmlNamespaceManager(navigator.NameTable);
                nsmgr.AddNamespace("xsl", "http://www.w3.org/1999/XSL/Transform");
                result = navigator.Select(xPathAsStr, nsmgr);
            }
            return(result);
        }
Exemple #4
0
 private static bool IsAngularAttribute(ITagAttribute attribute)
 {
     // TODO: We can do better than this...
     // Perhaps follow the reference and get the attribute type, as defined in
     // the HtmlElements.xml. E.g. ng-include is %AngularJsUrl
     return(attribute.AttributeName.StartsWith("ng-", StringComparison.OrdinalIgnoreCase) ||
            attribute.AttributeName.StartsWith("data-ng-", StringComparison.OrdinalIgnoreCase) ||
            attribute.AttributeName.StartsWith("x-ng-", StringComparison.OrdinalIgnoreCase));
 }
 private static bool IsAngularAttribute(ITagAttribute attribute)
 {
     // TODO: We can do better than this...
     // Perhaps follow the reference and get the attribute type, as defined in
     // the HtmlElements.xml. E.g. ng-include is %AngularJsUrl
     return attribute.AttributeName.StartsWith("ng-", StringComparison.OrdinalIgnoreCase)
            || attribute.AttributeName.StartsWith("data-ng-", StringComparison.OrdinalIgnoreCase)
            || attribute.AttributeName.StartsWith("x-ng-", StringComparison.OrdinalIgnoreCase);
 }
Exemple #6
0
        public static T?GetAs <T>(ITagAttribute expressions, TagModel model, T?fallBack) where T : struct
        {
            string result = GetAsString(expressions, model);

            if (!String.IsNullOrEmpty(result))
            {
                return(EnumParser <T> .Parse(result));
            }
            return(fallBack);
        }
Exemple #7
0
        public static XPathDocument GetAsXmlDocument(ITagAttribute attribute, TagModel model, string fallBack)
        {
            XPathDocument xDoc = null;
            object        raw  = Get(attribute, model) ?? fallBack;

            if (raw == null)
            {
                return(xDoc);
            }

            if (raw is XPathDocument)
            {
                xDoc = (XPathDocument)raw;
            }
            else if (raw is string)
            {
                if (!String.IsNullOrEmpty((string)raw))
                {
                    var rawAsString = (string)raw;
                    using (var textReader = new StringReader(rawAsString.Trim()))
                    {
                        xDoc = new XPathDocument(textReader);
                    }
                }
                else
                {
                    xDoc = null;
                }
            }
            else if (raw is Stream)
            {
                xDoc = new XPathDocument((Stream)raw);
            }
            else if (raw is TextReader)
            {
                xDoc = new XPathDocument((TextReader)raw);
            }
            else if (raw is XmlReader)
            {
                xDoc = new XPathDocument((XmlReader)raw);
            }
            else
            {
                throw TagException.UnsupportedInput(raw.GetType(), typeof(XPathDocument), typeof(string),
                                                    typeof(Stream), typeof(TextReader),
                                                    typeof(XmlReader)).Decorate(attribute.Context);
            }

            return(xDoc);
        }
Exemple #8
0
        public static XPathDocument GetAsXmlDocument(ITagAttribute attribute, TagModel model, string fallBack)
        {
            XPathDocument xDoc = null;
            object raw = Get(attribute, model) ?? fallBack;
            if (raw == null)
            {
                return xDoc;
            }

            if (raw is XPathDocument)
            {
                xDoc = (XPathDocument) raw;
            }
            else if (raw is string)
            {
                if (!String.IsNullOrEmpty((string) raw))
                {
                    var rawAsString = (string) raw;
                    using (var textReader = new StringReader(rawAsString.Trim()))
                    {
                        xDoc = new XPathDocument(textReader);
                    }
                }
                else
                {
                    xDoc = null;
                }
            }
            else if (raw is Stream)
            {
                xDoc = new XPathDocument((Stream) raw);
            }
            else if (raw is TextReader)
            {
                xDoc = new XPathDocument((TextReader) raw);
            }
            else if (raw is XmlReader)
            {
                xDoc = new XPathDocument((XmlReader) raw);
            }
            else
            {
                throw TagException.UnsupportedInput(raw.GetType(), typeof (XPathDocument), typeof (string),
                                                    typeof (Stream), typeof (TextReader),
                                                    typeof (XmlReader)).Decorate(attribute.Context);
            }

            return xDoc;
        }
Exemple #9
0
        public string EvaluateNested(TagModel model)
        {
            var    sb       = new StringBuilder();
            string paramStr = GetAsString(_name, model) ?? String.Empty;

            if (!String.IsNullOrEmpty(paramStr))
            {
                ITagAttribute valueAttribute = Value ?? Body;
                string        valueStr       = GetAsString(valueAttribute, model) ?? String.Empty;
                sb.Append(paramStr);
                sb.Append("=");
                sb.Append(HttpUtility.UrlPathEncode(valueStr));
            }
            return(sb.ToString());
        }
Exemple #10
0
 public static string GetAsUrl(ITagAttribute expressions, TagModel model)
 {
     var result = GetAsString(expressions, model);
     if (result!=null && result.StartsWith("~"))
     {
         var relativePart = result.Substring(1);
         var appName = model.ApplicationName;
         result = "";
         if(!"/".Equals(appName))
         {
             result += model.ApplicationName;
         }
         result += relativePart;
     }
     return result;
 }
Exemple #11
0
        public static string GetAsUrl(ITagAttribute expressions, TagModel model)
        {
            var result = GetAsString(expressions, model);

            if (result != null && result.StartsWith("~"))
            {
                var relativePart = result.Substring(1);
                var appName      = model.ApplicationName;
                result = "";
                if (!"/".Equals(appName))
                {
                    result += model.ApplicationName;
                }
                result += relativePart;
            }
            return(result);
        }
Exemple #12
0
 public static bool GetAndEvaluateAsBool(ITagAttribute source, ITagAttribute xPath, TagModel model, bool fallBack)
 {
     bool result = fallBack;
     try
     {
         XPathNodeIterator nodes = GetAndEvaluate(source, xPath, model);
         if (nodes != null && nodes.Count > 0)
         {
             XPathNavigator node = GuardSingleNode(model, nodes, xPath);
             result = ParseBoolean(nodes.Current) ?? fallBack;
         }
     } catch (FormatException Fe)
     {
         throw TagException.IllegalXPath(Fe).Decorate(xPath.Context);
     }
     return result;
 }
Exemple #13
0
        public static bool GetAndEvaluateAsBool(ITagAttribute source, ITagAttribute xPath, TagModel model, bool fallBack)
        {
            bool result = fallBack;

            try
            {
                XPathNodeIterator nodes = GetAndEvaluate(source, xPath, model);
                if (nodes != null && nodes.Count > 0)
                {
                    XPathNavigator node = GuardSingleNode(model, nodes, xPath);
                    result = ParseBoolean(nodes.Current) ?? fallBack;
                }
            } catch (FormatException Fe)
            {
                throw TagException.IllegalXPath(Fe).Decorate(xPath.Context);
            }
            return(result);
        }
Exemple #14
0
        protected override Action <ITextControl> ExecutePsiTransaction(ISolution solution, IProgressIndicator progress)
        {
            IHtmlTagHeader tagHeader = GetTag();

            if (tagHeader == null)
            {
                return(null);
            }

            // The easiest way to create an attribute is to create an HTML tag with an attribute in it
            // and then get the attribute from the tag.
            HtmlElementFactory factory = HtmlElementFactory.GetInstance(tagHeader.Language);
            IHtmlTag           dummy   = factory.CreateHtmlTag("<tag id=\"\"/>", tagHeader);
            ITagAttribute      idAttr  = dummy.Attributes.Single();

            tagHeader.AddAttributeBefore(idAttr, null);

            // continuation to do after transaction committed
            return(textControl =>
                   // move cursor inside new created id attribute
                   textControl.Caret.MoveTo(idAttr.ValueElement.GetDocumentRange().TextRange.StartOffset, CaretVisualPlacement.Generic));
        }
Exemple #15
0
        public static XPathNodeIterator GetAndEvaluate(ITagAttribute source, ITagAttribute xPath, TagModel model)
        {
            string xPathAsStr = GetAsString(xPath, model);
            object var = model[GetAsString(source, model) ?? String.Empty];
            XPathNodeIterator result = null;
            if (var != null && xPathAsStr != null)
            {
            //                XmlNode node;
                XPathNavigator navigator;
                if (var is XPathNavigator)
                {
                    navigator = (XPathNavigator) var;
                }
                else
                {
                    navigator = ((IXPathNavigable) var).CreateNavigator();
                }

                var nsmgr = new XmlNamespaceManager(navigator.NameTable);
                nsmgr.AddNamespace("xsl", "http://www.w3.org/1999/XSL/Transform");
                result = navigator.Select(xPathAsStr, nsmgr);
            }
            return result;
        }
Exemple #16
0
        public object EvaluateNested(TagModel model)
        {
            ITagAttribute valueAttribute = Value ?? Body;

            return(Get(valueAttribute, model) ?? String.Empty);
        }
Exemple #17
0
        public static string GetAsString(ITagAttribute expressions, TagModel model)
        {
            object result = Get(expressions, model);

            return(result != null?result.ToString() : null);
        }
Exemple #18
0
 private static XPathNavigator GuardSingleNode(TagModel model, XPathNodeIterator nodes, ITagAttribute select)
 {
     if (nodes.Count > 1)
     {
         throw TagException.SingleNodeExpected(GetAsString(select, model)).Decorate(select.Context);
     }
     nodes.MoveNext();
     return nodes.Current;
 }
Exemple #19
0
        public static XmlReader GetAsXmlReader(ITagAttribute attribute, TagModel model, string fallBack)
        {
            XmlReader reader = null;
            object raw = Get(attribute, model) ?? fallBack;
            if (raw == null)
            {
                return reader;
            }
            if (raw is string && !String.IsNullOrEmpty((string) raw))
            {
                var textReader = new StringReader((string) raw);
                reader = XmlReader.Create(textReader);
            }
            else if (raw is Stream)
            {
                XmlReader.Create((Stream) raw);
            }
            else if (raw is TextReader)
            {
                reader = XmlReader.Create((TextReader) raw);
            }
            else if (raw is XmlReader)
            {
                reader = (XmlReader) raw;
            }
            else
            {
                throw TagException.UnsupportedInput(raw.GetType(), typeof (string), typeof (Stream), typeof (TextReader),
                                                    typeof (XmlReader)).Decorate(attribute.Context);
            }

            return reader;
        }
Exemple #20
0
        public static int?GetAsInt(ITagAttribute expressions, TagModel model)
        {
            object result = Get(expressions, model);

            return((int?)TypeConverter.To(result, typeof(int?)));
        }
Exemple #21
0
 protected bool?GetAsBool(ITagAttribute attribute, TagModel model)
 {
     return((bool?)TypeConverter.To(Get(attribute, model), typeof(bool?)));
 }
Exemple #22
0
 public static object Get(ITagAttribute expressions, TagModel model)
 {
     return(expressions != null?expressions.Evaluate(model) : null);
 }
 private void HandleBody(ITagAttribute value)
 {
     new Reflection(_tag)[TAG_BODY_NAME] = value;
 }
Exemple #24
0
        public static T?GetAs <T>(ITagAttribute expressions, TagModel model) where T : struct
        {
            string result = GetAsString(expressions, model);

            return(result != null ? EnumParser <T> .Parse(result) : default(T?));
        }
Exemple #25
0
 private static XPathNavigator GuardSingleNode(TagModel model, XPathNodeIterator nodes, ITagAttribute select)
 {
     if (nodes.Count > 1)
     {
         throw TagException.SingleNodeExpected(GetAsString(select, model)).Decorate(select.Context);
     }
     nodes.MoveNext();
     return(nodes.Current);
 }