1 | 'use strict'
|
2 | const assign = require('object-assign')
|
3 | const Matcher = require('./matcher')
|
4 |
|
5 |
|
6 |
|
7 |
|
8 |
|
9 |
|
10 |
|
11 | class Language {
|
12 | constructor (name, data) {
|
13 | this.name = name
|
14 | this.options = data
|
15 | }
|
16 |
|
17 | matches (fname) {
|
18 | var exts = this.options.extensions
|
19 | for (var i in exts) {
|
20 | var ext = exts[i]
|
21 |
|
22 | if (fname.substr(fname.length - ext.length) === ext) {
|
23 | return true
|
24 | }
|
25 | }
|
26 | }
|
27 |
|
28 | rules () {
|
29 | return new Matcher(assign({}, {
|
30 | string: '.*?',
|
31 | docshort: '\\s*%{commentstart}\\s*%{doc:string}%{commentend}%{extra:string}',
|
32 | docstart: '\\s*%{commentstart}\\s*%{doc:string}',
|
33 | docstartex: '\\s*%{commentstartex}\\s*%{doc:string}',
|
34 | docend: '\\s*%{commentend}\\s*%{code:string}',
|
35 | doc: '\\s*%{commentdoc}\\s?%{doc:string}'
|
36 | }, this.options.syntax))
|
37 | }
|
38 |
|
39 | slug () {
|
40 | return this.options && this.options.slug || this.name.toLowerCase()
|
41 | }
|
42 | }
|
43 |
|
44 | module.exports = Language
|