public static MDSourceFile WriteSourceFileDefault( this LitOptions LO, LitNovel novel, LitSceneMetadata metadata, LitAuthor author ) { //Write all of the lines of the file var lines = LO.WriteMetadata(metadata, author); var query = novel.Scenes .Where(s => s.Metadata == metadata) .Select(s => LO.WriteElmSourceLines(s, author)); foreach (var scenelines in query) { lines.AddRange(scenelines); } //Create the file var SourceFile = new MDSourceFile() { Metadata = metadata, Author = author, Lines = lines }; return(SourceFile); }
public static List <String> WriteMetadataDefault(this LitOptions LO, LitSceneMetadata metadata, LitAuthor sourceinfo) { var retVal = new List <String>(); retVal.Add(String.Format("# {0}", metadata.Header)); retVal.Add(MakeLinkLine("Metadata", metadata.Descriptor)); retVal.Add(MakeLinkLine("Descriptor", metadata.Descriptor)); retVal.Add(sourceinfo.ToSourceLine()); retVal.AddRange(metadata.Text); return(retVal); }
/// <summary> /// Will add a new SceneMetadata to the novel, or if this metadata already exists, will return the one that already does /// </summary> /// <param name="novel"></param> /// <param name="metadata"></param> /// <returns></returns> public static LitSceneMetadata AddMetadataDistinct(this LitNovel novel, LitSceneMetadata metadata) { foreach (var currentSceneMetadata in novel.SceneMetadata) { if (currentSceneMetadata.Descriptor.Equals(metadata.Descriptor)) { return(currentSceneMetadata); } } novel.SceneMetadata.Add(metadata); return(metadata); }
public static LitSceneMetadata ParseMetadataDefault(this LitOptions LO, LitNovel novel, IEnumerable <String> sourceLines) { var retVal = new LitSceneMetadata(); var links = sourceLines.Select(l => LO.ParseLink(l)).Where(link => link != null); retVal.Descriptor = links.Where(link => link.Link.Equals("Descriptor")).Select(link => link.Tag).FirstOrDefault(); var pattern = @"^# (.*)$"; var match = System.Text.RegularExpressions.Regex.Match(sourceLines.First(), pattern); retVal.Header = match.Groups[1].Value; return(novel.AddMetadataDistinct(retVal)); }
public static String ToShortFilenameDefault( this LitOptions LO, MDAnnSourceInfo info, LitSceneMetadata metadata, LitAuthor author ) { return(ToShortFilenameDefault( LO, info.Prefix, metadata.Descriptor, author.Author )); }
/// <summary> /// /// </summary> /// <param name="lines"></param> /// <returns></returns> public static LitElm ParseToElmDefault( this LitOptions LO, LitNovel novel, LitSceneMetadata metadata, LitAuthor author, IEnumerable <String> lines ) { var retVal = new LitElm(); //Some checks if (!novel.Authors.Contains(author)) { throw new Exception(String.Format("Novel does not contain source info. {0}", author.Author)); } if (!novel.SceneMetadata.Contains(metadata)) { throw new Exception(String.Format("Novel does not contain metadata. {0}", metadata.Descriptor)); } //Parse the header LO.ParseElmHeader(novel, retVal, lines); var PartitionedLines = LO.ExtractSubElms(lines); LO.ParseElmLinks( novel, retVal, LO.ExtractElmLinkLines(PartitionedLines.First()) ); LO.ParseElmText(novel, retVal, author, PartitionedLines.First()); foreach (var eventLines in PartitionedLines.Skip(1)) { var litEvent = LO.ParseToElm(novel, metadata, author, eventLines); retVal.AddElm(litEvent); } retVal.Metadata = metadata; return(retVal); }