-
-
Notifications
You must be signed in to change notification settings - Fork 60
Add documentation for prompt types and validators in English and Japanese #342
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Changes from all commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,85 @@ | ||
| # 高度な機能 | ||
|
|
||
| ## Enum 型のサポート | ||
|
|
||
| `Select` や `MultiSelect` で Enum 型を使用すると、Enum の値から自動的に項目が生成されます。`[Display]` 属性を使って表示名をカスタマイズできます: | ||
|
|
||
| ```csharp | ||
| using System.ComponentModel.DataAnnotations; | ||
|
|
||
| public enum MyEnum | ||
| { | ||
| [Display(Name = "First value")] | ||
| First, | ||
| [Display(Name = "Second value")] | ||
| Second, | ||
| [Display(Name = "Third value")] | ||
| Third | ||
| } | ||
|
|
||
| var value = Prompt.Select<MyEnum>("Select enum value"); | ||
| Console.WriteLine($"You selected {value}"); | ||
| ``` | ||
|
|
||
| `MultiSelect` の場合: | ||
|
|
||
| ```csharp | ||
| var values = Prompt.MultiSelect<MyEnum>("Select enum values"); | ||
| Console.WriteLine($"You picked {string.Join(", ", values)}"); | ||
| ``` | ||
|
|
||
| ## Unicode サポート | ||
|
|
||
| Sharprompt はマルチバイト文字と絵文字をサポートしています。最良の結果を得るには、出力エンコーディングを UTF-8 に設定してください: | ||
|
|
||
| ```csharp | ||
| Console.OutputEncoding = Encoding.UTF8; | ||
|
|
||
| var name = Prompt.Input<string>("What's your name?"); | ||
| Console.WriteLine($"Hello, {name}!"); | ||
| ``` | ||
|
|
||
| ## Fluent インターフェース | ||
|
|
||
| すべてのプロンプトタイプは `Sharprompt.Fluent` 名前空間を通じて Fluent インターフェースをサポートしています: | ||
|
|
||
| ```csharp | ||
| using Sharprompt.Fluent; | ||
|
|
||
| var city = Prompt.Select<string>(o => o.WithMessage("Select your city") | ||
| .WithItems(new[] { "Seattle", "London", "Tokyo" }) | ||
| .WithDefaultValue("Seattle")); | ||
| ``` | ||
|
|
||
| Fluent API はプロパティを設定するための `With*` メソッドと、コレクション(バリデータなど)に追加するための `Add*` メソッドを提供しています。 | ||
|
|
||
| ## テキストセレクタ | ||
|
|
||
| `Select` と `MultiSelect` では、項目の表示方法を制御するカスタム関数を提供できます: | ||
|
|
||
| ```csharp | ||
| var user = Prompt.Select("Select user", users, textSelector: u => u.Name); | ||
| ``` | ||
|
|
||
| ## ページネーション | ||
|
|
||
| `Select` と `MultiSelect` は `pageSize` パラメータによるページネーションをサポートしています: | ||
|
|
||
| ```csharp | ||
| var city = Prompt.Select("Select your city", | ||
| new[] { "Seattle", "London", "Tokyo", "New York", "Singapore", "Shanghai" }, | ||
| pageSize: 3); | ||
| ``` | ||
|
|
||
| ## ループ選択 | ||
|
|
||
| デフォルトでは、選択リストは先頭または末尾に到達するとループします。これはオプションクラスで無効にできます: | ||
|
|
||
| ```csharp | ||
| var city = Prompt.Select(new SelectOptions<string> | ||
| { | ||
| Message = "Select your city", | ||
| Items = new[] { "Seattle", "London", "Tokyo" }, | ||
| LoopingSelection = false | ||
| }); | ||
| ``` |
| Original file line number | Diff line number | Diff line change | ||||
|---|---|---|---|---|---|---|
| @@ -0,0 +1,85 @@ | ||||||
| # 設定 | ||||||
|
|
||||||
| Sharprompt では、プロンプトの外観と動作をグローバルにカスタマイズできます。 | ||||||
|
|
||||||
| ## シンボル | ||||||
|
|
||||||
| プロンプトで使用されるシンボルをカスタマイズできます: | ||||||
|
|
||||||
| ```csharp | ||||||
| Prompt.Symbols.Prompt = new Symbol("🤔", "?"); | ||||||
| Prompt.Symbols.Done = new Symbol("😎", "V"); | ||||||
| Prompt.Symbols.Error = new Symbol("😱", ">>"); | ||||||
|
|
||||||
| var name = Prompt.Input<string>("What's your name?"); | ||||||
| ``` | ||||||
|
|
||||||
| `Symbol` クラスは 2 つの引数を取ります: Unicode 値と、Unicode をサポートしないターミナル用のフォールバック値です。 | ||||||
|
|
||||||
| ### 利用可能なシンボル | ||||||
|
|
||||||
| | シンボル | デフォルト (Unicode) | デフォルト (フォールバック) | 説明 | | ||||||
| |--------|-------------------|-------------------|-------------| | ||||||
| | `Prompt` | `?` | `?` | プロンプトメッセージの前に表示 | | ||||||
|
Comment on lines
+21
to
+23
|
||||||
| | `Done` | `✔` | `V` | プロンプト完了時に表示 | | ||||||
| | `Error` | `»` | `>>` | バリデーション失敗時に表示 | | ||||||
| | `Selector` | `›` | `>` | 現在ハイライトされている項目を指す | | ||||||
| | `Selected` | `◉` | `(*)` | MultiSelect で選択済みの項目を示す | | ||||||
| | `NotSelect` | `◯` | `( )` | MultiSelect で未選択の項目を示す | | ||||||
|
|
||||||
| ## カラースキーマ | ||||||
|
|
||||||
| プロンプトで使用される色をカスタマイズできます: | ||||||
|
|
||||||
| ```csharp | ||||||
| Prompt.ColorSchema.Answer = ConsoleColor.DarkRed; | ||||||
| Prompt.ColorSchema.Select = ConsoleColor.DarkCyan; | ||||||
|
|
||||||
| var name = Prompt.Input<string>("What's your name?"); | ||||||
| ``` | ||||||
|
|
||||||
| ### 利用可能な色 | ||||||
|
|
||||||
| | プロパティ | デフォルト | 説明 | | ||||||
| |----------|---------|-------------| | ||||||
| | `DoneSymbol` | `Green` | 完了シンボルの色 | | ||||||
| | `PromptSymbol` | `Green` | プロンプトシンボルの色 | | ||||||
| | `Answer` | `Cyan` | ユーザーの回答の色 | | ||||||
| | `Select` | `Green` | 選択項目の色 | | ||||||
| | `Error` | `Red` | エラーメッセージの色 | | ||||||
| | `Hint` | `DarkGray` | ヒントとプレースホルダーの色 | | ||||||
| | `DisabledOption` | `DarkCyan` | 無効な選択肢の色 | | ||||||
|
|
||||||
| ## キャンセルのサポート | ||||||
|
|
||||||
| デフォルトでは、`Ctrl+C` を押すとデフォルト値が返されます。この動作を変更して例外をスローさせることができます: | ||||||
|
||||||
| デフォルトでは、`Ctrl+C` を押すとデフォルト値が返されます。この動作を変更して例外をスローさせることができます: | |
| デフォルトでは、`Ctrl+C` や `Esc` を押すとキャンセルコールバックが呼び出され、その後 `Environment.Exit(1)` によってプロセスが終了します。`Prompt.ThrowExceptionOnCancel` を `true` に設定すると、代わりに `PromptCanceledException` がスローされます: |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,52 @@ | ||
| # はじめに | ||
|
|
||
| ## インストール | ||
|
|
||
| NuGet から Sharprompt をインストールします: | ||
|
|
||
| ::: code-group | ||
|
|
||
| ```powershell [Package Manager] | ||
| Install-Package Sharprompt | ||
| ``` | ||
|
|
||
| ```sh [.NET CLI] | ||
| dotnet add package Sharprompt | ||
| ``` | ||
|
|
||
| ::: | ||
|
|
||
| ## クイックスタート | ||
|
|
||
| ```csharp | ||
| using Sharprompt; | ||
|
|
||
| // シンプルな入力 | ||
| var name = Prompt.Input<string>("What's your name?"); | ||
| Console.WriteLine($"Hello, {name}!"); | ||
|
|
||
| // パスワード入力 | ||
| var secret = Prompt.Password("Type new password", | ||
| validators: new[] { Validators.Required(), Validators.MinLength(8) }); | ||
| Console.WriteLine("Password OK"); | ||
|
|
||
| // 確認 | ||
| var answer = Prompt.Confirm("Are you ready?", defaultValue: true); | ||
| Console.WriteLine($"Your answer is {answer}"); | ||
| ``` | ||
|
|
||
| ## サンプルの実行 | ||
|
|
||
| リポジトリには全プロンプトタイプのサンプルプロジェクトが含まれています: | ||
|
|
||
| ```sh | ||
| dotnet run --project samples/Sharprompt.Example | ||
| ``` | ||
|
|
||
| ## サポートされているプラットフォーム | ||
|
|
||
| | プラットフォーム | ターミナル | | ||
| |----------|----------| | ||
| | Windows | コマンドプロンプト、PowerShell、Windows Terminal | | ||
|
Comment on lines
+48
to
+50
|
||
| | Linux | Windows Terminal (WSL 2)、各種ターミナルエミュレータ | | ||
| | macOS | Terminal.app、iTerm2 など | | ||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,32 @@ | ||
| --- | ||
| layout: home | ||
|
|
||
| hero: | ||
| name: Sharprompt | ||
| text: C# 向けの対話型コマンドラインプロンプト | ||
| tagline: 対話型 CLI アプリケーションを構築するためのシンプルでクロスプラットフォームなフレームワーク | ||
| image: | ||
| src: /icon.png | ||
| alt: Sharprompt | ||
| actions: | ||
| - theme: brand | ||
| text: はじめに | ||
| link: /ja/getting-started | ||
| - theme: alt | ||
| text: GitHub で見る | ||
| link: https://github.com/shibayan/Sharprompt | ||
|
|
||
| features: | ||
| - title: マルチプラットフォーム | ||
| details: Windows、Linux、macOS の様々なターミナルエミュレータで動作します。 | ||
| - title: 豊富なプロンプトタイプ | ||
| details: Input、Password、Select、MultiSelect、List、Confirm、モデルベースの Bind プロンプトをサポートしています。 | ||
| - title: バリデーション | ||
| details: 必須フィールド、最小/最大文字数、正規表現の組み込みバリデータを提供しています。 | ||
| - title: Unicode サポート | ||
| details: マルチバイト文字と絵文字を完全にサポートしています 😀🎉 | ||
| - title: カスタマイズ可能 | ||
| details: シンボル、カラースキーマ、キャンセル動作を自由に設定できます。 | ||
| - title: Fluent API | ||
| details: 可読性の高いクリーンな Fluent インターフェースでプロンプトを構築できます。 | ||
| --- |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
In the Japanese locale sidebar config, the section titles are still English (e.g., “Introduction”, “Prompt Types”, “Reference”). If the goal is a fully Japanese experience, these
textlabels should be translated as well for consistency with the Japanese nav.