mirror of
https://github.com/alvierahman90/otfmacros.git
synced 2024-10-22 14:51:54 +00:00
192 lines
4.4 KiB
Markdown
192 lines
4.4 KiB
Markdown
# otfmacros
|
|
|
|
on the fly macros
|
|
|
|
A syntax/specification for defining macros for any sort of text file.
|
|
The goal of this is to be minimal but intuitive and with enough features to make
|
|
it worth using. It doesn't come with any features that you won't be using really
|
|
regularly.
|
|
|
|
The idea is to avoid having to type long words over and over again without
|
|
overly relying on pronouns if it would make the writing less clear.
|
|
|
|
## features
|
|
|
|
- [automatic plurals (can also be manually changed on a word by word basis)](syntax.md#plurals)
|
|
- [intuitive capitalization](syntax.md#capitalization)
|
|
- [sourcing macros from external files](syntax.md#external-definitions)
|
|
|
|
## syntax
|
|
|
|
How to define macros and what not to define.
|
|
|
|
### definition of simple macros
|
|
Macros are defined in a separate file, by default called `macros`.
|
|
You can add additional macro files through the command line options.
|
|
|
|
Examples of macro definitions:
|
|
|
|
```
|
|
.hc hydrocarbon
|
|
.h hydrogen
|
|
.c carbon
|
|
```
|
|
|
|
#### external definitions
|
|
|
|
You can also `source` macros from another macro file:
|
|
|
|
```
|
|
source ../macros
|
|
source ../../macros
|
|
.hc hydrocarbons
|
|
.h hydrogen
|
|
.c
|
|
```
|
|
|
|
This sources macros from its parent and grandparent directories.
|
|
This may be useful if you have several related topics in separate folders,
|
|
but only some of the macros are shared and some are not.
|
|
|
|
#### on the fly definitions
|
|
|
|
You can also define macros in the middle of a sentence without having to switch to the macros file.
|
|
The last word of multi-word macros must end with `.,` or `,.` and end on the same line.
|
|
|
|
```
|
|
# .Hc hydrocarbon
|
|
In or
|
|
In organic chemistry, a .hc is an .oc organic compound., consisting entirely of
|
|
hydrogen and carbon. .Hcs are examples of group 14 hydrides.
|
|
|
|
|
|
.Ocs are compounds which contain .c .h bonds.
|
|
```
|
|
|
|
The output would be the following:
|
|
|
|
```markdown
|
|
# Hydrocarbon
|
|
In organic chemistry, a hydrocarbon is an organic compound consisting entirely
|
|
of hydrogen and carbon. Hydrocarbons are examples of group 14 hydrides.
|
|
|
|
Organic compounds are compounds which contain carbon hydrogen bonds.
|
|
```
|
|
|
|
Otf macros can be overwritten later in the document.
|
|
They also take precedence of any macros defined in the `macros` file.
|
|
|
|
### plurals
|
|
|
|
Say you only have the following macro definitions:
|
|
|
|
`.hc hydrocarbon`
|
|
|
|
And the file `test.md`:
|
|
|
|
```markdown
|
|
# .Hc
|
|
In organic chemistry, a .hc is an organic compound consisting entirely of
|
|
hydrogen and carbon. .Hcs are examples of group 14 hydrides.
|
|
```
|
|
|
|
The output would be the following:
|
|
|
|
```markdown
|
|
# Hydrocarbon
|
|
In organic chemistry, a hydrocarbon is an organic compound consisting entirely
|
|
of hydrogen and carbon. Hydrocarbons are examples of group 14 hydrides.
|
|
```
|
|
|
|
Note how `.hcs` becomes `hydrocarbons` even though that isn't explicitly
|
|
defined. This helps you avoid adding the plural forms of words.
|
|
|
|
|
|
#### default plurals
|
|
|
|
There are also other default plurals:
|
|
|
|
Ending | Example | Formation | Plural
|
|
--- | --- | --- | ---
|
|
`s`, `ch`, `sh`, `x`, or `z` | dress | add es | dresses
|
|
`[consonant]y` | story | change `y` to `ies` | stories
|
|
`[consonant]o` | macro | add `s` | macros
|
|
`[vowel]o` | hero | add `es` | heroes
|
|
`f` | leaf | change `f` to `ves` | leaves
|
|
|
|
|
|
#### custom plurals
|
|
You can also define your own custom plurals:
|
|
|
|
`macros`
|
|
```
|
|
.s salmon salmon
|
|
.m man men
|
|
.l louse lice
|
|
```
|
|
|
|
Input:
|
|
```
|
|
Hello boys and girls, my name is Fat Lip
|
|
and this is my friend Sammy the .S.
|
|
(What 'do?)
|
|
Today, we're going to teach you some fun new facts about .ss
|
|
and a brand new dance.
|
|
```
|
|
|
|
Output:
|
|
```
|
|
Hello boys and girls, my name is Fat Lip
|
|
and this is my friend Sammy the Salmon.
|
|
(What 'do?)
|
|
Today, we're going to teach you some fun new facts about salmon
|
|
and a brand new dance.
|
|
```
|
|
|
|
Note: for plurals which do not change it's probably easier to just not use the
|
|
plural version at all and forgo defining a custom plural altogether.
|
|
|
|
### capitalization
|
|
|
|
- Capitalizing the first character of a macro makes the first letter of the word
|
|
also capitalized.
|
|
- Capitalizing every letter makes the whole word capitalized also, except if the
|
|
shortcut is only one word long.
|
|
- For this reason, you may not want to use one letter definitions.
|
|
- This also means that macro definitions are case insensitive and are completely
|
|
ignored.
|
|
|
|
Say you have the following macros:
|
|
|
|
```
|
|
.hc hydrocarbon
|
|
.h hydrogen
|
|
.c carbon
|
|
```
|
|
|
|
Input:
|
|
```
|
|
.hc
|
|
.Hc
|
|
.HC
|
|
.h
|
|
.H
|
|
.c
|
|
.C
|
|
```
|
|
|
|
Output:
|
|
```
|
|
hydrocarbon
|
|
Hydrocarbon
|
|
HYDROCARBON
|
|
hydrogen
|
|
Hydrogen
|
|
carbon
|
|
Carbon
|
|
```
|
|
|
|
## python preprocessor
|
|
|
|
An implementation of this that I've written is [otfm-python](https://github.com/alvierahman90/otfm-python).
|