User:Alien333/poemise

Documentation for ../poemise.js/.

Puts lines < 3 characters at the end of the preceding line for punctuation, and lines starting by a lowercase for hard wrap.

Applies an indent pattern given with *[pattern].

In EBNF, and by growing priority: pattern = "" | ( digit | "." | "[" any "]" ) pattern (* a digit means that many :'s, a "." a blank line and "[" any "]" is for something else at the beginning | "!" number                            (* multiple-digit indent *)  | ( ";" | "'") number                   (* number*01;. or number*0;. *) | pattern "," pattern                   (* separating two sub-patterns *)  | number "*" pattern                    (* pattern repeated number times *)  | pattern ";" pattern;                  (* "," with higher priority *) where digit = 0-9 number = digit+ For example, 2*('4;!11);. <=> 2*('4,.!11) . <=> 2*(0 0 0 0 11) . <=> 0 0 0 0 11 0 0 0 0 11.

Multiple-stanza patterns work, such as :3;'2 for 0 1 0 1 0 1. 0 0.

You can start at a specific index in your indent pattern with /[number].

The zone to be poemised is assumed to start at the beginning and to end at EOF.

The start can be put somewhere else with + and the end with -.

When an edge (start/end) is not limited, it will try to fill in with the * and the /.

For a last page of a poem, $ keeps it from adding an |end=.

+, -, $, *, /, parsed in that order, should be beginning of line (* and / absorb the whole line).

I am aware that my effort to compress this can lead to hard to read things, such as +$*2*56!10;'4, but eh, not going to be saved in page history.