internal static AbstractTopicInfo GetAbstractTopicInfo(this AbstractTopic abstractTopic)
        {
            if (cache.ContainsKey(abstractTopic))
            {
                return(cache[abstractTopic]);
            }
            var abstractTopicInfo = new AbstractTopicInfo(abstractTopic);

            cache.Add(abstractTopic, abstractTopicInfo);
            return(abstractTopicInfo);
        }
示例#2
0
        public AbstractTopicInfo(AbstractTopic abstractTopic)
        {
            Filename = Path.GetFileName(abstractTopic.Path);

            var firstFourLines = File.ReadLines(abstractTopic.Path, Encoding.UTF8).Take(4).ToArray();

            AuthorUri = new Uri(UrlHeaderRegex.Match(firstFourLines[0]).Groups[1].ToString());

            {
                var authorInfoMatch = AuthorHeaderRegex.Match(firstFourLines[1]);
                AuthorName  = authorInfoMatch.Groups[1].ToString();
                AuthorEmail = authorInfoMatch.Groups[2].ToString();
            }

            Title = TitleHeaderRegex.Match(firstFourLines[3]).Groups[1].ToString();
        }
示例#3
0
 internal AbstractTopicRenderer(AbstractTopic input) : base(input)
 {
     this.input        = input;
     abstractTopicInfo = JsonConvert.DeserializeObject <AbstractTopicInfo>(File.ReadAllText(input.Path + AbstractTopicInfo.FilenameExtension, Encoding.UTF8));
 }
示例#4
0
 private void Leave(AbstractTopic abstractTopic)
 {
     contentIO.CreateOutputFile(abstractTopic.Path + AbstractTopicInfo.FilenameExtension, abstractTopic.GetAbstractTopicInfo().GetOutputFileContents());
     Leave((Item)abstractTopic);
 }