1 | var trim = require('../utils/trim');
|
2 | var unindent = require('../utils/unindent');
|
3 |
|
4 | var ParameterError = require('../errors/parameter_error');
|
5 |
|
6 |
|
7 | var _messages = {
|
8 | common: {
|
9 | element: 'apiDefine',
|
10 | usage : '@apiDefine name',
|
11 | example: '@apiDefine MyValidName'
|
12 | }
|
13 | };
|
14 |
|
15 | function 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 |
|
51 |
|
52 | module.exports = {
|
53 | parse : parse,
|
54 | path : 'global.define',
|
55 | method : 'insert',
|
56 | markdownFields: [ 'description' ]
|
57 | };
|