feat(argtype): :alone - the value of an option written without one
An optional argument has three values: the default (the name is absent), the argument type's :alone value (the name is written alone), and a written value. :alone is declared by the argument type only, never by a klammer's parameter declaration -- a default is what one klammer means by silence, but a bare option name must read the same way in every klammer. The bool type declares :alone true, which is the whole of the convention that a bare boolean option means true; there is no boolean special case in the engine. A type whose pattern matches running text cannot declare :alone, since an option's value runs to the next bar or option name and would swallow the following text. kdesc and `ktext -m` now show [default: X] and [alone: Y] per argument type. In the Standard Klammer Set: @code :number becomes a bool (it was an untyped string tested only for truthiness, so a bare :number was a no-op); decimal_mark declares :alone comma; table_hline and table_vline declare :alone all. The 35 bools that default false gained the bare form for free. Tests: tst/alone_test.sh (21 cases) joins the shipped suite. (from dev 6024f49c2859)
This commit is contained in:
@@ -1,5 +1,5 @@
|
||||
|
||||
@@code.k :filename :pattern :caption :number | text.literal :
|
||||
@@code.k :filename :pattern :caption :number.bool | text.literal :
|
||||
A source file displayed verbatim
|
||||
@@
|
||||
|
||||
|
||||
@@ -158,7 +158,7 @@ def tex_list(K, list_type, items):
|
||||
body = "\n\n".join([f"\\item {e}" for e in items])
|
||||
command = {'ol' : 'enumerate', 'ul' : 'itemize'}[list_type]
|
||||
topsep = '[topsep=0pt]'
|
||||
listsep = '\\setlist{nolistsep}' if K.cmp != 'false' else ''
|
||||
listsep = '\\setlist{nolistsep}' if K.cmp else ''
|
||||
result = f'{listsep}\n\\begin{{{command}}}{topsep}\n{body}\n\\end{{{command}}}\n'
|
||||
return result
|
||||
|
||||
|
||||
@@ -75,6 +75,7 @@
|
||||
|
||||
:pattern ((?^:top^|head^|inner^|bottom^|all^|none)(?^:'index_subsets')?^|'indexed_range'^|\s+)+
|
||||
:python_cast (lambda s : s.split())
|
||||
:alone all
|
||||
@@@
|
||||
|
||||
@@@argtype table_vline |
|
||||
@@ -94,6 +95,7 @@
|
||||
|
||||
:pattern ((?^:outer^|inner^|all^|none)(?^:'index_subsets')?^|'indexed_range'^|\s+)+
|
||||
:python_cast (lambda s : s.split())
|
||||
:alone all
|
||||
@@@
|
||||
|
||||
@@@argtype table_span |
|
||||
@@ -157,6 +159,7 @@
|
||||
calculated values.
|
||||
:pattern period^|comma
|
||||
:default period
|
||||
:alone comma
|
||||
@@@
|
||||
|
||||
@@@argtype table_justify |
|
||||
|
||||
Reference in New Issue
Block a user