view MetroWpf/MetroWpf.Framework/Extensions/TextReaderExtensions.cs @ 60:fc62c971a117

upload to blog
author Steven Hollidge <stevenhollidge@hotmail.com>
date Sat, 21 Apr 2012 21:19:39 +0100
parents 060f02cd4591
children
line wrap: on
line source

using System;
using System.Collections.Generic;
using System.IO;

namespace MetroWpf
{
    /// <summary>
    /// Extension methods for the TextReader class and its sub classes (StreamReader, StringReader)
    /// </summary>
    public static class TextReaderExtensions
    {
        #region · Extensions ·

        /// <summary>
        /// The method provides an iterator through all lines of the text reader.
        /// </summary>
        /// <param name="reader">The text reader.</param>
        /// <returns>The iterator</returns>
        /// <example>
        /// <code>
        /// using(var reader = fileInfo.OpenText()) {
        ///  foreach(var line in reader.IterateLines()) {
        ///   // ...
        ///  }
        /// }
        /// </code></example>
        /// <remarks>Contributed by OlivierJ</remarks>
        public static IEnumerable<string> IterateLines(this TextReader reader)
        {
            string line = null;
            
            while ((line = reader.ReadLine()) != null)
            {
                yield return line;
            }
        }

        /// <summary>
        /// The method executes the passed delegate /lambda expression) for all lines of the text reader.
        /// </summary>
        /// <param name="reader">The text reader.</param>
        /// <param name="action">The action.</param>
        /// <example>
        /// 	<code>
        /// using(var reader = fileInfo.OpenText()) {
        ///  reader.IterateLines(l => Console.WriteLine(l));
        /// }
        /// </code></example>
        /// <remarks>Contributed by OlivierJ</remarks>
        public static void IterateLines(this TextReader reader, Action<string> action)
        {
            foreach (var line in reader.IterateLines())
            {
                action(line);
            }
        }

        #endregion
    }
}