Esempio n. 1
0
 private object Load(XamlXmlReader reader)
 {
     XamlObjectWriter writer = new ObjectWriter();
     while (reader.Read())
     {
         writer.WriteNode(reader);
     }
     writer.Close();
     reader.Close();
     if (writer.Result is DependencyObject && !(writer is INameScope))
         ((DependencyObject)writer.Result).SetValue(NameScope.NameScopeProperty, writer.RootNameScope);
     return writer.Result;
 }
Esempio n. 2
0
 public object LoadContent()
 {
     _Cache.Position = 0;
     XamlReader reader = new XamlXmlReader(_Cache, _SchemaContext);
     XamlObjectWriter writer = new Wodsoft.Web.Xaml.ObjectWriter(reader.SchemaContext);
     while (reader.Read())
     {
         writer.WriteNode(reader);
     }
     writer.Close();
     reader.Close();
     return writer.Result;
 }
        private bool ParseInput() {
            XamlXmlReader reader = null;
            try {
                try {
                    reader = new XamlXmlReader(InputFileName.ItemSpec, new XamlXmlReaderSettings { ProvideLineInfo = true });
                } catch (FileNotFoundException ex) {
                    LogError(1001, ex.Message);
                    return false;
                }

                bool classNameExpected = false, classModifierExpected = false;
                bool lambdaBodyExpected = false, importedNamespacesExpected = false;
                int nestingLevel = 0, lambdaNestingLevel = -1;
                while (reader.Read()) {
                    switch (reader.NodeType) {
                        case XamlNodeType.GetObject:
                            ++nestingLevel;
                            break;

                        case XamlNodeType.StartObject:
                            ++nestingLevel;
                            if (nestingLevel == 1) {
                                classNameLineNumber = reader.LineNumber;
                            }
                            if ((reader.Type.Name == "Lambda" || reader.Type.Name == "LambdaExtension") && IsLambdaNamespace(reader.Type.PreferredXamlNamespace)) {
                                lambdaNestingLevel = nestingLevel;
                            }
                            break;

                        case XamlNodeType.EndObject:
                            --nestingLevel;
                            if (nestingLevel < lambdaNestingLevel) {
                                lambdaNestingLevel = -1;
                            }
                            break;

                        case XamlNodeType.StartMember:
                            if (nestingLevel == 1) {
                                if (reader.Member.PreferredXamlNamespace == XamlLanguage.Xaml2006Namespace) {
                                    switch (reader.Member.Name) {
                                        case "Class": {
                                                classNameExpected = true;
                                            } break;

                                        case "ClassModifier": {
                                                classModifierExpected = true;
                                            } break;
                                    }
                                } else if (reader.Member.DeclaringType != null && IsLambdaNamespace(reader.Member.DeclaringType.PreferredXamlNamespace)) {
                                    if (reader.Member.Name == "ImportedNamespaces" && reader.Member.DeclaringType.Name == "LambdaProperties") {
                                        importedNamespacesExpected = true;
                                    }
                                }
                            } else if (nestingLevel == lambdaNestingLevel) {
                                if (reader.Member == XamlLanguage.UnknownContent || reader.Member == XamlLanguage.PositionalParameters || reader.Member.Name == "Lambda") {
                                    lambdaBodyExpected = true;
                                }
                            }
                            break;

                        case XamlNodeType.EndMember:
                            classNameExpected = lambdaBodyExpected = importedNamespacesExpected = false;
                            break;

                        case XamlNodeType.Value:
                            if (classNameExpected) {
                                classNameExpected = false;
                                className = (string)reader.Value;
                                classNameLineNumber = reader.LineNumber;
                            } else if (classModifierExpected) {
                                classModifierExpected = false;
                                classModifier = (string)reader.Value;
                                classModifierLineNumber = reader.LineNumber;
                            } else if (importedNamespacesExpected) {
                                importedNamespaces.Clear();
                                importedNamespaces.AddRange(((string)reader.Value).Split(" \f\n\r\t".ToCharArray(), StringSplitOptions.RemoveEmptyEntries));
                                importedNamespacesLineNumber = reader.LineNumber;
                            } else if (lambdaBodyExpected) {
                                lambdas.Add(new LambdaInfo { Code = (string)reader.Value, LineNumber = reader.LineNumber });
                            }
                            break;
                    }
                }
            } catch (IOException ex) {
                LogError(1002, ex.Message);
                return false;
            } catch (XmlException ex) {
                LogError(1003, ex.Message);
                return false;
            } catch (XamlException ex) {
                LogError(1004, ex.Message);
                return false;
            } finally {
                if (reader != null) {
                    reader.Close();
                }
            }

            return true;
        }
 public ActivityBuilder LoadActivityBuilder(string fileName)
 {
     ActivityBuilder builder;
     using (var xamlReader = new XamlXmlReader(fileName))
     {
         var builderReader = ActivityXamlServices.CreateBuilderReader(xamlReader);
         builder = (ActivityBuilder)XamlServices.Load(builderReader);
         xamlReader.Close();
     }
     return builder;
 }