コード例 #1
0
        /// <summary>
        /// Parse a markdown document
        /// </summary>
        /// <param name="content">The markdown text</param>
        /// <returns></returns>
        public RequirementSpecification Parse(string content)
        {
            _document.Parse(content);
            status = UsdmScope.None;

            var data = new RequirementSpecification();

            foreach (var element in _document.Blocks)
            {
                switch (element.Type)
                {
                case MarkdownBlockType.Header:
                    AnalyzeHeader(element, data);
                    break;

                case MarkdownBlockType.Paragraph:
                    AnalyzeParagraph(element, data);
                    break;

                case MarkdownBlockType.List:
                    AnalyzeList(element, data);
                    break;

                default:
                    Console.WriteLine($"Type: {element.Type}");
                    Console.WriteLine(element.ToString());
                    break;
                }
            }
            return(data);
        }
コード例 #2
0
        private void AnalyzeHeader(MarkdownBlock element, RequirementSpecification data)
        {
            var header = element as HeaderBlock;

            if (header != null)
            {
                var text = header.ToString().Trim();
                switch (header.HeaderLevel)
                {
                case 1:
                    data.Title = text;
                    break;

                case 2:
                {
                    var info = ParseUtility.DecomposeHeading(header);
                    data.Requirements.Add(
                        new UpperRequirement
                        {
                            ID      = info.id,
                            Summary = info.summary
                        }
                        );
                }
                break;

                case 3:
                    if (text.Equals("理由"))
                    {
                        status = UsdmScope.UpperRequiremetReason;
                    }
                    else if (text.Equals("説明"))
                    {
                        status = UsdmScope.UpperRequiremetDescription;
                    }
                    else
                    {
                        var info = ParseUtility.DecomposeHeading(header);
                        data.Requirements.Last().Requirements.Add(
                            new LowerRequirement
                        {
                            ID      = info.id,
                            Summary = info.summary
                        }
                            );
                    }
                    break;

                case 4:
                    if (text.Equals("理由"))
                    {
                        status = UsdmScope.LowerRequiremetReason;
                    }
                    else if (text.Equals("説明"))
                    {
                        status = UsdmScope.LowerRequiremetDescription;
                    }
                    else if (text.Equals("仕様"))
                    {
                        status = UsdmScope.Specification;
                    }
                    break;

                default:
                    Console.WriteLine($"Text: {text}");
                    Console.WriteLine($"Level: {header.HeaderLevel}");
                    Console.WriteLine(element.ToString());
                    status = UsdmScope.None;
                    break;
                }
            }
        }