Cadenza : Cadenza.IO Namespace

TextReaderCoda Class

Extension methods for System.IO.TextReader.

public static class TextReaderCoda

Remarks

Requirements

Namespace: Cadenza.IO
Assembly: Cadenza (in Cadenza.dll)
Assembly Versions: 0.1.0.0

Members

See Also: Inherited members from object.

Public Methods

static
Lines (this System.IO.TextReader) : IEnumerable<string>
Creates an IEnumerable<string> which will return all lines of text from self while System.IO.TextReader.Closeing self.
static
Lines (this System.IO.TextReader, TextReaderCodaOptions) : IEnumerable<string>
Creates an IEnumerable<string> which will return all lines of text from self while optionally System.IO.TextReader.Closeing self.
static
Tokens (this System.IO.TextReader, params Func<Nullable<System.Char>,System.Char,System.Boolean>[]) : IEnumerable<string>
Creates an IEnumerable<string> which will return all words from self while optionally System.IO.TextReader.Closeing self.
static
Tokens (this System.IO.TextReader, TextReaderCodaOptions, params Func<Nullable<System.Char>,System.Char,System.Boolean>[]) : IEnumerable<string>
Creates an IEnumerable<string> which will return all words from self while optionally System.IO.TextReader.Closeing self.
static
Words (this System.IO.TextReader) : IEnumerable<string>
Creates an IEnumerable<string> which will return all words from self while System.IO.TextReader.Closeing self.
static
Words (this System.IO.TextReader, TextReaderCodaOptions) : IEnumerable<string>
Creates an IEnumerable<string> which will return all words from self while optionally System.IO.TextReader.Closeing self.

Member Details

Lines Method

Creates an IEnumerable<string> which will return all lines of text from self while System.IO.TextReader.Closeing self.

public static IEnumerable<string> Lines (this System.IO.TextReader self)

See Also

System.IO.TextReader.ReadLine

Parameters

self
A System.IO.TextReader to read lines from.

Returns

An IEnumerable<string> which will return all lines of text from self.

Exceptions

Type Reason
ArgumentNullException self is null.

Remarks

This method is implemented by using deferred execution.

self is disposed.

Note: A "line of text" is the same as that used by System.IO.TextReader.ReadLine.

Requirements

Namespace: Cadenza.IO
Assembly: Cadenza (in Cadenza.dll)
Assembly Versions: 0.1.0.0

Lines Method

Creates an IEnumerable<string> which will return all lines of text from self while optionally System.IO.TextReader.Closeing self.

public static IEnumerable<string> Lines (this System.IO.TextReader self, TextReaderCodaOptions options)

See Also

System.IO.TextReader.ReadLine

Parameters

self
A System.IO.TextReader to read lines from.
options
A Cadenza.IO.TextReaderCodaOptions controlling method execution.

Returns

An IEnumerable<string> which will return all lines of text from self.

Exceptions

Type Reason
ArgumentException options has an unsupported value.
ArgumentNullException self is null.

Remarks

This method is implemented by using deferred execution.

If options contains TextReaderCodaOptions.CloseReader, then self will be System.IO.TextReader.Closeed once all lines have been returned; if TextReaderCodaOptions.CloseReader is not specified, then the System.IO.TextReader will not be disposed.

Note: A "line of text" is the same as that used by System.IO.TextReader.ReadLine.

Requirements

Namespace: Cadenza.IO
Assembly: Cadenza (in Cadenza.dll)
Assembly Versions: 0.1.0.0

Tokens Method

Creates an IEnumerable<string> which will return all words from self while optionally System.IO.TextReader.Closeing self.

Parameters

self
A System.IO.TextReader to extract tokens from.
categories
A Func<Nullable<System.Char>,System.Char,System.Boolean> array containing the different categories of characters that determines what makes up a "token." If the Nullable<char> parameter is null, then the char is the first character within the token; otherwise, the Nullable<char> parameter contains the character preceding the char. The delegate should return true if the char is a supported character; otherwise, false should be returned.

Returns

An IEnumerable<string> which will return all tokens from self.

Exceptions

Type Reason
ArgumentException categories is empty.
ArgumentNullException self is null, or categories is null.

Remarks

This method is implemented by using deferred execution.

If options contains TextReaderCodaOptions.CloseReader, then self will be System.IO.TextReader.Closeed once all lines have been returned.

Note:

A "token" is determined by categories, and is any contiguous sequence of characters for which the same categories index returns true, starting from the first delegate. This allows a "some characters are more important than others" philosphy, allowing e.g. parenthesis to be returned separately from alphanumeric characters, even if no whitespace separates them.

C# Example
var r = new MyStringReader ("(append 3.5 \"hello, world!\")");
var words = r.Tokens (
	(p, c) => char.IsLetterOrDigit (c) || c == '.',
	(p, c) => !char.IsWhiteSpace (c))
	.ToArray ();
Assert.IsTrue (r.WasDisposed);
Assert.IsTrue (
		new[]{"(", "append", "3.5", "\"", "hello", ",", "world", "!\")"}
		.SequenceEqual (words));

r = new MyStringReader ("Hello, world!");
Assert.AreEqual (false, 
	r.Tokens (TextReaderCodaOptions.None,
		(p, c) => false).Any ());
Assert.IsFalse (r.WasDisposed);

Requirements

Namespace: Cadenza.IO
Assembly: Cadenza (in Cadenza.dll)
Assembly Versions: 0.1.0.0

Tokens Method

Creates an IEnumerable<string> which will return all words from self while optionally System.IO.TextReader.Closeing self.

Parameters

