Browse Source

introduce supportedfilenamepattern Attribute in ParserDescriptor to make it easier to implement specific parsers

newNRILSpyDebugger
Siegfried Pammer 12 years ago
parent
commit
cec942586c
  1. 2
      src/AddIns/BackendBindings/CSharpBinding/Project/CSharpBinding.addin
  2. 2
      src/AddIns/BackendBindings/CppBinding/CppBinding/CppBinding.addin
  3. 2
      src/AddIns/BackendBindings/XamlBinding/XamlBinding/XamlBinding.addin
  4. 22
      src/Main/SharpDevelop/Parser/ParserDescriptor.cs
  5. 4
      src/Main/SharpDevelop/Parser/ParserDoozer.cs

2
src/AddIns/BackendBindings/CSharpBinding/Project/CSharpBinding.addin

@ -54,7 +54,7 @@ @@ -54,7 +54,7 @@
<Path name = "/SharpDevelop/Parser">
<Parser id = "C#"
supportedextensions = ".cs"
supportedfilenamepattern = "\.(cs)$"
projectfileextension = ".csproj"
class = "CSharpBinding.Parser.TParser"/>
</Path>

2
src/AddIns/BackendBindings/CppBinding/CppBinding/CppBinding.addin

@ -77,7 +77,7 @@ @@ -77,7 +77,7 @@
<!--
<Path name="/SharpDevelop/Parser">
<Parser id="C++"
supportedextensions=".cpp;.c;.hpp;.h"
supportedfilenamepattern="\.(cpp|c|hpp|h)$"
projectfileextension="vcxproj"
class="ICSharpCode.CppBinding.Parser.CppParser" />
</Path>

2
src/AddIns/BackendBindings/XamlBinding/XamlBinding/XamlBinding.addin

@ -35,7 +35,7 @@ @@ -35,7 +35,7 @@
<Path name = "/SharpDevelop/Parser">
<Parser id = "XAML"
supportedextensions = ".xaml"
supportedfilenamepattern = "\.(xaml)$"
class = "ICSharpCode.XamlBinding.XamlParser"/>
</Path>

22
src/Main/SharpDevelop/Parser/ParserDescriptor.cs

@ -3,8 +3,8 @@ @@ -3,8 +3,8 @@
using System;
using System.IO;
using System.Text.RegularExpressions;
using ICSharpCode.Core;
using ICSharpCode.SharpDevelop.Project;
namespace ICSharpCode.SharpDevelop.Parser
{
@ -23,17 +23,11 @@ namespace ICSharpCode.SharpDevelop.Parser @@ -23,17 +23,11 @@ namespace ICSharpCode.SharpDevelop.Parser
public string Language { get; private set; }
public string[] Supportedextensions { get; private set; }
public Regex SupportedFilenamePattern { get; private set; }
public bool CanParse(FileName fileName)
{
string fileExtension = Path.GetExtension(fileName);
foreach (string ext in Supportedextensions) {
if (string.Equals(fileExtension, ext, StringComparison.OrdinalIgnoreCase)) {
return true;
}
}
return false;
return SupportedFilenamePattern.IsMatch(fileName);
}
public ParserDescriptor(Codon codon)
@ -42,20 +36,20 @@ namespace ICSharpCode.SharpDevelop.Parser @@ -42,20 +36,20 @@ namespace ICSharpCode.SharpDevelop.Parser
throw new ArgumentNullException("codon");
this.codon = codon;
this.Language = codon.Id;
this.Supportedextensions = codon.Properties["supportedextensions"].Split(';');
this.SupportedFilenamePattern = new Regex(codon.Properties["supportedfilenamepattern"], RegexOptions.IgnoreCase);
}
public ParserDescriptor(Type parserType, string language, string[] supportedExtensions)
public ParserDescriptor(Type parserType, string language, Regex supportedFilenamePattern)
{
if (parserType == null)
throw new ArgumentNullException("parserType");
if (language == null)
throw new ArgumentNullException("language");
if (supportedExtensions == null)
throw new ArgumentNullException("supportedExtensions");
if (supportedFilenamePattern == null)
throw new ArgumentNullException("supportedFilenamePattern");
this.parserType = parserType;
this.Language = language;
this.Supportedextensions = supportedExtensions;
this.SupportedFilenamePattern = supportedFilenamePattern;
}
}
}

4
src/Main/SharpDevelop/Parser/ParserDoozer.cs

@ -10,8 +10,8 @@ namespace ICSharpCode.SharpDevelop.Parser @@ -10,8 +10,8 @@ namespace ICSharpCode.SharpDevelop.Parser
/// <summary>
/// Creates ParserDescriptor objects for the parsing service.
/// </summary>
/// <attribute name="supportedextensions">
/// Semicolon-separated list of file extensions for which the parser is used. (e.g. ".boo")
/// <attribute name="supportedfilenamepattern">
/// filename pattern (regex) for which the parser is used. (e.g. "\.(c|cpp|h|hpp)$")
/// </attribute>
/// <attribute name="class">
/// Name of the IParser class.

Loading…
Cancel
Save