Skip to content

Commit

Permalink
[Insert tasks] 繰り返しタスクファイルでリストや初期状態以外のチェック状態も挿入できるようにする
Browse files Browse the repository at this point in the history
  • Loading branch information
tadashi-aikawa committed Jun 9, 2024
1 parent a0f1c02 commit e4a912f
Show file tree
Hide file tree
Showing 3 changed files with 48 additions and 10 deletions.
41 changes: 32 additions & 9 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,11 +7,11 @@

[Obsidian]でシンプルにタスク管理するためのObsidianプラグインです。目の前のタスクに集中することのみにフォーカスしています。

## ⏬インストール
## インストール

[BRAT]を使って`tadashi-aikawa/silhouette`でインストールします。

## 🚄クイックスタート
## 🚄 クイックスタート

何よりもまずは動かしてみたい人向けです。インストール完了して、プラグインを有効にしたところからスタート。

Expand Down Expand Up @@ -41,7 +41,7 @@
> **Note**
> 学校や仕事が休みの日、祝日などを考慮する場合は[休日設定ファイル]を使ってあなただけの[休日]を定義しましょう📅
## 🧠Silhouetteを用いたタスク管理について
## 🧠 Silhouetteを用いたタスク管理について

機能の紹介をする前に、Silhouetteを使ってどのようにタスク管理するか、前提としているシナリオの説明をします。

Expand All @@ -61,7 +61,7 @@ Silhouetteでは、**タスクはDaily Noteにタスクリストとして管理

タスクリストを完了させるだけです。Silhouetteの機能は使いません。

## ️コマンド
## ️ コマンド

### `Silhouette: Insert tasks`

Expand Down Expand Up @@ -189,7 +189,7 @@ hoge

詳細は[0.8.0](https://github.com/tadashi-aikawa/silhouette/releases/tag/0.8.0)のリリースノートをご覧ください。

## ️設定
## ️ 設定

### `繰り返しタスクファイルのパス`

Expand Down Expand Up @@ -236,7 +236,7 @@ https://day.js.org/docs/en/parse/string-format

有効にすると `Cycle bullet/checkbox` コマンドでタスクを完了したあと、次の行に未完了のタスクが存在するなら、次の行のタスクを自動で計測開始します。

## 📜仕様
## 📜 仕様

### 繰り返しタスクファイル

Expand All @@ -257,6 +257,8 @@ https://day.js.org/docs/en/parse/string-format

タスクの名称です。

##### 階層構造のタスクを挿入

先頭に半角スペースやタブをつけると、[Silhouette: Insert tasks]コマンドを実行したとき、タスクがインデントされます。たとえば

```txt
Expand All @@ -275,6 +277,27 @@ https://day.js.org/docs/en/parse/string-format
- [ ] タブインデント
```

##### リストとして挿入

`- `または`* `から始まるタスク名は **タスクではなく単なるリストとして** 挿入されます。リストを挿入したい場合や、タスクのチェック状態を含めて挿入したい場合に便利です。

たとえば

```txt
体重計測,every day
- 身長,every day
* [x] 体重,every day
- [_] 血圧,every day
```

と記載したとき、`Silhouette: Insert tasks` を実行すると以下が挿入されます。

```txt
- [ ] 体重計測
- 身長
* [x] 体重
- [_] 血圧
```

#### 繰り返しパターン

Expand Down Expand Up @@ -431,7 +454,7 @@ Minervaバックアップ,mon
- `//`から始まるコメント行
- 空行、もしくはスペースのみの行

## 🔤用語定義
## 🔤 用語定義

### タスクの種類

Expand Down Expand Up @@ -570,7 +593,7 @@ Su Mo Tu We Th Fr Sa
| 第1月曜日 | 2023-02-06 |
| 第4月曜日 | 2023-02-27 |

## 🐈FAQ
## 🐈 FAQ

### 異なる端末で計測時間の同期ができない

Expand All @@ -582,7 +605,7 @@ Su Mo Tu We Th Fr Sa
- 指定されてない場合
- `.obsidian/plugins/silhouette/timer.json`の同期が有効になっているか?

## 🦉宣伝
## 🦉 宣伝

[Obsidian]のプラグインとして以下も開発しております。よろしければお試しください。

Expand Down
2 changes: 1 addition & 1 deletion src/app/TaskServiceImpl.ts
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ export class TaskServiceImpl implements TaskService {
this.appHelper.insertStringToActiveFile(
tasks
.filter((x) => x.shouldTry(date, holidays))
.map((x) => `${x.indent}- [ ] ${x.name}`)
.map((x) => x.toString())
.join("\n"),
);
}
Expand Down
15 changes: 15 additions & 0 deletions src/domain/entity/RepetitionTask.ts
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,21 @@ export class RepetitionTask extends Entity<Props> {
return this._props.indent ?? "";
}

/**
* エディタに挿入する形式に変換する
* WARN: これは必ずしもワンタイムタスクに変換されるわけではない
*/
toString(): string {
// XXX: 箇条書きと会社できるタスク名の場合は、タスクではなくメタデータとして扱う
// XXX: 設計として明らかに問題だが #4 のIssueに最小限のコストで対応するため
// XXX: 今後、機能追加のために大きな設計/実装変更を行わなければ多分平気
if (this.name.startsWith("- ") || this.name.startsWith("* ")) {
return `${this.indent}${this.name}`;
}

return `${this.indent}- [ ] ${this.name}`;
}

shouldTry(date: DateTime, holidays: DateTime[]): boolean {
const p = this._props;

Expand Down

0 comments on commit e4a912f

Please sign in to comment.