self
A System.IO.TextReader to extract tokens from.
options
A Cadenza.IO.TextReaderCodaOptions controlling method execution.
categories
A Func<Nullable<System.Char>,System.Char,System.Boolean> array containing the different categories of characters that determines what makes up a "token." If the Nullable<char> parameter is null, then the char is the first character within the token; otherwise, the Nullable<char> parameter contains the character preceding the char. The delegate should return true if the char is a supported character; otherwise, false should be returned.

Returns

An IEnumerable<string> which will return all tokens from self.

Exceptions

Type Reason
ArgumentException options contains an invalid value, or categories is empty.
ArgumentNullException self is null, or categories is null.

Remarks

This method is implemented by using deferred execution.

If options contains TextReaderCodaOptions.CloseReader, then self will be System.IO.TextReader.Closeed once all lines have been returned.

Note:

A "token" is determined by categories, and is any contiguous sequence of characters for which the same categories index returns true, starting from the first delegate. This allows a "some characters are more important than others" philosphy, allowing e.g. parenthesis to be returned separately from alphanumeric characters, even if no whitespace separates them.

C# Example
var r = new MyStringReader ("(append 3.5 \"hello, world!\")");
var words = r.Tokens (
	(p, c) => char.IsLetterOrDigit (c) || c == '.',
	(p, c) => !char.IsWhiteSpace (c))
	.ToArray ();
Assert.IsTrue (r.WasDisposed);
Assert.IsTrue (
		new[]{"(", "append", "3.5", "\"", "hello", ",", "world", "!\")"}
		.SequenceEqual (words));

r = new MyStringReader ("Hello, world!");
Assert.AreEqual (false, 
	r.Tokens (TextReaderCodaOptions.None,
		(p, c) => false).Any ());
Assert.IsFalse (r.WasDisposed);

Requirements

Namespace: Cadenza.IO
Assembly: Cadenza (in Cadenza.dll)
Assembly Versions: 0.1.0.0

Words Method

Creates an IEnumerable<string> which will return all words from self while System.IO.TextReader.Closeing self.

public static IEnumerable<string> Words (this System.IO.TextReader self)

See Also

char.IsWhiteSpace(char)

Parameters

self
A System.IO.TextReader to extract words from.

Returns

An IEnumerable<string> which will return all words from self.

Exceptions

Type Reason
ArgumentNullException self is null, or categories is null.

Remarks

This method is implemented by using deferred execution.

self is disposed.

Note:

A "word" is any contiguous sequence of characters for which char.IsWhiteSpace(char) returns false.

C# Example
MyStringReader r = new MyStringReader ("   (skip  leading,\r\n\tand trailing\vwhitespace)   ");
string[] words = r.Words ().ToArray ();
Assert.IsTrue (r.WasDisposed);
Assert.AreEqual (5, words.Length);
Assert.AreEqual ("(skip",       words [0]);
Assert.AreEqual ("leading,",    words [1]);
Assert.AreEqual ("and",         words [2]);
Assert.AreEqual ("trailing",    words [3]);
Assert.AreEqual ("whitespace)", words [4]);

r = new MyStringReader ("notext");
words = r.Words (TextReaderCodaOptions.None).ToArray ();
Assert.IsFalse (r.WasDisposed);
Assert.AreEqual (1, words.Length);
Assert.AreEqual ("notext", words [0]);

r = new MyStringReader ("1 2 3 4");
Assert.AreEqual ("1", r.Words ().First ());
Assert.AreEqual ("2", r.Words ().First ());
Assert.AreEqual ("3", r.Words ().First ());
Assert.AreEqual ("4", r.Words ().First ());

Requirements

Namespace: Cadenza.IO
Assembly: Cadenza (in Cadenza.dll)
Assembly Versions: 0.1.0.0

Words Method

Creates an IEnumerable<string> which will return all words from self while optionally System.IO.TextReader.Closeing self.

public static IEnumerable<string> Words (this System.IO.TextReader self, TextReaderCodaOptions options)

See Also

char.IsWhiteSpace(char)

Parameters

self
A System.IO.TextReader to extract words from.
options
A Cadenza.IO.TextReaderCodaOptions controlling method execution.

Returns

An IEnumerable<string> which will return all words from self.

Exceptions

Type Reason
ArgumentException options contains an invalid value.
ArgumentNullException self is null.

Remarks

This method is implemented by using deferred execution.

If options contains TextReaderCodaOptions.CloseReader, then self will be System.IO.TextReader.Closeed once all lines have been returned; if TextReaderCodaOptions.CloseReader is not specified, then the System.IO.TextReader will not be disposed.

Note:

A "word" is any contiguous sequence of characters for which char.IsWhiteSpace(char) returns false.

C# Example
MyStringReader r = new MyStringReader ("   (skip  leading,\r\n\tand trailing\vwhitespace)   ");
string[] words = r.Words ().ToArray ();
Assert.IsTrue (r.WasDisposed);
Assert.AreEqual (5, words.Length);
Assert.AreEqual ("(skip",       words [0]);
Assert.AreEqual ("leading,",    words [1]);
Assert.AreEqual ("and",         words [2]);
Assert.AreEqual ("trailing",    words [3]);
Assert.AreEqual ("whitespace)", words [4]);

r = new MyStringReader ("notext");
words = r.Words (TextReaderCodaOptions.None).ToArray ();
Assert.IsFalse (r.WasDisposed);
Assert.AreEqual (1, words.Length);
Assert.AreEqual ("notext", words [0]);

r = new MyStringReader ("1 2 3 4");
Assert.AreEqual ("1", r.Words ().First ());
Assert.AreEqual ("2", r.Words ().First ());
Assert.AreEqual ("3", r.Words ().First ());
Assert.AreEqual ("4", r.Words ().First ());

Requirements

Namespace: Cadenza.IO
Assembly: Cadenza (in Cadenza.dll)
Assembly Versions: 0.1.0.0