UNPKG

991 BJavaScriptView Raw
1'use strict'
2const assign = require('object-assign')
3const Matcher = require('./matcher')
4
5/**
6 * A language.
7 *
8 * lang = new Language({ extensions: .. })
9 */
10
11class 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
44module.exports = Language