diff --git a/README.md b/README.md index 8562455..87fe617 100644 --- a/README.md +++ b/README.md @@ -7,11 +7,11 @@ [Obsidian]でシンプルにタスク管理するためのObsidianプラグインです。目の前のタスクに集中することのみにフォーカスしています。 -## ⏬インストール +## ⏬ インストール [BRAT]を使って`tadashi-aikawa/silhouette`でインストールします。 -## 🚄クイックスタート +## 🚄 クイックスタート 何よりもまずは動かしてみたい人向けです。インストール完了して、プラグインを有効にしたところからスタート。 @@ -41,7 +41,7 @@ > **Note** > 学校や仕事が休みの日、祝日などを考慮する場合は[休日設定ファイル]を使ってあなただけの[休日]を定義しましょう📅 -## 🧠Silhouetteを用いたタスク管理について +## 🧠 Silhouetteを用いたタスク管理について 機能の紹介をする前に、Silhouetteを使ってどのようにタスク管理するか、前提としているシナリオの説明をします。 @@ -61,7 +61,7 @@ Silhouetteでは、**タスクはDaily Noteにタスクリストとして管理 タスクリストを完了させるだけです。Silhouetteの機能は使いません。 -## ⌨️コマンド +## ⌨️ コマンド ### `Silhouette: Insert tasks` @@ -189,7 +189,7 @@ hoge 詳細は[0.8.0](https://github.com/tadashi-aikawa/silhouette/releases/tag/0.8.0)のリリースノートをご覧ください。 -## ⚙️設定 +## ⚙️ 設定 ### `繰り返しタスクファイルのパス` @@ -236,7 +236,7 @@ https://day.js.org/docs/en/parse/string-format 有効にすると `Cycle bullet/checkbox` コマンドでタスクを完了したあと、次の行に未完了のタスクが存在するなら、次の行のタスクを自動で計測開始します。 -## 📜仕様 +## 📜 仕様 ### 繰り返しタスクファイル @@ -257,6 +257,8 @@ https://day.js.org/docs/en/parse/string-format タスクの名称です。 +##### 階層構造のタスクを挿入 + 先頭に半角スペースやタブをつけると、[Silhouette: Insert tasks]コマンドを実行したとき、タスクがインデントされます。たとえば ```txt @@ -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] 体重 + - [_] 血圧 +``` #### 繰り返しパターン @@ -431,7 +454,7 @@ Minervaバックアップ,mon - `//`から始まるコメント行 - 空行、もしくはスペースのみの行 -## 🔤用語定義 +## 🔤 用語定義 ### タスクの種類 @@ -570,7 +593,7 @@ Su Mo Tu We Th Fr Sa | 第1月曜日 | 2023-02-06 | | 第4月曜日 | 2023-02-27 | -## 🐈FAQ +## 🐈 FAQ ### 異なる端末で計測時間の同期ができない @@ -582,7 +605,7 @@ Su Mo Tu We Th Fr Sa - 指定されてない場合 - `.obsidian/plugins/silhouette/timer.json`の同期が有効になっているか? -## 🦉宣伝 +## 🦉 宣伝 [Obsidian]のプラグインとして以下も開発しております。よろしければお試しください。 diff --git a/src/app/TaskServiceImpl.ts b/src/app/TaskServiceImpl.ts index 0b950f2..c04a318 100644 --- a/src/app/TaskServiceImpl.ts +++ b/src/app/TaskServiceImpl.ts @@ -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"), ); } diff --git a/src/domain/entity/RepetitionTask.ts b/src/domain/entity/RepetitionTask.ts index 77b2850..5f920be 100644 --- a/src/domain/entity/RepetitionTask.ts +++ b/src/domain/entity/RepetitionTask.ts @@ -30,6 +30,21 @@ export class RepetitionTask extends Entity { 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;