1
// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt)
2
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
6
using ICSharpCode.Core;
7
using ICSharpCode.SharpDevelop.Dom;
8
using ICSharpCode.SharpDevelop.Project;
10
namespace ICSharpCode.SharpDevelop
12
public sealed class ParserDescriptor
17
public IParser CreateParser()
20
return (IParser)codon.AddIn.CreateObject(codon.Properties["class"]);
22
return (IParser)Activator.CreateInstance(parserType);
25
public string Language { get; private set; }
27
public string[] Supportedextensions { get; private set; }
29
public bool CanParse(string fileName)
31
string fileExtension = Path.GetExtension(fileName);
32
foreach (string ext in Supportedextensions) {
33
if (string.Equals(fileExtension, ext, StringComparison.OrdinalIgnoreCase)) {
40
public ParserDescriptor(Codon codon)
43
throw new ArgumentNullException("codon");
45
this.Language = codon.Id;
46
this.Supportedextensions = codon.Properties["supportedextensions"].Split(';');
49
public ParserDescriptor(Type parserType, string language, string[] supportedExtensions)
51
if (parserType == null)
52
throw new ArgumentNullException("parserType");
54
throw new ArgumentNullException("language");
55
if (supportedExtensions == null)
56
throw new ArgumentNullException("supportedExtensions");
57
this.parserType = parserType;
58
this.Language = language;
59
this.Supportedextensions = supportedExtensions;