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()); }
public async Task <bool> AddItem(T item) { var className = item.GetType().FullName.Split('.').Last().ToLower(); string value = string.Empty; if (_contentType.EndsWith("json")) { value = JsonConvert.SerializeObject(item); } else { value = XmlHelper2 <T> .Save(item); } using (var content = new ByteArrayContent(Encoding.UTF8.GetBytes(value))) { content.Headers.Add("Content-Type", _contentType); content.Headers.Add("Content-Length", value.Length.ToString()); var response = await _client.PostAsync(_baseUrl + className + "/add", content); return(response.IsSuccessStatusCode); } }
public async Task <string> Parse(Slide item) { var xml = XmlHelper2 <Slide> .Save(item); return(await _apiService.TransformXml(XElement.Load(new StringReader(xml)), "slide2markdown.xslt")); }
public void Markdown_Generated_WhenValidSlideProvided() { #region vars var xml = @"<?xml version='1.0' encoding='utf-8' ?> <Slide Title='Dependency Injection with Windsor Castle' Margin='-200,0,0,0'> <RichTextBlock FontSize='20' FontWeight='DemiBold'> <Paragraph> <Bold>Windsor Castle Container</Bold> </Paragraph> <Paragraph> <Run>Dependency Injection</Run> </Paragraph> </RichTextBlock> <Component Id='94928827-5412-4BC8-A279-EB88E21AC64F' Name='Windsor Castle' IsBrowsable='true' Action='View' TargetFile='IoC\ServiceInstaller.cs' TargetProject='Code.Service' Language='csharp'> <Code> <![CDATA[ using Castle.Windsor; using Castle.Windsor.Installer; using Castle.MicroKernel.Registration; using Castle.MicroKernel.SubSystems.Configuration; var container = new WindsorContainer(); container.Install(FromAssembly.This()); //usage: var codeServices = container.Resolve<ICodeServices>(); public class ServiceInstaller : IWindsorInstaller { public void Install(IWindsorContainer container, IConfigurationStore store) { container.Register( Component.For<IGenericServices<domain.Presentation>>() .ImplementedBy<GenericServices<domain.Presentation>>() .DependsOn(Dependency.OnAppSettingsValue('path'), Dependency.OnAppSettingsValue('pattern')) .LifestyleSingleton(), Classes.FromThisAssembly() .BasedOn<ApiController>() .LifestyleScoped() ); } }]]> </Code> </Component> </Slide>".Trim().Replace("'", "\""); var expectedMarkdown = @" #Dependency Injection with Windsor Castle# *Windsor Castle Container* Dependency Injection ```csharp using Castle.Windsor; using Castle.Windsor.Installer; using Castle.MicroKernel.Registration; using Castle.MicroKernel.SubSystems.Configuration; var container = new WindsorContainer(); container.Install(FromAssembly.This()); //usage: var codeServices = container.Resolve<ICodeServices>(); public class ServiceInstaller : IWindsorInstaller { public void Install(IWindsorContainer container, IConfigurationStore store) { container.Register( Component.For<IGenericServices<domain.Presentation>>() .ImplementedBy<GenericServices<domain.Presentation>>() .DependsOn(Dependency.OnAppSettingsValue('path'), Dependency.OnAppSettingsValue('pattern')) .LifestyleSingleton(), Classes.FromThisAssembly() .BasedOn<ApiController>() .LifestyleScoped() ); } } ``` ".Replace("'", "\""); #endregion var parser = ParserFactory.CreateSlideParser(new MockApiServiceString()); Assert.IsNotNull(parser); var markdown = parser.Parse(XmlHelper2 <Slide> .LoadFromString(xml)).GetAwaiter().GetResult(); TextHelper.SaveFileContent("expected-markdown.txt", expectedMarkdown); TextHelper.SaveFileContent("actual-markdown.txt", markdown); Assert.AreEqual(expectedMarkdown.Trim(), markdown.Trim()); }
private Slide Clone(Slide source) { var xml = XmlHelper2 <Slide> .Save(source); return(XmlHelper2 <Slide> .LoadFromString(xml)); }