-
Notifications
You must be signed in to change notification settings - Fork 453
/
index.coffee
117 lines (111 loc) · 1.93 KB
/
index.coffee
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
###
Language Support and default options.
###
"use strict"
# Lazy loaded dependencies
_ = require('lodash')
extend = null
#
module.exports = class Languages
# Supported unique configuration keys
# Used for detecting nested configurations in .jsbeautifyrc
languageNames: [
"apex"
"arduino"
"bash"
"blade"
"c-sharp"
"c"
"clojure"
"coffeescript"
"coldfusion"
"cpp"
"crystal"
"css"
"csv"
"d"
"ejs"
"elm"
"erb"
"erlang"
"gherkin"
"glsl"
"gn"
"go"
"gohtml"
"fortran"
"handlebars"
"haskell"
"html"
"jade"
"java"
"javascript"
"json"
"jsx"
"latex"
"less"
"lua"
"markdown"
'marko'
"mustache"
"nginx"
"nunjucks"
"objective-c"
"ocaml"
"pawn"
"perl"
"php"
"puppet"
"python"
"r"
"riotjs"
"ruby"
"rust"
"sass"
"scss"
"spacebars"
"sql"
"svg"
"swig"
"tss"
"tsx"
"twig"
"typescript"
"ux_markup"
"vala"
"vue"
"vhdl"
"visualforce"
"xml"
"xtemplate"
"yaml"
"terraform"
"verilog"
]
###
Languages
###
languages: null
###
Namespaces
###
namespaces: null
###
Constructor
###
constructor: ->
@languages = _.map(@languageNames, (name) ->
require("./#{name}")
)
@namespaces = _.map(@languages, (language) -> language.namespace)
###
Get language for grammar and extension
###
getLanguages: ({name, namespace, grammar, extension}) ->
# console.log('getLanguages', name, namespace, grammar, extension, @languages)
_.union(
_.filter(@languages, (language) -> _.isEqual(language.name, name))
_.filter(@languages, (language) -> _.isEqual(language.namespace, namespace))
_.filter(@languages, (language) -> _.includes(language.grammars, grammar))
_.filter(@languages, (language) -> _.includes(language.extensions, extension))
)