grizzled.file

Includer

class Includer extends Iterator[String]

Process "include" directives in files, returning an iterator over lines from the flattened files.

The grizzled.file.Includer class can be used to process "include" directives within a text file, returning a file-like object. It also contains some utility functions that permit using include-enabled files in other contexts.

Syntax

The include syntax is defined by a regular expression; any line that matches the regular expression is treated as an includedirective. The default regular expression, ^%include\s"([^"]+)"$matches include directives like this:

%include "/absolute/path/to/file"
%include "../relative/path/to/file"
%include "local_reference"
%include "http://localhost/path/to/my.config"

Relative and local file references are relative to the including file or URL. That is, if an Includer is processing file "/home/bmc/foo.txt" and encounters an attempt to include file "bar.txt", it will assume "bar.txt" is to be found in "/home/bmc".

Similarly, if an Includer is processing URL "http://localhost/bmc/foo.txt" and encounters an attempt to include file "bar.txt", it will assume "bar.txt" is to be found at "http://localhost/bmc/bar.txt".

Nested includes are permitted; that is, an included file may, itself, include other files. The maximum recursion level is configurable and defaults to 100.

The include syntax can be changed by passing a different regular expression to the Includer constructor.

Usage

This package provides an Includer class, which processes include directives in a file and behaves somewhat like a Scala Source. See the class documentation for more details.

The package also provides a preprocess() convenience function, via a companion object, that can be used to preprocess a file; it returns the path to the resulting preprocessed file.

Examples

Preprocess a file containing include directives, then read the result:

import grizzled.file.Includer

Includer(path).foreach(println(_))

Use an include-enabled file with a Scala scala.io.Sourceobject:

import grizzled.file.includer.Includer
import scala.io.Source

val source = Source.fromFile(Includer.preprocess("/path/to/file"))
go to: companion
linear super types: Iterator[String], TraversableOnce[String], AnyRef, Any
Ordering
  1. Alphabetic
  2. By inheritance
Inherited
  1. Hide All
  2. Show all
  1. Includer
  2. Iterator
  3. TraversableOnce
  4. AnyRef
  5. Any
Visibility
  1. Public
  2. All
Impl.
  1. Concrete
  2. Abstract

Instance constructors

  1. new Includer (source: Source, includeRegex: Regex, maxNesting: Int)

    source

    the Source to read

    includeRegex

    the regular expression that defines an include directive. Must contain a group that surrounds the file or URL part.

    maxNesting

    the maximum nesting level

