|
|
@@ -99,8 +99,15 @@ namespace Perspex.Markup.Xaml.Parsers
|
|
|
from template in Parse.String("/template/").Token()
|
|
|
select new TemplateSyntax();
|
|
|
|
|
|
+ public static readonly Parser<IsSyntax> Is =
|
|
|
+ from function in Parse.String(":is(")
|
|
|
+ from type in OfType
|
|
|
+ from close in Parse.Char(')')
|
|
|
+ select new IsSyntax { TypeName = type.TypeName, Xmlns = type.Xmlns };
|
|
|
+
|
|
|
public static readonly Parser<ISyntax> SingleSelector =
|
|
|
OfType
|
|
|
+ .Or<ISyntax>(Is)
|
|
|
.Or<ISyntax>(Name)
|
|
|
.Or<ISyntax>(Class)
|
|
|
.Or<ISyntax>(Property)
|
|
|
@@ -126,6 +133,18 @@ namespace Perspex.Markup.Xaml.Parsers
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ public class IsSyntax : ISyntax
|
|
|
+ {
|
|
|
+ public string TypeName { get; set; }
|
|
|
+
|
|
|
+ public string Xmlns { get; set; }
|
|
|
+
|
|
|
+ public override bool Equals(object obj)
|
|
|
+ {
|
|
|
+ return obj is IsSyntax && ((IsSyntax)obj).TypeName == TypeName;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
public class ClassSyntax : ISyntax
|
|
|
{
|
|
|
public string Class { get; set; }
|