public override ProcessingPriority GetProcessingPriority(FileAndType file)
        {
            switch (file.Type)
            {
            case DocumentType.Article:
                if (".yml".Equals(Path.GetExtension(file.File), StringComparison.OrdinalIgnoreCase) ||
                    ".yaml".Equals(Path.GetExtension(file.File), StringComparison.OrdinalIgnoreCase))
                {
                    var mime = YamlMime.ReadMime(file.File);
                    switch (mime)
                    {
                    case Constants.JavaScriptReferenceYamlMime:
                        return(ProcessingPriority.Normal);

                    default:
                        return(ProcessingPriority.NotSupported);
                    }
                }
                break;

            case DocumentType.Overwrite:
                if (".md".Equals(Path.GetExtension(file.File), StringComparison.OrdinalIgnoreCase))
                {
                    return(ProcessingPriority.Normal);
                }
                break;
            }
            return(ProcessingPriority.NotSupported);
        }
        public override ProcessingPriority GetProcessingPriority(FileAndType file)
        {
            switch (file.Type)
            {
            case DocumentType.Article:
                if (".yml".Equals(Path.GetExtension(file.File), StringComparison.OrdinalIgnoreCase) ||
                    ".yaml".Equals(Path.GetExtension(file.File), StringComparison.OrdinalIgnoreCase))
                {
                    var mime = YamlMime.ReadMime(file.File);
                    if (string.Equals(mime, YamlMime.YamlMimePrefix + _schemaName))
                    {
                        return(ProcessingPriority.Normal);
                    }

                    return(ProcessingPriority.NotSupported);
                }

                break;

            case DocumentType.Overwrite:
                if (_allowOverwrite && ".md".Equals(Path.GetExtension(file.File), StringComparison.OrdinalIgnoreCase))
                {
                    return(ProcessingPriority.Normal);
                }
                break;

            default:
                break;
            }
            return(ProcessingPriority.NotSupported);
        }
Esempio n. 3
0
        public override ProcessingPriority GetProcessingPriority(FileAndType file)
        {
            switch (file.Type)
            {
            case DocumentType.Article:
                if (".yml".Equals(Path.GetExtension(file.File), StringComparison.OrdinalIgnoreCase) ||
                    ".yaml".Equals(Path.GetExtension(file.File), StringComparison.OrdinalIgnoreCase))
                {
                    var mime = YamlMime.ReadMime(file.File);
                    if (string.Equals(mime, YamlMime.YamlMimePrefix + _schemaName))
                    {
                        return(ProcessingPriority.Normal);
                    }

                    return(ProcessingPriority.NotSupported);
                }

                break;

            // temporarily disable loading of overwrite documents in SDP
            // TODO: reenable processing of overwrite documents in SDP
            //case DocumentType.Overwrite:
            //    if (".md".Equals(Path.GetExtension(file.File), StringComparison.OrdinalIgnoreCase))
            //    {
            //        return ProcessingPriority.Normal;
            //    }
            //    break;
            default:
                break;
            }
            return(ProcessingPriority.NotSupported);
        }
