Esempio n. 1
0
        public object ProvideValue(IServiceProvider serviceProvider)
        {
            // For throwing parsing error
            IXmlLineInfo lineInfo;

            if (serviceProvider.GetService(typeof(IXmlLineInfoProvider)) is IXmlLineInfoProvider lineInfoProvider)
            {
                lineInfo = lineInfoProvider.XmlLineInfo;
            }
            else
            {
                lineInfo = new XmlLineInfo();
            }

            // Null Argument?
            if (string.IsNullOrWhiteSpace(Argument))
            {
                throw new XamlParseException($"{GetType().Name} requires {nameof(Argument)} property to be set", lineInfo);
            }

            // Parse Argument
            object value = ParseValue(lineInfo);

            CheckValue(serviceProvider, lineInfo, value);
            return(value);
        }
        public ImageSource ProvideValue(IServiceProvider serviceProvider)
        {
            if (String.IsNullOrEmpty(Source))
            {
                IXmlLineInfoProvider lineInfoProvider = serviceProvider
                                                        .GetService(typeof(XmlLineInfoProvider)) as IXmlLineInfoProvider;
                IXmlLineInfo lineInfo;
                if (lineInfoProvider != null)
                {
                    lineInfo = lineInfoProvider.XmlLineInfo;
                }
                else
                {
                    lineInfo = new XmlLineInfo();
                }
                throw new XamlParseException("" + "La extensión requiere que la propiedad Source no sea vacía", lineInfo);
            }


            var    assembly     = GetType().GetTypeInfo().Assembly;
            string assemblyName = assembly.GetName().Name;
            var    image        = assemblyName + "." + Source;

            return(ImageSource.FromResource(image, assembly));
        }
Esempio n. 3
0
        public void XmlLineInfoConstructor2()
        {
            tlog.Debug(tag, $"XmlLineInfoConstructor START");

            XmlLineInfo xmlLineInfo2 = new XmlLineInfo(10, 5);

            tlog.Debug(tag, $"XmlLineInfoConstructor END (OK)");
            Assert.Pass("XmlLineInfoConstructor");
        }
Esempio n. 4
0
        public void XmlLineInfoConstructor1()
        {
            tlog.Debug(tag, $"XmlLineInfoConstructor1 START");

            XmlLineInfo xmlLineInfo1 = new XmlLineInfo();

            Assert.IsNotNull(xmlLineInfo1, "null XmlLineInfo");
            Assert.IsInstanceOf <XmlLineInfo>(xmlLineInfo1, "Should return XmlLineInfo instance.");
            tlog.Debug(tag, $"XmlLineInfoConstructor1 END");
        }
Esempio n. 5
0
        public void XmlLineInfoConstructor2()
        {
            tlog.Debug(tag, $"XmlLineInfoConstructor2 START");

            var testingTarget = new XmlLineInfo(10, 5);

            Assert.IsNotNull(testingTarget, "null XmlLineInfo");
            Assert.IsInstanceOf <XmlLineInfo>(testingTarget, "Should return XmlLineInfo instance.");

            tlog.Debug(tag, $"XmlLineInfoConstructor2 END");
        }
