5
// Michael Hutchinson <mhutchinson@novell.com>
7
// Copyright (c) 2010 Novell, Inc.
9
// Permission is hereby granted, free of charge, to any person obtaining a copy
10
// of this software and associated documentation files (the "Software"), to deal
11
// in the Software without restriction, including without limitation the rights
12
// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
13
// copies of the Software, and to permit persons to whom the Software is
14
// furnished to do so, subject to the following conditions:
16
// The above copyright notice and this permission notice shall be included in
17
// all copies or substantial portions of the Software.
19
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
20
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
21
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
22
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
23
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
24
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
28
using MonoDevelop.Projects.Dom.Parser;
30
using System.Collections;
33
namespace MonoDevelop.Projects.Extensions
35
public class ParserNode: TypeExtensionNode
37
[NodeAttribute (Description="Comma separated list of file extensions to which this parser applies. It applies to all if none is specified.")]
38
string[] fileExtensions;
41
// [NodeAttribute (Description="Comma separated list of mime types to which this parser applies. It applies to all if none is specified.")]
42
// string[] mimeTypes;
44
public string[] FileExtensions {
45
get { return this.fileExtensions; }
46
set { this.fileExtensions = value; }
49
// public string[] MimeTypes {
50
// get { return this.mimeTypes; }
51
// set { this.mimeTypes = value; }
54
IParser cachedInstance;
55
public IParser Parser {
57
return cachedInstance ?? (cachedInstance = (IParser)CreateInstance ());
61
public bool Supports (string fileName)
63
if (fileExtensions != null && fileExtensions.Length > 0) {
64
string ext = System.IO.Path.GetExtension (fileName);
65
return fileExtensions.Any (fe => string.Compare (fe, ext, StringComparison.OrdinalIgnoreCase) == 0);
68
//FIXME: DesktopService is not accessible from here
69
// if (mimeTypes != null && mimeTypes.Length > 0) {
70
// string mt = DesktopService.GetMimeTypeForUri (fileName);
71
// foreach (string t in mimeTypes) {
72
// if (DesktopService.GetMimeTypeIsSubtype (mt, t))
78
// No constraints on the file