Compare commits
No commits in common. "207a2b2a898cff427562fd1c68f9e8d2d28b0fe6" and "70cec103a716721011f543d4957284713460877c" have entirely different histories.
207a2b2a89
...
70cec103a7
82
readme.md
82
readme.md
|
|
@ -1,82 +0,0 @@
|
|||
# coin
|
||||
|
||||
## Description
|
||||
|
||||
transforms a template string to its refined version by substituting its placeholders with concrete values
|
||||
|
||||
|
||||
## Building
|
||||
|
||||
### Requirements
|
||||
|
||||
- shell interpreter
|
||||
|
||||
|
||||
### Instructions
|
||||
|
||||
- execute `tools/build`
|
||||
|
||||
|
||||
## Installation
|
||||
|
||||
### Requirements
|
||||
|
||||
- shell interpreter
|
||||
|
||||
|
||||
### Instructions
|
||||
|
||||
- (as `root`) execute `tools/install`
|
||||
|
||||
|
||||
## Usage
|
||||
|
||||
### Requirements
|
||||
|
||||
- Python 3 interpreter
|
||||
|
||||
|
||||
### Examples
|
||||
|
||||
#### basic
|
||||
|
||||
```
|
||||
echo '{{flowers}} are {{color}}' | coin -a 'flowers:roses' -a 'color:red'
|
||||
|
||||
# roses are red
|
||||
```
|
||||
|
||||
The same result can be produced by using multiple `coin` calls:
|
||||
|
||||
```
|
||||
echo '{{flowers}} are {{color}}' | coin -a 'flowers:roses' | coin -a 'color:red'
|
||||
```
|
||||
|
||||
In some contextes curly brackets might might be reserved or not available for other reasons. This can be mitigated by using different placeholder indicators:
|
||||
|
||||
```
|
||||
echo '<<flowers>> are <<color>>' | coin -o '<<' -c '>>' -a 'flowers:roses' -a 'color:red'
|
||||
```
|
||||
|
||||
|
||||
#### file arguments
|
||||
|
||||
```
|
||||
echo -n "cornflowers" > /tmp/flowers.txt
|
||||
echo -n "blue" > /tmp/color.txt
|
||||
echo '{{flowers}} are {{color}}' | coin -a 'flowers:@/tmp/flowers.txt' -a 'color:@/tmp/color.txt'
|
||||
|
||||
# cornflowers are blue
|
||||
```
|
||||
|
||||
|
||||
#### data file
|
||||
|
||||
```
|
||||
echo -e "flowers: daffodills\ncolor: yellow" > /tmp/data.yaml
|
||||
echo '{{flowers}} are {{color}}' | coin -d /tmp/data.yaml
|
||||
|
||||
# daffodills are yellow
|
||||
```
|
||||
|
||||
|
||||
|
|
@ -1,5 +1,4 @@
|
|||
import sys as _sys
|
||||
import re as _re
|
||||
import json as _json
|
||||
import yaml as _yaml
|
||||
import argparse as _argparse
|
||||
|
|
@ -23,29 +22,23 @@ def string_coin(
|
|||
options = (
|
||||
{
|
||||
"character_open": "{{",
|
||||
"character_close": "}}",
|
||||
"ignore_whitespaces": True,
|
||||
"character_close": "}}"
|
||||
}
|
||||
|
|
||||
(options or {})
|
||||
)
|
||||
result = template
|
||||
for (key, value, ) in arguments.items():
|
||||
pattern = (
|
||||
_re.escape(options["character_open"])
|
||||
+
|
||||
("\s*" if options["ignore_whitespaces"] else "")
|
||||
+
|
||||
_re.escape(key)
|
||||
+
|
||||
("\s*" if options["ignore_whitespaces"] else "")
|
||||
+
|
||||
_re.escape(options["character_close"])
|
||||
result = result.replace(
|
||||
(
|
||||
"%s%s%s"
|
||||
% (
|
||||
options["character_open"],
|
||||
key,
|
||||
options["character_close"],
|
||||
)
|
||||
result = _re.sub(
|
||||
pattern,
|
||||
value,
|
||||
result
|
||||
),
|
||||
value
|
||||
)
|
||||
return result
|
||||
|
||||
|
|
@ -161,12 +154,6 @@ def main(
|
|||
metavar = "<character-close>",
|
||||
help = "placeholder closing character",
|
||||
)
|
||||
argument_parser.add_argument(
|
||||
"-w",
|
||||
"--heed-whitespaces",
|
||||
action = "store_true",
|
||||
help = "whether whitespace characters in the template string shall be heeded, i.e. not be ignored",
|
||||
)
|
||||
args = argument_parser.parse_args()
|
||||
|
||||
## exec
|
||||
|
|
@ -182,7 +169,6 @@ def main(
|
|||
{
|
||||
"character_open": args.character_open,
|
||||
"character_close": args.character_close,
|
||||
"ignore_whitespaces": (not args.heed_whitespaces),
|
||||
}
|
||||
)
|
||||
_sys.stdout.write(content_out)
|
||||
|
|
|
|||
Loading…
Reference in a new issue