-
Notifications
You must be signed in to change notification settings - Fork 10
/
template.example.yml
80 lines (74 loc) · 3.26 KB
/
template.example.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
# 模板配置
# 模板命令的格式:指令名 必填参数 [可选参数] < 目标账户
# 例如:饭 20 < zfb
# 1. 指令名可以有多个,都可以触发同一个模板;
# 2. 目标账户可以省略。省略将使用默认账户
# 3. 参数使用空格隔开,可以用引号(")包裹带空格参数
config:
# 目标账户
accounts:
zfb: 'Assets:Digital:Alipay'
wx: 'Assets:Digital:Wechat'
# 默认账户
default_account:
'Assets:Digital:Alipay'
templates:
# 模板定义
# command:设置指令名。可以是一个值或者数组
# args:模板参数。使用时必填,可以在模板定义时用 {参数} 引用
# optional_args:可选参数。可以没有,使用时跟在模板参数后面,默认为空字符串
# computed:需要计算的参数。之后可以跟 Python 表达式语句,语句中可以使用传入的参数和内建变量
# template:定义最终生成的交易语句。可以用 {变量} 引用:
# 1. 内建变量:account(账户)、date(日期)、command(用户输入的指令,在多指令时可能不同)
# 2. 各种参数:参数、可选参数、计算参数都可以引用
# 简单使用示例,若输入语句 "vultr",则会生成如下交易(日期实际会是当日日期,后略)
# 2022-01-01 * "Vultr" "月费"
# Assets:Digital:Alipay
# Expenses:Tech:Cloud 5 USD
# 若指定目标账户,可输入语句 "vultr < wx",则会生成如下交易
# 2022-01-01 * "Vultr" "月费"
# Assets:Digital:Wechat
# Expenses:Tech:Cloud 5 USD
- command: 'vultr'
template: |
{date} * "Vultr" "月费"
{account}
Expenses:Tech:Cloud 5 USD
# 稍复杂的使用示例。
# 1. 可以使用多个指令名,具体使用时选择其一即可,在模板中可以用 {command} 引用
# 2. 可以使用参数,参数默认看作文本。在模板中可以用 {名称} 引用
# 如输入 "咖啡 15",则会生成如下交易
# 2022-01-01 * "" "咖啡"
# Assets:Digital:Alipay
# Expenses:Food:Drink 15 CNY
- command: [ '饮料', '饮', '咖啡' ]
args:
- 'price'
template: |
{date} * "" "{command}"
{account}
Expenses:Food:Drink {price} CNY
# 复杂的使用示例。
# 1. 可以使用可选参数。可选参数在使用指令时接在参数后面,按照先后顺序依次解析,默认为空
# 2. 可以使用 computed 来通过 Python 表达式扩充模板功能。如此处 hour 获取了当前时间
# 的小时;然后通过 expense 的表达式根据当前的小时信息确定对应支出是哪一顿饭
# 如在 2022-07-21 11:32 输入 "饭 23 KFC",则会生成如下交易
# 2022-07-21 * "KFC" "饭"
# Assets:Digital:Alipay
# Expenses:Food:Dinner:Lunch 23 CNY
- command: '饭'
args:
- 'price'
optional_args:
- 'restaurant'
computed:
hour: __import__('datetime').datetime.now().hour
expense: |
'Expenses:Food:Extra' if hour <= 3 or hour >= 21 else \
'Expenses:Food:Dinner:Breakfast' if hour <= 10 else \
'Expenses:Food:Dinner:Lunch' if hour <= 16 else \
'Expenses:Food:Dinner:Supper'
template: |
{date} * "{restaurant}" "饭"
{account}
{expense} {price} CNY