The way you configure your terminal behavior; a trivial wrapper around a
function, though you should provide a good .toString method to make
debugging easier. The TermInfo and TermAction types are its
interface to the terminal.
Filters are composed sequentially: if a filter returns None the next
filter is tried, while if a filter returns Some that ends the cascade.
While your op function interacts with the terminal purely through
immutable case classes, the Filter itself is free to maintain its own state
and mutate it whenever, even when returning None to continue the cascade.
the .toString of this object, except by making it separate we force
the implementer to provide something and stop them from accidentally
leaving it as the meaningless default.
The way you configure your terminal behavior; a trivial wrapper around a function, though you should provide a good
.toString
method to make debugging easier. The TermInfo and TermAction types are its interface to the terminal.Filters are composed sequentially: if a filter returns
None
the next filter is tried, while if a filter returnsSome
that ends the cascade. While yourop
function interacts with the terminal purely through immutable case classes, the Filter itself is free to maintain its own state and mutate it whenever, even when returningNone
to continue the cascade.