Esempio n. 4
0
        public void TestBoolean()
        {
            var sw = new StringWriter();

            YamlUtility.Serialize(sw, new object[] { true, false }, YamlMime.YamlMimePrefix + "Test-Yaml-Mime");
            var yaml = sw.ToString();

            Assert.Equal(@"### YamlMime:Test-Yaml-Mime
- true
- false
".Replace("\r\n", "\n"), yaml.Replace("\r\n", "\n"));
            Assert.Equal("YamlMime:Test-Yaml-Mime", YamlMime.ReadMime(new StringReader(yaml)));
            var value = YamlUtility.Deserialize <object[]>(new StringReader(yaml));

            Assert.NotNull(value);
            Assert.Equal(2, value.Length);
            Assert.Equal(true, value[0]);
            Assert.Equal(false, value[1]);
            var value2 = YamlUtility.Deserialize <object[]>(new StringReader(@"### YamlMime:Test-Yaml-Mime
- true
- True
- TRUE
- false
- False
- FALSE
"));

            Assert.NotNull(value2);
            Assert.Equal(new[] { true, true, true, false, false, false }, value2.Cast <bool>());
        }
Esempio n. 5
0
        public void TestYamlMime_Success()
        {
            var sw = new StringWriter();

            YamlUtility.Serialize(sw, 1, YamlMime.YamlMimePrefix + "Test-Yaml-Mime");
            var yaml = sw.ToString();

            Assert.Equal("YamlMime:Test-Yaml-Mime", YamlMime.ReadMime(new StringReader(yaml)));
        }
Esempio n. 6
0
        public void TestYamlMime_NoYamlMime()
        {
            var sw = new StringWriter();

            YamlUtility.Serialize(sw, 1, "No-Yaml-Mime");
            var yaml = sw.ToString();

            Assert.Null(YamlMime.ReadMime(new StringReader(yaml)));
        }
Esempio n. 7
0
        private static void ProcessFilePair(string ymlInputFile, string ymlOutputFile, string mdFile, Dictionary <string, DocumentSchema> schemas)
        {
            var yamlStream = new YamlStream();

            using (var sr = new StreamReader(ymlInputFile))
            {
                yamlStream.Load(sr);
            }
            if (yamlStream.Documents.Count != 1)
            {
                throw new NotSupportedException("Does not support mutiple YAML documents");
            }

            var mime = YamlMime.ReadMime(ymlInputFile);

            if (string.IsNullOrEmpty(mime))
            {
                Console.WriteLine("Cannot find MIME in {0}", ymlInputFile);
                return;
            }
            var schemaName = mime.Substring(YamlMime.YamlMimePrefix.Length);

            if (!schemas.ContainsKey(schemaName))
            {
                Console.WriteLine("Schema {0} not found", schemaName);
                return;
            }
            var schema = schemas[schemaName];

            var mdFragments = FragmentModelHelper.LoadMarkdownFragment(mdFile);

            _iterator.Traverse(yamlStream.Documents[0].RootNode, mdFragments, schema);

            var validFragments = mdFragments.Values.Where(v => v.Properties?.Count > 0).ToList();

            if (validFragments.Count > 0)
            {
                StringBuilder sb = new StringBuilder();
                foreach (var fragment in validFragments)
                {
                    sb.AppendLine(fragment.ToString());
                }
                var mdFolder = Path.GetDirectoryName(mdFile);
                if (!Directory.Exists(mdFolder))
                {
                    Directory.CreateDirectory(mdFolder);
                }
                File.WriteAllText(mdFile, sb.ToString());

                var ymlFolder = Path.GetDirectoryName(ymlOutputFile);
                if (!Directory.Exists(ymlFolder))
                {
                    Directory.CreateDirectory(ymlFolder);
                }
                YamlUtility.Serialize(ymlOutputFile, yamlStream.Documents[0].RootNode, mime);
            }
        }
Esempio n. 8
0
 public static void SetSchemaName(MarkdownDocument document)
 {
     // TODO: add this detection logic in terms of performance optimization, should remove once mime is available in context
     if (InclusionContext.IsInclude &&
         (string.Equals(Path.GetExtension(InclusionContext.RootFile?.ToString()), ".yml", StringComparison.OrdinalIgnoreCase) ||
          string.Equals(Path.GetExtension(InclusionContext.RootFile?.ToString()), ".yaml", StringComparison.OrdinalIgnoreCase)))
     {
         var schemaName = YamlMime.ReadMime(InclusionContext.RootFile?.ToString());
         if (!string.IsNullOrEmpty(schemaName))
         {
             document.SetData("SchemaName", schemaName);
         }
     }
 }
Esempio n. 9
0
        protected override FileModel LoadArticle(FileAndType file, ImmutableDictionary <string, object> metadata)
        {
            if (YamlMime.ReadMime(file.File) == null)
            {
                Logger.LogWarning(
                    "Please add yamlmime in the first line of file, e.g.: `### YamlMime:ManagedReference`, we will decline yaml files without yamlmime in next release.",
                    file: file.File,
                    code: WarningCodes.Yaml.MissingYamlMime);
            }

            var page = YamlUtility.Deserialize <PageViewModel>(file.File);

            if (page.Items == null || page.Items.Count == 0)
            {
                return(null);
            }
            if (page.Metadata == null)
            {
                page.Metadata = metadata.ToDictionary(p => p.Key, p => p.Value);
            }
            else
            {
                foreach (var item in metadata)
                {
                    if (!page.Metadata.ContainsKey(item.Key))
                    {
                        page.Metadata[item.Key] = item.Value;
                    }
                }
            }
            page.Metadata[Constants.PropertyName.SystemKeys] = SystemKeys;

            var localPathFromRoot = PathUtility.MakeRelativePath(EnvironmentContext.BaseDirectory, EnvironmentContext.FileAbstractLayer.GetPhysicalPath(file.File));

            return(new FileModel(file, page, serializer: new BinaryFormatter())
            {
                Uids = (from item in page.Items select item.Uid)
                       .Concat(from item in page.Items where item.Overload != null select item.Overload)
                       .Distinct().Select(s => new UidDefinition(s, localPathFromRoot)).ToImmutableArray(),
                LocalPathFromRoot = localPathFromRoot
            });
        }
Esempio n. 10
0
        public override ProcessingPriority GetProcessingPriority(FileAndType file)
        {
            switch (file.Type)
            {
            case DocumentType.Article:
                if (".yml".Equals(Path.GetExtension(file.File), StringComparison.OrdinalIgnoreCase) ||
                    ".yaml".Equals(Path.GetExtension(file.File), StringComparison.OrdinalIgnoreCase))
                {
                    var mime = YamlMime.ReadMime(Path.Combine(file.BaseDir, file.File));
                    switch (mime)
                    {
                    case YamlMime.ManagedReference:
                        return(ProcessingPriority.Normal);

                    case null:
                        return(ProcessingPriority.BelowNormal);

                    default:
                        return(ProcessingPriority.NotSupported);
                    }
                }

                if (".csyml".Equals(Path.GetExtension(file.File), StringComparison.OrdinalIgnoreCase) ||
                    ".csyaml".Equals(Path.GetExtension(file.File), StringComparison.OrdinalIgnoreCase))
                {
                    return(ProcessingPriority.Normal);
                }

                break;

            case DocumentType.Overwrite:
                if (".md".Equals(Path.GetExtension(file.File), StringComparison.OrdinalIgnoreCase))
                {
                    return(ProcessingPriority.Normal);
                }
                break;

            default:
                break;
            }
            return(ProcessingPriority.NotSupported);
        }
Esempio n. 11
0
        public void TestBasicClass()
        {
            var sw = new StringWriter();

            YamlUtility.Serialize(sw, new BasicClass {
                B = 1, C = "Good!"
            }, YamlMime.YamlMimePrefix + "Test-Yaml-Mime");
            var yaml = sw.ToString();

            Assert.Equal(@"### YamlMime:Test-Yaml-Mime
B: 1
C: Good!
".Replace("\r\n", "\n"), yaml.Replace("\r\n", "\n"));
            Assert.Equal("YamlMime:Test-Yaml-Mime", YamlMime.ReadMime(new StringReader(yaml)));
            var value = YamlUtility.Deserialize <BasicClass>(new StringReader(yaml));

            Assert.NotNull(value);
            Assert.Equal(1, value.B);
            Assert.Equal("Good!", value.C);
        }
        public override ProcessingPriority GetProcessingPriority(FileAndType file)
        {
            if (file.Type != DocumentType.Article)
            {
                return(ProcessingPriority.NotSupported);
            }
            if (!".yml".Equals(Path.GetExtension(file.File), StringComparison.OrdinalIgnoreCase) &&
                !".yaml".Equals(Path.GetExtension(file.File), StringComparison.OrdinalIgnoreCase))
            {
                return(ProcessingPriority.NotSupported);
            }
            var mime = YamlMime.ReadMime(file.File);

            switch (mime)
            {
            case YamlDocumentYamlMime:
                return(ProcessingPriority.Normal);

            default:
                return(ProcessingPriority.NotSupported);
            }
        }
Esempio n. 13
0
        public void TestBigInteger()
        {
            var sw = new StringWriter();

            YamlUtility.Serialize(sw, new object[] { 1234567890000L, 9876543210000L, long.MaxValue, ulong.MaxValue }, YamlMime.YamlMimePrefix + "Test-Yaml-Mime");
            var yaml = sw.ToString();

            Assert.Equal(@"### YamlMime:Test-Yaml-Mime
- 1234567890000
- 9876543210000
- 9223372036854775807
- 18446744073709551615
".Replace("\r\n", "\n"), yaml.Replace("\r\n", "\n"));
            Assert.Equal("YamlMime:Test-Yaml-Mime", YamlMime.ReadMime(new StringReader(yaml)));
            var value = YamlUtility.Deserialize <object[]>(new StringReader(yaml));

            Assert.NotNull(value);
            Assert.Equal(4, value.Length);
            Assert.Equal(1234567890000L, value[0]);
            Assert.Equal(9876543210000L, value[1]);
            Assert.Equal(long.MaxValue, value[2]);
            Assert.Equal(ulong.MaxValue, value[3]);
        }