MCPcopy Create free account
hub / github.com/Acode-Foundation/Acode / constructor

Method constructor

src/cm/modelist.ts:181–234  ·  view source on GitHub ↗
(
		name: string,
		caption: string | undefined,
		extensions: string | string[],
		languageExtension: LanguageExtensionProvider | null = null,
		options: AddModeOptions = {},
	)

Source from the content-addressed store, hash-verified

179 languageExtension: LanguageExtensionProvider | null;
180
181 constructor(
182 name: string,
183 caption: string | undefined,
184 extensions: string | string[],
185 languageExtension: LanguageExtensionProvider | null = null,
186 options: AddModeOptions = {},
187 ) {
188 if (Array.isArray(extensions)) {
189 extensions = extensions.join("|");
190 }
191
192 this.name = name;
193 this.mode = name; // CodeMirror uses different mode naming
194 this.extensions = extensions;
195 this.caption = caption || this.name.replace(/_/g, " ");
196 this.aliases = normalizeAliases(options.aliases, this.name);
197 this.filenameMatchers = Array.isArray(options.filenameMatchers)
198 ? options.filenameMatchers.filter((matcher) => matcher instanceof RegExp)
199 : [];
200 this.languageExtension = languageExtension;
201 let re = "";
202
203 if (!extensions) {
204 this.extRe = null;
205 return;
206 }
207
208 const patterns = extensions
209 .split("|")
210 .map((pattern) => pattern.trim())
211 .filter(Boolean);
212 const filenamePatterns = patterns
213 .filter((pattern) => pattern.startsWith("^"))
214 .map((pattern) => `^${escapeRegExp(pattern.slice(1))}$`);
215 const extensionPatterns = patterns
216 .filter((pattern) => !pattern.startsWith("^"))
217 .map((pattern) => escapeRegExp(pattern));
218 const regexParts: string[] = [];
219
220 if (extensionPatterns.length) {
221 regexParts.push(`^.*?\\.(${extensionPatterns.join("|")})$`);
222 }
223
224 regexParts.push(...filenamePatterns);
225
226 if (!regexParts.length) {
227 this.extRe = null;
228 return;
229 }
230
231 re =
232 regexParts.length === 1 ? regexParts[0] : `(?:${regexParts.join("|")})`;
233 this.extRe = new RegExp(re, "i");
234 }
235
236 supportsFile(filename: string): boolean {
237 if (this.extRe?.test(filename)) return true;

Callers

nothing calls this directly

Calls 2

normalizeAliasesFunction · 0.85
escapeRegExpFunction · 0.70

Tested by

no test coverage detected