8 个版本

0.3.3 2023年9月9日
0.3.2 2023年9月9日
0.3.1 2022年8月1日
0.3.0 2022年7月30日
0.1.0 2021年6月23日

#733 in 解析实现

每月42次下载

GPL-3.0-or-later

50KB
1.5K SLoC

蒂罗

注意。:这段代码主要为了熟悉 Rust,因此不是典型的/干净的等。

示例

tiro -a example/activities.txt

为什么?

  • 反向计划

    • 我需要1小时12分钟来做X,3小时47分钟来做Y,我之后有时间做Z吗?
  • 与会计相同的逻辑,但用时间来表示

一些设计决策

  • 逐行解析。

  • 行的开头符号应该确定该行是什么

    • 更容易更快,(解析,但也编辑)

(非Cargo) 需求

  • libdbus

未来功能(想法)

能够合并多个计划

  • 检查是否兼容
    • 区间从开始日期到结束日期(段最后活动的结束日期)
      • 可以定义一个结束日期语法来手动指定,并在解析阶段插入它
    • 不重叠的区间
  • 如果兼容则合并
    • 第一个选项:将较小的计划插入较大的计划中
      • 直接使用解析的数据,而不是使用文件输入
      • 需要解析时注册行,以便能够直接插入内容,就在日期之后
    • 第二个选项:保持两个文件分开,只生成一个大的计划
      • 简单合并解析数据
      • 也相关于分层分类(例如,@work)
  • 如果以某种方式兼容,则能够合并计划(时间的比较)。使用中间没有内容的日期作为标记,如果活动的开始/结束时间匹配,则合并到文件中

仍然开放

输入格式

  • 我能否只用 toml 或其他标记语言作为输入,而不是自定义的?
  • 处理格式为 015 0h 15min 的时间戳以加快输入速度
  • 处理只有小时给出的时间戳

待办事项

  • 允许添加一些没有开始时间的活动,例如,考虑早上完成20分钟工作但没有具体说明
  • 在每个文件中编写测试
  • 对日期进行合理性检查:如果活动与当前日期的距离超过20小时,则有些可疑,警告
  • 选项:隐藏子分类中的分类,例如,工作
  • 选项:仅输出分类(@work)
  • 尝试使用 fzf 为 tiro 文件获取自动完成
  • 建议切换到已知的分类,如果接近
  • 在某个地方显示屏幕宽度,以适应 tmux
  • 显示 lifelapses 之间的剩余时间
  • 活动之间的过渡
  • 也监视配置文件
  • 也在摘要中显示分类
  • 移除分类的大小写敏感性,并将关联分类到象限
  • 也保存活动文件
  • 多行描述
  • 检测一个分类是否有多个象限
  • 使颜色可配置
  • 找出为什么需要openssl-dev以及是否可以去除它
  • 忽略不存在的输入文件
  • 使用anyhow处理错误,而不是使用自定义错误

想法(输入)

  • 类别树根据类别顺序
  • 定义一个跨越多个活动的类别(开始/结束)
  • 使用quickcheck进行测试
  • 使用大量数据进行程序性能分析,并观察在复制或不复制时的差异
  • 使用一个包含所有天数的连续文件
  • 需要指明活动相对于彼此的持续时间
  • @today指定当前日期,但如何处理次日修改的情况?
  • 为任务长度添加系数
  • 将“直到何时”的时间作为输入,而不是持续时间
  • 活动中的分支(两个可能的选择)
  • 正确处理时间偏移

依赖关系

~3–13MB
~135K SLoC