regexdot-0.11.0.1: A polymorphic, POSIX, extended regex-engine.

Safe HaskellSafe-Infered

RegExDot.Repeatable

Contents

Description

AUTHOR
Dr. Alistair Ward
DESCRIPTION
  • A data-type, which represents the permissible range of instances, of the underlying polymorphic datum.
  • Designed for use in a polymorphic regex-engine, which specifies patterns composed of repeated greedy & non-greedy sequences of Meta-data;
		*	+	?	{fewest, most}	{fewest,}	{fewest}
		*?	+?	??	{fewest, most}?	{fewest,}?
  • In the context of regexes, this concept is known as Quantification.
  • regexes evolved from the minimal ability to optionally qualify the datum with a http://en.wikipedia.org/wiki/Kleene_star suffix. More exotic repetition-specifications could be composed by concatenating these atomic building-blocks. Here, I've taken the contrary top-down view, & assumed that all data are qualified by a full RepetitionBounds, which in most cases will degenerate into a simpler form.
  • The type of entity which is being repeated, isn't the domain of this data-type; it's polymorphic.

Synopsis

Types

Type-synonyms

type Repetitions = IntSource

A number of repetitions.

type RepetitionBounds = (Repetitions, Maybe Repetitions)Source

Defines the bounds of a range of permissible repetitions.

Data-types

data Repeatable a Source

Declares a polymorphic data-type, which augments the underlying base datum, with the range of times it may be used.

Constructors

MkRepeatable 

Fields

base :: a

The underlying polymorphic datum.

repetitionBounds :: RepetitionBounds

The bounds delimiting the range of permissible repetitions, of base.

isGreedy :: Bool

Whether to demand as many matching instances of base as possible; or as few (AKA lazy quantification).

Constants

oneOrMoreToken :: CharSource

The token used to denote oneOrMore, when in the String-form.

rangeDelimiters :: (Char, Char)Source

The delimiters of ^#->#, when in the String-form.

rangeSeparatorToken :: CharSource

The token used to separate RepetitionBounds, when in the String-form.

tokens :: StringSource

The set of Char to which a specific meaning is attributed, when reading from String.

zeroOrMoreToken :: CharSource

  • The token used to denote zeroOrMore, when in the String-form.
  • AKA Kleene Star.

zeroOrOneToken :: CharSource

The token used to denote zeroOrOne, when in the String-form.

Functions

one :: a -> Repeatable aSource

  • Construct a Repeatable, tailored for unrepeated data.
  • A degenerate case of ^#.

oneOrMore :: a -> Repeatable aSource

oneOrMore' :: a -> Repeatable aSource

Construct a non-greedy version of oneOrMore.

zeroOrMore :: a -> Repeatable aSource

  • Construct a greedy Repeatable, from a polymorphic datum, with fewest == 0.
  • A specific case of ^#->.

zeroOrMore' :: a -> Repeatable aSource

Construct a non-greedy version of zeroOrMore.

zeroOrOne :: a -> Repeatable aSource

  • Construct a greedy Repeatable, from a polymorphic datum, with fewest == 0 & most == 1.
  • A specific case of ^#->#.

zeroOrOne' :: a -> Repeatable aSource

Construct a non-greedy version of zeroOrOne.

repeatableParser :: a -> Parser (Repeatable a)Source

Builds a parser for a specification of the number of permissible instances of the specified polymorphic parameter.

showSuffix :: Repeatable a -> ShowSSource

  • A ShowS-function for the suffix, denoting the permissible repetitions, of base.
  • This function converts the internal, into the tradition greedy & non-greedy quantifiers of various specific varieties.

Accessors

Mutators

focus :: Repeatable a -> Repetitions -> Repeatable aSource

Reduces a Repeatable, with a range of RepetitionBounds, to a precise number of repetitions.

toSingleton :: Repeatable a -> Repeatable aSource

Operators

(^#->#)Source

Arguments

:: a

The polymorphic payload from which to construct the Repeatable.

-> RepetitionBounds

The permissible repetition-bounds for the polymorphic data.

-> Repeatable a 
  • Construct a greedy Repeatable, from a polymorphic datum, with the specified range of permissible instances.
  • The #s in the identifier represent the two bounds.
  • a{f, m}

(^#->#?)Source

Arguments

:: a

The polymorphic payload from which to construct the Repeatable.

-> RepetitionBounds

The permissible repetition-bounds for the polymorphic data.

-> Repeatable a 
  • Construct a non-greedy version of ^#->#.
  • a{f, m}?

(^#->)Source

Arguments

:: a

The polymorphic payload from which to construct the Repeatable.

-> Repetitions

The minimum permissible repetitions of the polymorphic data.

-> Repeatable a 
  • Construct a greedy Repeatable, tailored for data repeated at least the specified number of times.
  • The # in the identifier represents the single bound.
  • a{f,}

(^#->?)Source

Arguments

:: a

The polymorphic payload from which to construct the Repeatable.

-> Repetitions

The minimum permissible repetitions of the polymorphic data.

-> Repeatable a 
  • Construct a non-greedy version of ^#->.
  • a{f,}?

(^#)Source

Arguments

:: a

The polymorphic payload from which to construct the Repeatable.

-> Repetitions

The precise number of repetitions of the polymorphic data which is required.

-> Repeatable a 
  • Construct a Repeatable, tailored for data repeated a precise number of times.
  • The # in the identifier represents the single bound.
  • a{f}

Predicates

isPrecise :: Repeatable a -> BoolSource

True if there's no choice in the number of repetitions; implemented via isPrecise.

hasPreciseBounds :: RepetitionBounds -> BoolSource

Predicate which is True if exactly one value is permissible, ie lower & upper bounds on the number of Repetitions are identical.