| Age | Commit message (Collapse) | Author |
|
|
|
|
|
An isomorphism is a pair of functions between a source and destination
type. Ideally, they should be inverses, but java has no way to check
that by itself.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
This cuts down on the amount of regex escapes
|
|
|
|
|
|
|
|
|
|
The operations are very heavily inspired by the 'Sam' editor
|
|
|
|
|
|
The major changes this time are that we have both data/command
macros, as well as proper Unicode character support.
|
|
|
|
|
|
|
|
Add a simple utility class for easy I/O prompting on triggered readers.
|
|
Adds additional useful block reader types.
* LayeredBlockReader, which represents priority
* SerialBlockReader, which concatenates readers
|
|
|
|
|
|
|
|
|
|
|
|
This allows cool things to be accomplished through chaining BlockReaders
together without having to handle the block plumbing yourself.
The current set of implementations are a simple one that reads blocks
from a scanner delimited by a pattern, one that has a queue of blocks it
will attempt to pull from before reading, and one that triggers an
action before a block is read.
As an example use, for FDS, a combo of simple -> triggered -> pushback
is used where the triggered is used for prompting the user, and the
pushback supports macros.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Forgetful groups are groups which reset the currently allowed nested
openers/closers from enclosing groups. This is useful for things like
quoted strings, where you don't want groups to open inside them.
As a consequence, this also adds nested openers.
However, predicated openers/closers cannot be nested.
|
|
The toString for block had the start/end lines backwards :-(
|
|
|
|
|
|
Adds BlockReader, which allows you to read blocks of characters delimited
by a given sequence from an arbitrary input source.
It provides line numbering relative to that source, as well as block
numbering.
The main caveat is that to prevent spurious NoSuchElementExceptions, EOF
is always treated as a valid delimiter, so blocks may be shorter than you
expect them to be.
This is only meant as a data input utility, not a data validation utility.
|
|
This adds a sample predicated opener/closer pair based off of regular
expressions.
The opener accepts a regular expression and will provide all of its
numbered captured groups.
The closer accepts a format string and uses the parameters (capture
groups) as the format parameters.
|
|
|