org.crosswire.jsword.passage

## Class VerseRangeFactory

- java.lang.Object
- - org.crosswire.jsword.passage.VerseRangeFactory

-     public final class VerseRangeFactory
      extends Object

  A factory that creates VerseRanges from user input.
  Author:
    Joe Walker, DM Smith
  See Also:
    `The GNU Lesser General Public License for details.`

- - ### Constructor Summary

    Constructors
    Modifier | Constructor and Description
    --- | ---
    `private` | `VerseRangeFactory()` prevent instantiation

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `static VerseRange` | `fromString(Versification v11n, String orginal)` Construct a VerseRange from a human readable string.
    `static VerseRange` | `fromString(Versification v11n, String original, VerseRange basis)` Construct a VerseRange from a String and a VerseRange.
    `private static VerseRange` | `fromText(Versification v11n, String original, String startVerseDesc, String endVerseDesc, VerseRange basis)` The internal mechanism by which we construct a VerseRange

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### Constructor Detail

    - #### VerseRangeFactory

          private VerseRangeFactory()

      prevent instantiation

  - ### Method Detail

    - #### fromString

          public static VerseRange fromString(Versification v11n,
                              String orginal)
                                       throws NoSuchVerseException

      Construct a VerseRange from a human readable string. For example "Gen 1:1-3" in case the user does not want to have their typing 'fixed' by a meddling patronizing computer.
      Parameters:
        `v11n` - The versification for this VerseRange
        `orginal` - The textual representation
      Returns:
        the verse range for the string
      Throws:
        `NoSuchVerseException` - If the text can not be understood

    - #### fromString

          public static VerseRange fromString(Versification v11n,
                              String original,
                              VerseRange basis)
                                       throws NoSuchVerseException

      Construct a VerseRange from a String and a VerseRange. For example given "2:2" and a basis of Gen 1:1-2 the result would be range of 1 verse starting at Gen 2:2. Also given "2:2-5" and a basis of Gen 1:1-2 the result would be a range of 5 verses starting at Gen 1:1.

      This constructor is different from the (String, Verse) constructor in that if the basis is a range that exactly covers a chapter and the string is a single number, then we assume that the number refers to a chapter and not to a verse. This allows us to have a Passage like "Gen 1,2" and have the 2 understood as chapter 2 and not verse 2 of Gen 1, which would have occurred otherwise.

      Parameters:
        `v11n` - The versification for this VerseRange
        `original` - The string describing the verse e.g "2:2"
        `basis` - The verse that forms the basis by which to understand the original.
      Returns:
        the verse range
      Throws:
        `NoSuchVerseException` - If the reference is illegal

    - #### fromText

          private static VerseRange fromText(Versification v11n,
                            String original,
                            String startVerseDesc,
                            String endVerseDesc,
                            VerseRange basis)
                                      throws NoSuchVerseException

      The internal mechanism by which we construct a VerseRange
      Parameters:
        `v11n` - The versification for this VerseRange
        `original` - The string describing the verse e.g "2:2"
        `startVerseDesc` - The part of the range before the range separator
        `endVerseDesc` - The part of the range after the range separator
        `basis` - The verse that forms the basis by which to understand the original.
      Throws:
        `NoSuchVerseException` - If the reference is illegal