Esempio n. 6
0
        /// <param name="serviceProvider">To be added.</param>
        /// <summary>For internal use by the XAML infrastructure.</summary>
        /// <returns>To be added.</returns>
        /// <remarks>To be added.</remarks>
        public object ProvideValue(IServiceProvider serviceProvider)
        {
            if (serviceProvider == null)
            {
                throw new ArgumentNullException("serviceProvider");
            }
            if (this.Key == null)
            {
                IXmlLineInfoProvider lineInfoProvider = serviceProvider.GetService(typeof(IXmlLineInfoProvider)) as IXmlLineInfoProvider;
                IXmlLineInfo         arg_40_0;
                if (lineInfoProvider == null)
                {
                    IXmlLineInfo xmlLineInfo2 = new XmlLineInfo();
                    arg_40_0 = xmlLineInfo2;
                }
                else
                {
                    arg_40_0 = lineInfoProvider.XmlLineInfo;
                }
                IXmlLineInfo lineInfo = arg_40_0;
                throw new XamlParseException("you must specify a key in {StaticResource}", lineInfo);
            }
            IProvideParentValuesPublic expr_62 = serviceProvider.GetService(typeof(IProvideValueTarget)) as IProvideParentValuesPublic;

            if (expr_62 == null)
            {
                throw new ArgumentException();
            }
            IXmlLineInfoProvider xmlLineInfoProvider = serviceProvider.GetService(typeof(IXmlLineInfoProvider)) as IXmlLineInfoProvider;
            IXmlLineInfo         xmlLineInfo         = (xmlLineInfoProvider != null) ? xmlLineInfoProvider.XmlLineInfo : null;

            using (IEnumerator <object> enumerator = expr_62.ParentObjects.GetEnumerator())
            {
                while (enumerator.MoveNext())
                {
                    VisualElement ve = enumerator.Current as VisualElement;
                    object        res;
                    if (ve != null && ve.Resources != null && ve.Resources.TryGetValue(this.Key, out res))
                    {
                        object result = res;
                        return(result);
                    }
                }
            }
            if (Application.Current != null && Application.Current.Resources != null && Application.Current.Resources.ContainsKey(this.Key))
            {
                return(Application.Current.Resources[this.Key]);
            }

            return(null);
        }
Esempio n. 7
0
        private object Parse(string match, ref string remaining, IServiceProvider serviceProvider)
        {
            IXamlTypeResolver typeResolver = serviceProvider.GetService(typeof(IXamlTypeResolver)) as IXamlTypeResolver;

            if (match == "Binding")
            {
                this.markupExtension = new BindingExtension();
            }
            else if (match == "TemplateBinding")
            {
                this.markupExtension = new TemplateBindingExtension();
            }
            else if (match == "StaticResource")
            {
                this.markupExtension = new StaticResourceExtension();
            }
            else if (match == "DynamicResource")
            {
                this.markupExtension = new DynamicResourceExtension();
            }
            else
            {
                if (typeResolver == null)
                {
                    return(null);
                }
                Type type;
                if (!typeResolver.TryResolve(match + "Extension", out type) && !typeResolver.TryResolve(match, out type))
                {
                    IXmlLineInfoProvider lineInfoProvider = serviceProvider.GetService(typeof(IXmlLineInfoProvider)) as IXmlLineInfoProvider;
                    IXmlLineInfo         arg_BF_0;
                    if (lineInfoProvider == null)
                    {
                        IXmlLineInfo xmlLineInfo = new XmlLineInfo();
                        arg_BF_0 = xmlLineInfo;
                    }
                    else
                    {
                        arg_BF_0 = lineInfoProvider.XmlLineInfo;
                    }
                    IXmlLineInfo lineInfo = arg_BF_0;
                    throw new XamlParseException(string.Format("MarkupExtension not found for {0}", new object[]
                    {
                        match
                    }), lineInfo);
                }
                this.markupExtension = (Activator.CreateInstance(type) as IMarkupExtension);
            }
            if (this.markupExtension == null)
            {
                IXmlLineInfoProvider lineInfoProvider2 = serviceProvider.GetService(typeof(IXmlLineInfoProvider)) as IXmlLineInfoProvider;
                IXmlLineInfo         arg_123_0;
                if (lineInfoProvider2 == null)
                {
                    IXmlLineInfo xmlLineInfo = new XmlLineInfo();
                    arg_123_0 = xmlLineInfo;
                }
                else
                {
                    arg_123_0 = lineInfoProvider2.XmlLineInfo;
                }
                IXmlLineInfo lineInfo2 = arg_123_0;
                throw new XamlParseException(string.Format("Missing public default constructor for MarkupExtension {0}", new object[]
                {
                    match
                }), lineInfo2);
            }
            if (remaining == "}")
            {
                return(this.markupExtension);
            }
            char   next;
            string piece;

            while ((piece = GetNextPiece(ref remaining, out next)) != null)
            {
                HandleProperty(piece, serviceProvider, ref remaining, next != '=');
            }
            return(this.markupExtension);
        }
