On Jun 20, 1:03 am, "Ville M. Vainio" <[email protected]> wrote:

> Why do we need sentinel table in the first place? Why not just use the short 
> sentinels (base64 counter) and be done with it?

Because short gnx's don't work.  Leo's present sentinels have the form
id.t.n, where id is a supposedly unique identifier (like a bzr id), t
is a timestamp, and n is a disambiguating index used when gnx's would
otherwise have the same timestamp.   Converting this to a base-64
number will not, in fact, result in a significantly smaller
representation, because the space of numbers to be "covered" is very
large.

In contrast, with the leo-editor-data line, we need only cover the N
nodes in the external file.  Thus, one-or-two-character indices
suffice.

For reference, here is my present thinking about what an external file
will look like:

#...@+leo-ver=5-thin
#...@leo-data <list of gnx's>
#...@node 1 * @thin sentinels_test.py
#@@
# This is a doc part.
#...@c

#...@+<< a >>
#...@+node 2 ** << a >>
a
#...@-<< a >>

#...@+others
#...@node 3 *** a-1
a-1
#...@node 4 *** a-2
a-2
#...@-others

b

#...@+others
#...@node 5 ** 1-1
1-1
#...@node 6 *** 2-1
2-1
#...@node 7 **** 3-1
3-1
#...@node 8 ** 1-2
1-2
#...@-others

Notes:

1.  Some further comments about node sentinel lines.  The form of the
line is:

#...@node <index> <level> <headline>

For example:

#...@node 7 **** 3-1

I think this is about as good as can be.  The node number is necessary
to resolve clones.  The level indicator is the clearest possible
representation *for humans*.  The headline is real data, and is always
a useful comment. We could abbreviate @node to, say, @!, but imo @node
is much easier for humans to understand.

2. The example does not use the ';/:' convention to indicate that the
body text of a node does not end in a newline.  I'm not sure whether
this is a feature or a bug. Either way, whitespace clearly delimits
the <index> and <level> fields from the <headline> field.

3.  As before, @others and section references have terminating
sentinels.  This is required because those constructs embed the
contents of nodes in the body text of another node.

Edward

-- 
You received this message because you are subscribed to the Google Groups 
"leo-editor" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/leo-editor?hl=en.

Reply via email to