Added IDEAS file to docs as a place to collect ideas as I have them.
This commit is contained in:
@@ -0,0 +1,76 @@
|
|||||||
|
Ideas
|
||||||
|
=====
|
||||||
|
|
||||||
|
This file is simply a collection of ideas for future capabilities of glabels.
|
||||||
|
The ideas may or may not be very well thought out -- it simply a scratchpad.
|
||||||
|
|
||||||
|
|
||||||
|
Merge Fields
|
||||||
|
------------
|
||||||
|
|
||||||
|
Currently substitution fields are specified simply by `${field-name}`. Here, I
|
||||||
|
am exploring ideas to extend this to be a richer substitution language.
|
||||||
|
Some of the criteria to consider are:
|
||||||
|
|
||||||
|
- A rich formatting capability probably cannot be done through GUI controls alone.
|
||||||
|
- It should be simple and easy to understand, but also powerful.
|
||||||
|
- Is there an existing language that can be used in whole or in part.
|
||||||
|
|
||||||
|
|
||||||
|
## Format Control
|
||||||
|
It is desirable to control the format of the fields -- e.g. decimal, hex,
|
||||||
|
number of digits, leading zeros, fixed width, left or right justification,
|
||||||
|
etc. Perhaps something like `${NAME:%-10s}`, i.e.
|
||||||
|
`${field-name:printf-style-format}`.
|
||||||
|
|
||||||
|
|
||||||
|
## Default Values
|
||||||
|
It would also be desirable to specify a default value. (Or an initial value
|
||||||
|
in the event of a counter, see Label Counter below.) Perhaps, something like
|
||||||
|
`${field-name:=value}`
|
||||||
|
|
||||||
|
|
||||||
|
## Possible Syntax
|
||||||
|
This is the first stab at a syntax specification. It is roughly based on
|
||||||
|
the parameter substitution of the Bourne shell.
|
||||||
|
|
||||||
|
```
|
||||||
|
<field> ::= "${" <field_name> [ ":" _modifiers_ ] "}"
|
||||||
|
<modifiers> ::= <modifier> [ ":" <modifiers> ]
|
||||||
|
<modifier> ::= { "%" <format_spec> | "=" <value> }
|
||||||
|
```
|
||||||
|
|
||||||
|
Need a way to quote "`:`" in value. Perhaps "`\:`" or maybe string values
|
||||||
|
should always be in quotes (you would still need to quote out quotes.
|
||||||
|
|
||||||
|
|
||||||
|
## Special Builtin Fields
|
||||||
|
|
||||||
|
### Label Counter
|
||||||
|
|
||||||
|
It would be nice if there was a label counter field. Maybe something like
|
||||||
|
`${#}` or `${label#}`. Also desirable would be the ability to set the start
|
||||||
|
value. Possibly even reading it from a file and updating the file each time.
|
||||||
|
You would want to control if the value is repeated for copies or every copy
|
||||||
|
would be unique -- perhaps two different fields. It would also be desirable to
|
||||||
|
control the format of the counter -- e.g. decimal, hex, number of digits, or
|
||||||
|
leading zeros.
|
||||||
|
|
||||||
|
### Date and Time Fields
|
||||||
|
|
||||||
|
Date and time fields would need to be able to be formatted much like strftime.
|
||||||
|
|
||||||
|
|
||||||
|
## Examples
|
||||||
|
Just some examples of the type of thing I am thinking.
|
||||||
|
|
||||||
|
```
|
||||||
|
${1} /// CSV column 1
|
||||||
|
${addr1} /// Field named "addr1"
|
||||||
|
${n:%09d} /// Field named "n", format as 9 decimal digits with leading zeros
|
||||||
|
${MI:=NMI} /// Field named "MI", with default value of "NMI"
|
||||||
|
${#:%06d:=1000} /// Label counter, format as 6 decimal digits with leading zeros, starting at 1000
|
||||||
|
${#:%06d:<count.txt:>count.txt} /// Perhaps a way to read and write the starting and ending value
|
||||||
|
|
||||||
|
```
|
||||||
|
|
||||||
Reference in New Issue
Block a user