Exemple #1
0
        /// <summary>
        ///   Write dates.
        /// </summary>
        /// <param name="writer">The writer.</param>
        /// <param name="block">The block.</param>
        /// <param name="commits">The commits.</param>
        private void WriteDates(StreamWriter writer, TextBlock block, Commit[] commits)
        {
            var token = "{date}";
            var lineToken = "{lines}";

            foreach (var commit in commits)
            {
                // Work with the copy dummy.
                string line = block.Text;
                int idx;

                // Search for date tokens.
                while ((idx = line.IndexOf(token, StringComparison.CurrentCultureIgnoreCase)) > -1)
                {
                    line = line.Replace(line.Substring(idx, token.Length), ConvertToJavascriptTimestamp(commit.Date).ToString());
                }

                // Search for line tokens.
                while ((idx = line.IndexOf(lineToken, StringComparison.CurrentCultureIgnoreCase)) > -1)
                {
                    line = line.Replace(line.Substring(idx, lineToken.Length), commit.LinesOfChange.ToString());
                }

                if (!string.IsNullOrEmpty(block.PostText))
                {
                    var last = commits.Last();

                    // Add the separator if it is not the last route.
                    if (last != commit)
                    {
                        line += block.PostText;
                    }
                }

                // Finally...
                writer.Write(line);
                writer.Flush();
            }
        }
Exemple #2
0
        /// <summary>
        ///   Write authors.
        /// </summary>
        /// <param name="writer">The writer.</param>
        /// <param name="block">The block.</param>
        /// <param name="commits">The commits.</param>
        private void WriteAuthors(StreamWriter writer, TextBlock block, Commit[] commits)
        {
            var token = "{author}";

            // Work with the copy dummy.
            string line = block.Text;
            int idx;

            // Search for author tokens.
            while ((idx = line.IndexOf(token, StringComparison.CurrentCultureIgnoreCase)) > -1)
            {
                line = line.Replace(line.Substring(idx, token.Length), commits.First().Author);
            }

            writer.Write(line);
            writer.Flush();

            // Dig through any inner blocks.
            foreach (var innerBlock in block.InnerBlocks)
            {
                if (innerBlock.Type == BlockType.Date)
                {
                    this.WriteDates(writer, innerBlock, commits);
                }
                else if (innerBlock.Type == BlockType.Plain)
                {
                    writer.Write(innerBlock.Text);
                }
            }
        }