UNPKG

1.48 kBJavaScriptView Raw
1var trim = require('../utils/trim');
2var unindent = require('../utils/unindent');
3
4var ParameterError = require('../errors/parameter_error');
5
6// Additional information for error log
7var _messages = {
8 common: {
9 element: 'apiDefine',
10 usage : '@apiDefine name',
11 example: '@apiDefine MyValidName'
12 }
13};
14
15function parse(content, source, messages) {
16 messages = messages || _messages;
17
18 content = trim(content);
19
20 var parseRegExp = /^(\w*)(.*?)(?:\s+|$)(.*)$/gm;
21 var matches = parseRegExp.exec(content);
22
23 if ( ! matches)
24 return null;
25
26 if (matches[0] === '')
27 throw new ParameterError('No arguments found.',
28 messages.common.element, messages.common.usage, messages.common.example);
29
30 if (matches[2] !== '')
31 throw new ParameterError('Name must contain only alphanumeric characters.',
32 messages.common.element, messages.common.usage, messages.common.example);
33
34 var name = matches[1];
35 var title = matches[3];
36 var description = '';
37
38 while ( (matches = parseRegExp.exec(content)) ) {
39 description += matches[0] + '\n';
40 }
41
42 return {
43 name : name,
44 title : title,
45 description: unindent(description)
46 };
47}
48
49/**
50 * Exports
51 */
52module.exports = {
53 parse : parse,
54 path : 'global.define',
55 method : 'insert',
56 markdownFields: [ 'description' ]
57};