ScenarioTransceiver
メッセージ送信/受信をサポートするパッケージ
Require
node8+
lodash
joi
Usage
const path = require('path');
const { ScenarioTransceiver } = require('scenario-transceiver');
// 読み込むメッセージノートのパスを指定
const st = new ScenarioTransceiver(path.resolve('test/notes'));
// 送信メッセージを生成する
const message1 = st.generate({ key: 'USER:HOME' });
console.log('\nmessage1:', message1);
const message2 = st.generate({ key: 'USER:HELLO' });
console.log('\nmessage2:', message2);
const message3 = st.generate({ key: 'USER:APPROVE:REASON', opts: { startDate: '10月10日', startTime: '22時30分' } });
console.log('\nmessage3:', message3);
//res.send(message);
// メッセージキーと抽出項目を取得する
// 受信メッセージパターンに一致する対象が存在しない場合は、それぞれのパラメータにundefinedを返す
const { key, opts } = st.parse(message3.question);
console.log('key:', key);
console.log('opts:', opts);
本文オプション/選択肢オプション
本文や選択肢生成の為のオプションメソッドを使用し、動的項目を含めたメッセージを作成する。
test/notes/note-x.js
const MessageTransceiver = ;const q = MessageTransceivergenerateQuestion;const o = MessageTransceivergenerateOptions; moduleexports = 'BOOK': 'LIST': question: q options: o o 'ALL_LIST': question: q options: o 'DETAIL': question: q q q options: o o o ;
[本文オプション] question.regular
- セレクトスタンプの本文を作成するメソッド
Array-likeな値を渡すことで文字列を生成する。
const MessageTransceiver = ;const q = MessageTransceivergenerateQuestion;const o = MessageTransceivergenerateOptions; moduleexports = 'DETAIL': question: q q q options: o o o ;
- 送信メッセージの作成と受信メッセージの正規表現の作成を兼ねている為、動的項目には
reg
に一致させる正規表現を渡す必要がある。 - 動的項目は
item
プロパティに渡す。 - 送信メッセージの作成時に、動的項目を
item
に渡すことで動的な本文を作成する。 - 動的項目の正規表現を
reg
に渡してあることから、受信メッセージの判別を行い、その項目に該当する値を抽出してitem
の値をプロパティ名としたオブジェクトを取得できる。 例)opts.recordNo// '123'
[本文削除オプション] question.remove*
- 条件によって行の非出力を行うメソッド
- 本文オプションを引数として実行する
q.removeIncludeFalsy(q.regular({ reg: '(.+)', item: 'item1' }))
[本文削除オプション] removeIncludeFalsy()
項目内にfalsyが含まれる場合、その項目を非出力とする
[本文削除オプション] removeIncludeStrictFalse()
項目内にfalseが含まれる場合、その項目を非出力とする
[本文削除オプション] removeIsFalsy()
項目内全てがfalsyの場合、その項目を非出力とする
[本文削除オプション] removeIsStrictFalse()
項目内全てがfalseの場合、その項目を非出力とする
例)
q
[本文オプション] default
項目内にdefaultがある場合、itemで指定したプロパティが存在しない場合に、defaultの値を出力する
例)
const today = `月日`;...qq
[選択肢オプション] option.regular(value1, value1, ...)
- セレクトスタンプの選択肢を作成するメソッド Array-likeな値を渡すことで選択肢文字列を生成する。
- 本文オプションとは異なり、正規表現のプロパティを持たない。
options: o o o
[選択肢オプション] option.either(value)
item
がtruthyかどうかで、truthy
プロパティかfaly
プロパティかどちらかが有効となる。- 引数には1オブジェクトのみを渡す
options: o o
[選択肢オプション] option.list(value)
item
プロパティで示すオブジェクトのプロパティを、選択肢としてリスト出力する。
'ALL_LIST': question: q options: o
Test
npm test
test/scenario-transceiver.test.js
const assert = ;const safeRegex = ;const ScenarioTransceiver = ; const st = './test/notes'; /** @test */;