示例#1
0
文件: CodeParser.cs 项目: forki/Labs
        private Slide BuildSlide(IEnumerable <Token> tokens)
        {
            if (tokens == null || !tokens.Any())
            {
                return(null);
            }

            var xml = new XElement("tokens",
                                   from t in tokens.NonCodeTokens().First()
                                   select new XElement("token",
                                                       new XAttribute("type", t.Type.ToString()),
                                                       new XAttribute("value", t.Value),
                                                       new XAttribute("rawValue", t.RawValue),
                                                       new XAttribute("start", t.Start),
                                                       new XAttribute("end", t.End)),
                                   from c in tokens.CodeTokens().First()
                                   .Where(x => x.Type.Equals(TokenType.InlineCode) && x.Value.Length > 3)
                                   select new XElement("code",
                                                       new XAttribute("language", c.Value.Substring(3)),
                                                       new XCData(
                                                           tokens.Where(tk => tk.IsCode).Aggregate(string.Empty, (aggregated, token) =>
            {
                aggregated += token.RawValue + Environment.NewLine; return(aggregated);
            })))
                                   );

            var transXml = _apiService.TransformXml(xml, "token2slide.xslt").GetAwaiter().GetResult();

            if (!string.IsNullOrEmpty(transXml))
            {
                return(XmlHelper2 <Slide> .LoadFromString(transXml));
            }

            return(new Slide());
        }
示例#2
0
文件: CodeParser.cs 项目: forki/Labs
        public async Task <string> Parse(Slide item)
        {
            var xml = XmlHelper2 <Slide> .Save(item);

            return(await _apiService.TransformXml(XElement.Load(new StringReader(xml)), "slide2markdown.xslt"));
        }