Class: BCDice::CommonCommand::Choice
- Inherits:
-
Object
- Object
- BCDice::CommonCommand::Choice
- Defined in:
- lib/bcdice/common_command/choice.rb
Overview
チョイスコマンド
列挙された項目の中から一つを選んで出力する。
フォーマットは以下の通り choice choice(A,B,C,D) choice A B C D choice(新クトゥルフ神話TRPG, ソード・ワールド2.5, Dungeons & Dragons)
“choice”の次の文字によって区切り文字が変化する
"[" -> "," で区切る
"(" -> "," で区切る
" " -> /\s+/ にマッチする文字列で区切る
各項目の前後に空白文字があった場合は除去される
choice[A, B, C , D ] は choice[A,B,C,D] と等価
項目が空文字列である場合、その項目は無視する
choice[A,,C] は choice[A,C] と等価
フォーマットを選ぶことで、項目の文字列に()や,を含めることができる
choice A,B X,Y -> "A,B" と "X,Y" から選ぶ
choice(A[], B[], C[]) -> "A[]", "B[]", "C[]" から選ぶ
choice[A(), B(), C()] -> "A()", "B()", "C()" から選ぶ
Defined Under Namespace
Modules: BlockDelimiter
Constant Summary collapse
- PREFIX_PATTERN =
/choice/.freeze
- DELIMITER =
{ bracket: /,/, paren: /,/, space: /\s+/, }.freeze
- TERMINATION =
{ bracket: /\]/, paren: /\)/, space: /$/, }.freeze
- SUFFIX =
{ bracket: "]", paren: ")", space: "", }.freeze
Class Method Summary collapse
Instance Method Summary collapse
- #expr ⇒ Object
-
#initialize(secret:, block_delimiter:, items:) ⇒ Choice
constructor
A new instance of Choice.
- #roll(randomizer) ⇒ Result
Constructor Details
#initialize(secret:, block_delimiter:, items:) ⇒ Choice
Returns a new instance of Choice.
123 124 125 126 127 |
# File 'lib/bcdice/common_command/choice.rb', line 123 def initialize(secret:, block_delimiter:, items:) @secret = secret @block_delimiter = block_delimiter @items = items end |
Class Method Details
.eval(command, _game_system, randomizer) ⇒ Result?
64 65 66 67 |
# File 'lib/bcdice/common_command/choice.rb', line 64 def eval(command, _game_system, randomizer) cmd = parse(command) cmd&.roll(randomizer) end |
Instance Method Details
#expr ⇒ Object
141 142 143 144 145 146 147 148 149 150 |
# File 'lib/bcdice/common_command/choice.rb', line 141 def expr case @block_delimiter when BlockDelimiter::SPACE "choice #{@items.join(' ')}" when BlockDelimiter::BRACKET "choice[#{@items.join(',')}]" when BlockDelimiter::PAREN "choice(#{@items.join(',')})" end end |