Esempio n. 8
0
        private ITag LoadTag(XNode xmlNode, IList <Include> includes)
        {
            ITag tag          = null;
            var  prepend      = xmlNode?.GetAttribute("Prepend")?.Trim();
            var  property     = xmlNode?.GetAttribute("Property")?.Trim();
            var  compareValue = xmlNode?.GetAttribute("CompareValue")?.Trim();

            #region Init Tag
            switch (xmlNode.GetName())
            {
            case "#text":
            case "#cdata-section":
            {
                var bodyText = " " + xmlNode.GetValue().Replace("\n", "").Trim();
                return(new SqlText
                    {
                        LineInfo = XmlLineInfo.Create(xmlNode),
                        BodyText = bodyText
                    });
            }

            case "If":
            {
                tag = new IfTag
                {
                    Test = xmlNode.GetAttribute("Test")
                };
                break;
            }

            case "Include":
            {
                var refId       = xmlNode?.GetAttribute("RefId");
                var include_tag = new Include
                {
                    RefId   = refId,
                    Prepend = prepend
                };
                includes.Add(include_tag);
                tag = include_tag;
                break;
            }

            case "IsEmpty":
            {
                tag = new IsEmpty
                {
                    Prepend   = prepend,
                    Property  = property,
                    ChildTags = new List <ITag>()
                };
                break;
            }

            case "IsEqual":
            {
                tag = new IsEqual
                {
                    Prepend      = prepend,
                    Property     = property,
                    CompareValue = compareValue,
                    ChildTags    = new List <ITag>()
                };
                break;
            }

            case "Bind":
            {
                tag = new BindTag
                {
                    Name  = xmlNode.GetAttribute("Name"),
                    Value = xmlNode.GetAttribute("Value"),
                };
                break;
            }

            case "Trim":
            {
                tag = new TrimTag
                {
                    Prefix          = xmlNode.GetAttribute("Prefix"),
                    PrefixOverrides = xmlNode.GetAttribute("PrefixOverrides"),
                    Suffix          = xmlNode.GetAttribute("Suffix"),
                    ChildTags       = new List <ITag>(),
                };
                break;
            }

            case "IsGreaterEqual":
            {
                tag = new IsGreaterEqual
                {
                    Prepend      = prepend,
                    Property     = property,
                    CompareValue = compareValue,
                    ChildTags    = new List <ITag>()
                };
                break;
            }

            case "IsGreaterThan":
            {
                tag = new IsGreaterThan
                {
                    Prepend      = prepend,
                    Property     = property,
                    CompareValue = compareValue,
                    ChildTags    = new List <ITag>()
                };
                break;
            }

            case "IsLessEqual":
            {
                tag = new IsLessEqual
                {
                    Prepend      = prepend,
                    Property     = property,
                    CompareValue = compareValue,
                    ChildTags    = new List <ITag>()
                };
                break;
            }

            case "IsLessThan":
            {
                tag = new IsLessThan
                {
                    Prepend      = prepend,
                    Property     = property,
                    CompareValue = compareValue,
                    ChildTags    = new List <ITag>()
                };
                break;
            }

            case "IsNotEmpty":
            {
                tag = new IsNotEmpty
                {
                    Prepend   = prepend,
                    Property  = property,
                    ChildTags = new List <ITag>()
                };
                break;
            }

            case "IsNotEqual":
            {
                tag = new IsNotEqual
                {
                    Prepend      = prepend,
                    Property     = property,
                    CompareValue = compareValue,
                    ChildTags    = new List <ITag>()
                };
                break;
            }

            case "IsNotNull":
            {
                tag = new IsNotNull
                {
                    Prepend   = prepend,
                    Property  = property,
                    ChildTags = new List <ITag>()
                };
                break;
            }

            case "IsNull":
            {
                tag = new IsNull
                {
                    Prepend   = prepend,
                    Property  = property,
                    ChildTags = new List <ITag>()
                };
                break;
            }

            case "IsTrue":
            {
                tag = new IsTrue
                {
                    Prepend   = prepend,
                    Property  = property,
                    ChildTags = new List <ITag>()
                };
                break;
            }

            case "IsFalse":
            {
                tag = new IsFalse
                {
                    Prepend   = prepend,
                    Property  = property,
                    ChildTags = new List <ITag>()
                };
                break;
            }

            case "IsProperty":
            {
                tag = new IsProperty
                {
                    Prepend   = prepend,
                    Property  = property,
                    ChildTags = new List <ITag>()
                };
                break;
            }

            case "Placeholder":
            {
                tag = new Placeholder
                {
                    Prepend   = prepend,
                    Property  = property,
                    ChildTags = new List <ITag>()
                };
                break;
            }

            case "Switch":
            {
                tag = new Switch
                {
                    Property  = property,
                    Prepend   = prepend,
                    ChildTags = new List <ITag>()
                };
                break;
            }

            case "Case":
            {
                var switchNode     = xmlNode.Parent;
                var switchProperty = xmlNode?.GetAttribute("Property")?.Trim();
                var switchPrepend  = xmlNode?.GetAttribute("Prepend")?.Trim();
                tag = new Switch.Case
                {
                    CompareValue = compareValue,
                    Property     = switchProperty,
                    Prepend      = switchPrepend,
                    Test         = xmlNode?.GetAttribute("Test")?.Trim(),
                    ChildTags    = new List <ITag>()
                };
                break;
            }

            case "Default":
            {
                var switchNode     = xmlNode.Parent;
                var switchProperty = xmlNode?.GetAttribute("Property")?.Trim();
                var switchPrepend  = xmlNode?.GetAttribute("Prepend")?.Trim();
                tag = new Switch.Defalut
                {
                    Property  = switchProperty,
                    Prepend   = switchPrepend,
                    ChildTags = new List <ITag>()
                };
                break;
            }

            case "Dynamic":
            {
                tag = new Dynamic
                {
                    Prepend   = prepend,
                    ChildTags = new List <ITag>()
                };
                break;
            }

            case "Where":
            {
                tag = new Where
                {
                    ChildTags = new List <ITag>()
                };
                break;
            }

            case "Set":
            {
                tag = new Set
                {
                    ChildTags = new List <ITag>()
                };
                break;
            }

            case "For":
            {
                var open      = xmlNode?.GetAttribute("Open")?.Trim();
                var separator = xmlNode?.GetAttribute("Separator")?.Trim();
                var close     = xmlNode?.GetAttribute("Close")?.Trim();
                var key       = xmlNode?.GetAttribute("Key")?.Trim();
                var index     = xmlNode?.GetAttribute("Index")?.Trim();
                tag = new For
                {
                    Prepend   = prepend,
                    Property  = property,
                    Open      = open,
                    Close     = close,
                    Index     = index,
                    Separator = separator,
                    Key       = key,
                    ChildTags = new List <ITag>()
                };
                break;
            }

            case "Env":
            {
                var dbProvider = xmlNode?.GetAttribute("DbProvider")?.Trim();
                tag = new Env
                {
                    Prepend    = prepend,
                    DbProvider = dbProvider,
                    ChildTags  = new List <ITag>()
                };
                break;
            }

            case "#comment": { break; }

            default:
            {
                throw new SmartSqlException($"Statement.LoadTag unkonw tagName:{xmlNode.GetName()}.");
            };
            }
            #endregion
            if (tag != null)
            {
                tag.LineInfo = XmlLineInfo.Create(xmlNode);
            }
            if (xmlNode is XElement ell)
            {
                foreach (XNode childNode in ell.Nodes())
                {
                    ITag childTag = LoadTag(childNode, includes);
                    if (childTag != null && tag != null)
                    {
                        childTag.Parent = tag;
                        (tag as Tag).ChildTags.Add(childTag);
                    }
                }
            }
            return(tag);
        }
Esempio n. 9
0
 public void Destroy()
 {
     x1 = null;
     tlog.Info(tag, "Destroy() is called!");
 }
Esempio n. 10
0
 public void Init()
 {
     tlog.Info(tag, "Init() is called!");
     x1 = new XmlLineInfo();
 }