This note describes the initial version of a checklist importer.
There are obviously a number of changes that could be made, and the "sentence" parsing is pretty unsophisticated at present, but it can act as a basis for future versions.
Some rules:Define a "checklist" as lines with indentation to indicate grouping. Indentation can be nested; blank lines are allowed only at the top level.
Lines at the next level of indentation will become nodes in that refinement.
If any line has more deeply indented lines under it, it also produces a refinement with lines at the next level (relative to it) as its nodes; and so on.
Lines should NOT be numbered. (If necessary, we can introduce handling for numbered lines later.)
How to use this new feature:
If you look at "Help" -> "About I-X Process Panel", the list of "File syntaxes" will include:
Checklist files as domains ("checklist")
Input only
Input must be a domain
An example:
Go to London
Prepare for trip.
Buy train tickets
Book hotel
Arrange meetings
Pack clothes
Buy food to eat on train.
Buy sandwiches
Buy wine
Buy snacks
Get enough money for taxi food etc
To do the night before
Book taxi
Check train times
Set alarm clock
Go to Waverley.
Take train
Return trip
Check tickets
In LTF syntax, that becomes:
(refinement Go-0 (Go to London)
(nodes
(1 (Prepare for trip.))
(2 (To do the night before))
(3 (Go to Waverley.))
(4 (Take train))))
(refinement Prepare-0 (Prepare for trip.)
(nodes
(1 (Buy train tickets))
(2 (Book hotel))
(3 (Arrange meetings))
(4 (Pack clothes))
(5 (Buy food to eat on train.))
(6 (Get enough money for taxi food etc))))
(refinement Buy-0 (Buy food to eat on train.)
(nodes
(1 (Buy sandwiches))
(2 (Buy wine))
(3 (Buy snacks))))
(refinement To-0 (To do the night before)
(nodes
(1 (Book taxi))
(2 (Check train times))
(3 (Set alarm clock))))
(refinement Return-0 (Return trip)
(nodes
(1 (Check tickets))))
It could obviously be better about generating refinement names and at handling punctiation and capitalisation in the source.
There is a case for restricting the refinement that can be used in "nested" cases to the one that was produced from the nested lines (rather than just linking them through the expands-pattern); but there's also a pretty good case for not doing that.