Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
18 changes: 14 additions & 4 deletions lib/list.js
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
var util = require('util');
/*!
* 缓存列表
*/
Expand All @@ -22,21 +23,30 @@ List.prototype.get = function (key) {
* 静态方法,根据items生成List对象,并放置到缓存中
* @param {String} name 列表名字
* @param {Array} items 元素列表
* @param {String} head 回复开头
* @param {String} delimiter 回复分隔符
* @param {String} foot 回复底部
*/
List.add = function (name, items) {
List.add = function(name, items, head, delimiter, foot) {
var description = [];
var list = new List();
list.name = name;
items.forEach(function (item) {
items.forEach(function(item) {
var text = item[0];
// 抽取出key,并关联上对应的handle
var replaced = text.replace(/\{(.*)\}/, function (match, key) {
var replaced = text.replace(/\{(.*)\}/, function(match, key) {
list.map[key] = item[1];
return key;
});
description.push(replaced);
});
list.description = description.join('\n'),

if (delimiter) {
var lists = description.join('\n' + (delimiter || '') + '\n');
list.description = util.format('%s\n%s\n%s', head || '', lists, (foot || ''));
} else {
list.description = description.join('\n');
}
listCache[name] = list;
};

Expand Down
19 changes: 19 additions & 0 deletions test/list.test.js
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@

var should = require('should');
var List = require('../').List;

Expand Down Expand Up @@ -44,4 +45,22 @@ describe('list.js', function () {
list.get('b').should.be.equal(common[2][1]);
list.get('c').should.be.equal(common[3][1]);
});

it('should ok with body, foot, delimiter', function() {
var common = [
['选择{a}查看啥', function () {}],
['选择{b}查看啥', function () {}],
['选择{c}查看啥', function () {}]
];
var head = '我是头';
var delimiter = '-------';
var foot = '我是小尾巴';

List.add('common', common, head, delimiter, '我是小尾巴');
var list = List.get('common');
list.description.should.be.equal(head + '\n选择a查看啥\n' + delimiter + '\n选择b查看啥\n' + delimiter + '\n选择c查看啥\n' + foot);
list.get('a').should.be.equal(common[0][1]);
list.get('b').should.be.equal(common[1][1]);
list.get('c').should.be.equal(common[2][1]);
});
});