Value Members

  1. def != (arg0: AnyRef) : Boolean

    attributes: final
    definition classes: AnyRef
  2. def != (arg0: Any) : Boolean

    o != arg0 is the same as !(o == (arg0)).

    o != arg0 is the same as !(o == (arg0)).

    arg0

    the object to compare against this object for dis-equality.

    returns

    false if the receiver object is equivalent to the argument; true otherwise.

    attributes: final
    definition classes: Any
  3. def ## () : Int

    attributes: final
    definition classes: AnyRef → Any
  4. def $asInstanceOf [T0] () : T0

    attributes: final
    definition classes: AnyRef
  5. def $isInstanceOf [T0] () : Boolean

    attributes: final
    definition classes: AnyRef
  6. def ++ [B >: A] (that: ⇒ Iterator[B]) : Iterator[B]

    definition classes: Iterator
  7. def /: [B] (z: B)(op: (B, String) ⇒ B) : B

    definition classes: TraversableOnce
  8. def :\ [B] (z: B)(op: (String, B) ⇒ B) : B

    definition classes: TraversableOnce
  9. def == (arg0: AnyRef) : Boolean

    o == arg0 is the same as if (o eq null) arg0 eq null else o.equals(arg0).

    o == arg0 is the same as if (o eq null) arg0 eq null else o.equals(arg0).

    arg0

    the object to compare against this object for equality.

    returns

    true if the receiver object is equivalent to the argument; false otherwise.

    attributes: final
    definition classes: AnyRef
  10. def == (arg0: Any) : Boolean

    o == arg0 is the same as o.equals(arg0).

    o == arg0 is the same as o.equals(arg0).

    arg0

    the object to compare against this object for equality.

    returns

    true if the receiver object is equivalent to the argument; false otherwise.

    attributes: final
    definition classes: Any
  11. def addString (b: StringBuilder) : StringBuilder

    definition classes: TraversableOnce
  12. def addString (b: StringBuilder, sep: String) : StringBuilder

    definition classes: TraversableOnce
  13. def addString (b: StringBuilder, start: String, sep: String, end: String) : StringBuilder

    definition classes: TraversableOnce
  14. def append [B >: A] (that: Iterator[B]) : Iterator[B]

    definition classes: Iterator
      deprecated:
    1. use ++

  15. def asInstanceOf [T0] : T0

    This method is used to cast the receiver object to be of type T0.

    This method is used to cast the receiver object to be of type T0.

    Note that the success of a cast at runtime is modulo Scala's erasure semantics. Therefore the expression1.asInstanceOf[String] will throw a ClassCastException at runtime, while the expressionList(1).asInstanceOf[List[String]] will not. In the latter example, because the type argument is erased as part of compilation it is not possible to check whether the contents of the list are of the requested typed.

    returns

    the receiver object.

    attributes: final
    definition classes: Any
  16. def buffered : BufferedIterator[String]

    definition classes: Iterator
  17. def clone () : AnyRef

    This method creates and returns a copy of the receiver object.

    This method creates and returns a copy of the receiver object.

    The default implementation of the clone method is platform dependent.

    returns

    a copy of the receiver object.

    attributes: protected
    definition classes: AnyRef
  18. def collect [B] (pf: PartialFunction[String, B]) : Iterator[B]

    definition classes: Iterator
  19. def contains (elem: Any) : Boolean

    definition classes: Iterator
  20. def copyToArray [B >: A] (xs: Array[B], start: Int, len: Int) : Unit

    definition classes: Iterator → TraversableOnce
  21. def copyToArray [B >: A] (xs: Array[B]) : Unit

    definition classes: TraversableOnce
  22. def copyToArray [B >: A] (xs: Array[B], start: Int) : Unit

    definition classes: TraversableOnce
  23. def copyToBuffer [B >: A] (dest: Buffer[B]) : Unit

    definition classes: TraversableOnce
  24. def count (p: (String) ⇒ Boolean) : Int

    definition classes: TraversableOnce
  25. def counted : CountedIterator[String]

    definition classes: Iterator
      deprecated:
    1. use zipWithIndex in Iterator

  26. def drop (n: Int) : Iterator[String]

    definition classes: Iterator
  27. def dropWhile (p: (String) ⇒ Boolean) : Iterator[String]

    definition classes: Iterator
  28. def duplicate : (Iterator[String], Iterator[String])

    definition classes: Iterator
  29. def eq (arg0: AnyRef) : Boolean

    This method is used to test whether the argument (arg0) is a reference to the receiver object (this).

    This method is used to test whether the argument (arg0) is a reference to the receiver object (this).

    The eq method implements an [http://en.wikipedia.org/wiki/Equivalence_relation equivalence relation] on non-null instances of AnyRef: * It is reflexive: for any non-null instance x of type AnyRef, x.eq(x) returns true. * It is symmetric: for any non-null instances x and y of type AnyRef, x.eq(y) returns true if and only if y.eq(x) returns true. * It is transitive: for any non-null instances x, y, and z of type AnyRef if x.eq(y) returns true and y.eq(z) returns true, then x.eq(z) returns true.

    Additionally, the eq method has three other properties. * It is consistent: for any non-null instances x and y of type AnyRef, multiple invocations of x.eq(y) consistently returns true or consistently returns false. * For any non-null instance x of type AnyRef, x.eq(null) and null.eq(x) returns false. * null.eq(null) returns true.

    When overriding the equals or hashCode methods, it is important to ensure that their behavior is consistent with reference equality. Therefore, if two objects are references to each other (o1 eq o2), they should be equal to each other (o1 == o2) and they should hash to the same value (o1.hashCode == o2.hashCode).

    arg0

    the object to compare against this object for reference equality.

    returns

    true if the argument is a reference to the receiver object; false otherwise.

    attributes: final
    definition classes: AnyRef
  30. def equals (arg0: Any) : Boolean

    This method is used to compare the receiver object (this) with the argument object (arg0) for equivalence.

    This method is used to compare the receiver object (this) with the argument object (arg0) for equivalence.

    The default implementations of this method is an [http://en.wikipedia.org/wiki/Equivalence_relation equivalence relation]: * It is reflexive: for any instance x of type Any, x.equals(x) should return true. * It is symmetric: for any instances x and y of type Any, x.equals(y) should return true if and only if y.equals(x) returns true. * It is transitive: for any instances x, y, and z of type AnyRef if x.equals(y) returns true and y.equals(z) returns true, then x.equals(z) should return true.

    If you override this method, you should verify that your implementation remains an equivalence relation. Additionally, when overriding this method it is often necessary to override hashCode to ensure that objects that are "equal" (o1.equals(o2) returns true) hash to the same scala.Int (o1.hashCode.equals(o2.hashCode)).

    arg0

    the object to compare against this object for equality.

    returns

    true if the receiver object is equivalent to the argument; false otherwise.

    definition classes: AnyRef → Any
  31. def exists (p: (String) ⇒ Boolean) : Boolean

    definition classes: Iterator → TraversableOnce
  32. def filter (p: (String) ⇒ Boolean) : Iterator[String]

    definition classes: Iterator
  33. def filterNot (p: (String) ⇒ Boolean) : Iterator[String]

    definition classes: Iterator
  34. def finalize () : Unit

    This method is called by the garbage collector on the receiver object when garbage collection determines that there are no more references to the object.

    This method is called by the garbage collector on the receiver object when garbage collection determines that there are no more references to the object.

    The details of when and if the finalize method are invoked, as well as the interaction between finalizeand non-local returns and exceptions, are all platform dependent.

    attributes: protected
    definition classes: AnyRef
  35. def find (p: (String) ⇒ Boolean) : Option[String]

    definition classes: Iterator → TraversableOnce
  36. def findIndexOf (p: (String) ⇒ Boolean) : Int

    definition classes: Iterator
      deprecated:
    1. use indexWhere instead

  37. def flatMap [B] (f: (String) ⇒ Iterator[B]) : Iterator[B]

    definition classes: Iterator
  38. def foldLeft [B] (z: B)(op: (B, String) ⇒ B) : B

    definition classes: TraversableOnce
  39. def foldRight [B] (z: B)(op: (String, B) ⇒ B) : B

    definition classes: TraversableOnce
  40. def forall (p: (String) ⇒ Boolean) : Boolean

    definition classes: Iterator → TraversableOnce
  41. def foreach [U] (f: (String) ⇒ U) : Unit

    definition classes: Iterator → TraversableOnce
  42. def getClass () : java.lang.Class[_]

    Returns a representation that corresponds to the dynamic class of the receiver object.

    Returns a representation that corresponds to the dynamic class of the receiver object.

    The nature of the representation is platform dependent.

    returns

    a representation that corresponds to the dynamic class of the receiver object.

    attributes: final
    definition classes: AnyRef
  43. def grouped [B >: A] (size: Int) : GroupedIterator[B]

    definition classes: Iterator
  44. def hasDefiniteSize : Boolean

    definition classes: Iterator → TraversableOnce
  45. def hasNext : Boolean

    Determine whether there are any more input lines to be read from the includer.

    Determine whether there are any more input lines to be read from the includer.

    returns

    true if at least one more line is available, false otherwise

    definition classes: Includer → Iterator
  46. def hashCode () : Int

    Returns a hash code value for the object.

    Returns a hash code value for the object.

    The default hashing algorithm is platform dependent.

    Note that it is allowed for two objects to have identical hash codes (o1.hashCode.equals(o2.hashCode)) yet not be equal (o1.equals(o2) returns false). A degenerate implementation could always return 0. However, it is required that if two objects are equal (o1.equals(o2) returns true) that they have identical hash codes (o1.hashCode.equals(o2.hashCode)). Therefore, when overriding this method, be sure to verify that the behavior is consistent with the equals method.

    returns

    the hash code value for the object.

    definition classes: AnyRef → Any
  47. val includeRegex : Regex

    the regular expression that defines an include directive.

    the regular expression that defines an include directive. Must contain a group that surrounds the file or URL part.

  48. def indexOf [B >: A] (elem: B) : Int

    definition classes: Iterator
  49. def indexWhere (p: (String) ⇒ Boolean) : Int

    definition classes: Iterator
  50. def isEmpty : Boolean

    definition classes: Iterator → TraversableOnce
  51. def isInstanceOf [T0] : Boolean

    This method is used to test whether the dynamic type of the receiver object is T0.

    This method is used to test whether the dynamic type of the receiver object is T0.

    Note that the test result of the test is modulo Scala's erasure semantics. Therefore the expression1.isInstanceOf[String] will return false, while the expression List(1).isInstanceOf[List[String]] will return true. In the latter example, because the type argument is erased as part of compilation it is not possible to check whether the contents of the list are of the requested typed.

    returns

    true if the receiver object is an instance of erasure of type T0; false otherwise.

    attributes: final
    definition classes: Any
  52. def isTraversableAgain : Boolean

    definition classes: Iterator → TraversableOnce
  53. def length : Int

    definition classes: Iterator
  54. def map [B] (f: (String) ⇒ B) : Iterator[B]

    definition classes: Iterator
  55. def max [B >: A] (implicit cmp: Ordering[B]) : String

    definition classes: TraversableOnce
  56. val maxNesting : Int

    the maximum nesting level

    the maximum nesting level

  57. def min [B >: A] (implicit cmp: Ordering[B]) : String

    definition classes: TraversableOnce
  58. def mkString : String

    definition classes: TraversableOnce
  59. def mkString (sep: String) : String

    definition classes: TraversableOnce
  60. def mkString (start: String, sep: String, end: String) : String

    definition classes: TraversableOnce
  61. def ne (arg0: AnyRef) : Boolean

    o.ne(arg0) is the same as !(o.eq(arg0)).

    o.ne(arg0) is the same as !(o.eq(arg0)).

    arg0

    the object to compare against this object for reference dis-equality.

    returns

    false if the argument is not a reference to the receiver object; true otherwise.

    attributes: final
    definition classes: AnyRef
  62. def next () : String

    Get the next input line.

    Get the next input line. You should call hasNext before calling this method, to ensure that there are input lines remaining.

    returns

    the next input line

    definition classes: Includer → Iterator
  63. def nonEmpty : Boolean

    definition classes: TraversableOnce
  64. def notify () : Unit

    Wakes up a single thread that is waiting on the receiver object's monitor.

    Wakes up a single thread that is waiting on the receiver object's monitor.

    attributes: final
    definition classes: AnyRef
  65. def notifyAll () : Unit

    Wakes up all threads that are waiting on the receiver object's monitor.

    Wakes up all threads that are waiting on the receiver object's monitor.

    attributes: final
    definition classes: AnyRef
  66. def padTo [A1 >: A] (len: Int, elem: A1) : Iterator[A1]

    definition classes: Iterator
  67. def partition (p: (String) ⇒ Boolean) : (Iterator[String], Iterator[String])

    definition classes: Iterator
  68. def patch [B >: A] (from: Int, patchElems: Iterator[B], replaced: Int) : Iterator[B]

    definition classes: Iterator
  69. def product [B >: A] (implicit num: Numeric[B]) : B

    definition classes: TraversableOnce
  70. def readInto [B >: A] (xs: Array[B]) : Unit

    definition classes: Iterator
      deprecated:
    1. use copyToArray instead

  71. def readInto [B >: A] (xs: Array[B], start: Int) : Unit

    definition classes: Iterator
      deprecated:
    1. use copyToArray instead

  72. def readInto [B >: A] (xs: Array[B], start: Int, sz: Int) : Unit

    definition classes: Iterator
      deprecated:
    1. use copyToArray instead

  73. def reduceLeft [B >: A] (op: (B, String) ⇒ B) : B

    definition classes: TraversableOnce
  74. def reduceLeftOption [B >: A] (op: (B, String) ⇒ B) : Option[B]

    definition classes: TraversableOnce
  75. def reduceRight [B >: A] (op: (String, B) ⇒ B) : B

    definition classes: TraversableOnce
  76. def reduceRightOption [B >: A] (op: (String, B) ⇒ B) : Option[B]

    definition classes: TraversableOnce
  77. def reversed : List[String]

    attributes: protected[this]
    definition classes: TraversableOnce
  78. def sameElements (that: Iterator[_]) : Boolean

    definition classes: Iterator
  79. def size : Int

    definition classes: TraversableOnce
  80. def slice (from: Int, until: Int) : Iterator[String]

    definition classes: Iterator
  81. def sliding [B >: A] (size: Int, step: Int) : GroupedIterator[B]

    definition classes: Iterator
  82. val source : Source

    the Source to read

    the Source to read

  83. def sum [B >: A] (implicit num: Numeric[B]) : B

    definition classes: TraversableOnce
  84. def synchronized [T0] (arg0: T0) : T0

    attributes: final
    definition classes: AnyRef
  85. def take (n: Int) : Iterator[String]

    definition classes: Iterator
  86. def takeWhile (p: (String) ⇒ Boolean) : Iterator[String]

    definition classes: Iterator
  87. def toArray [B >: A] (implicit arg0: ClassManifest[B]) : Array[B]

    definition classes: TraversableOnce
  88. def toBuffer [B >: A] : Buffer[B]

    definition classes: TraversableOnce
  89. def toIndexedSeq [B >: A] : IndexedSeq[B]

    definition classes: TraversableOnce
  90. def toIterable : Iterable[String]

    definition classes: TraversableOnce
  91. def toIterator : Iterator[String]

    definition classes: Iterator → TraversableOnce
  92. def toList : List[String]

    definition classes: TraversableOnce
  93. def toMap [T, U] (implicit ev: <:<[String, (T, U)]) : Map[T, U]

    definition classes: TraversableOnce
  94. def toSeq : Seq[String]

    definition classes: TraversableOnce
  95. def toSet [B >: A] : Set[B]

    definition classes: TraversableOnce
  96. def toStream : Stream[String]

    definition classes: Iterator → TraversableOnce
  97. def toString () : String

    Returns a string representation of the object.

    Returns a string representation of the object.

    The default representation is platform dependent.

    returns

    a string representation of the object.

    definition classes: Iterator → AnyRef → Any
  98. def toTraversable : Traversable[String]

    definition classes: Iterator → TraversableOnce
  99. def wait () : Unit

    attributes: final
    definition classes: AnyRef
  100. def wait (arg0: Long, arg1: Int) : Unit

    attributes: final
    definition classes: AnyRef
  101. def wait (arg0: Long) : Unit

    attributes: final
    definition classes: AnyRef
  102. def withFilter (p: (String) ⇒ Boolean) : Iterator[String]

    definition classes: Iterator
  103. def zip [B] (that: Iterator[B]) : Iterator[(String, B)]

    definition classes: Iterator
  104. def zipAll [B, A1 >: A, B1 >: B] (that: Iterator[B], thisElem: A1, thatElem: B1) : Iterator[(A1, B1)]

    definition classes: Iterator
  105. def zipWithIndex : Iterator[(String, Int)] {...}

    definition classes: Iterator

Inherited from Iterator[String]

Inherited from TraversableOnce[String]

Inherited from AnyRef

Inherited from Any