Browse Source

removed code duplication in StripComments/TrimComments

pull/14/head
Siegfried Pammer 15 years ago
parent
commit
c253637446
  1. 13
      src/AddIns/BackendBindings/VBNetBinding/Project/Src/FormattingStrategy/VBNetFormattingStrategy.cs
  2. 27
      src/AddIns/BackendBindings/VBNetBinding/Project/Src/LanguageUtils.cs
  3. 16
      src/AddIns/BackendBindings/VBNetBinding/Project/Src/Parser/Parser.cs
  4. 1
      src/AddIns/BackendBindings/VBNetBinding/Project/VBNetBinding.csproj

13
src/AddIns/BackendBindings/VBNetBinding/Project/Src/FormattingStrategy/VBNetFormattingStrategy.cs

@ -481,7 +481,7 @@ namespace ICSharpCode.VBNetBinding @@ -481,7 +481,7 @@ namespace ICSharpCode.VBNetBinding
string text = lineSeg.Text;
if (StripComment(text).Trim(' ', '\t', '\r', '\n').EndsWith("_", StringComparison.OrdinalIgnoreCase))
if (text.TrimComments().Trim(' ', '\t', '\r', '\n').EndsWith("_", StringComparison.OrdinalIgnoreCase))
return true;
else
return false;
@ -515,11 +515,6 @@ namespace ICSharpCode.VBNetBinding @@ -515,11 +515,6 @@ namespace ICSharpCode.VBNetBinding
return empty && match;
}
static string StripComment(string text)
{
return Regex.Replace(text, "'.*$", "", RegexOptions.Singleline).Trim();
}
static bool IsInsideDocumentationComment(ITextEditor editor, IDocumentLine curLine, int cursorOffset)
{
for (int i = curLine.Offset; i < cursorOffset; ++i) {
@ -623,10 +618,10 @@ namespace ICSharpCode.VBNetBinding @@ -623,10 +618,10 @@ namespace ICSharpCode.VBNetBinding
static int GetLastVisualLine(int line, ITextEditor area)
{
string text = StripComment(area.Document.GetLine(line).Text);
string text = area.Document.GetLine(line).Text.TrimComments();
while (text.EndsWith("_", StringComparison.Ordinal)) {
line++;
text = StripComment(area.Document.GetLine(line).Text);
text = area.Document.GetLine(line).Text.TrimComments();
}
return line;
}
@ -754,7 +749,7 @@ namespace ICSharpCode.VBNetBinding @@ -754,7 +749,7 @@ namespace ICSharpCode.VBNetBinding
for (int i = begin; i <= end; i++) {
IDocumentLine curLine = editor.Document.GetLine(i);
string lineText = curLine.Text.Trim(' ', '\t', '\r', '\n');
string noComments = StripComment(lineText).TrimEnd(' ', '\t', '\r', '\n');
string noComments = lineText.TrimComments().TrimEnd(' ', '\t', '\r', '\n');
if (i < selBegin || i > selEnd) {
indentation.PopOrDefault();

27
src/AddIns/BackendBindings/VBNetBinding/Project/Src/LanguageUtils.cs

@ -0,0 +1,27 @@ @@ -0,0 +1,27 @@
// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt)
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
using System;
namespace ICSharpCode.VBNetBinding
{
public static class LanguageUtils
{
public static string TrimComments(this string argument)
{
if (string.IsNullOrEmpty(argument))
return string.Empty;
bool inStr = false;
for (int i = 0; i < argument.Length; i++) {
if (argument[i] == '"')
inStr = !inStr;
if (argument[i] == '\'' && !inStr)
return argument.Substring(0, i).Trim();
}
return argument;
}
}
}

16
src/AddIns/BackendBindings/VBNetBinding/Project/Src/Parser/Parser.cs

@ -56,25 +56,11 @@ namespace ICSharpCode.VBNetBinding @@ -56,25 +56,11 @@ namespace ICSharpCode.VBNetBinding
&& directive.Arg.StartsWith("region", StringComparison.OrdinalIgnoreCase)
&& regionStartDirectives.Any()) {
ICSharpCode.NRefactory.PreprocessingDirective start = regionStartDirectives.Pop();
cu.FoldingRegions.Add(new FoldingRegion(TrimComment(start.Arg).Trim('"'), DomRegion.FromLocation(start.StartPosition, directive.EndPosition)));
cu.FoldingRegions.Add(new FoldingRegion(start.Arg.TrimComments().Trim('"'), DomRegion.FromLocation(start.StartPosition, directive.EndPosition)));
}
}
}
static string TrimComment(string argument)
{
bool inStr = false;
for (int i = 0; i < argument.Length; i++) {
if (argument[i] == '"')
inStr = !inStr;
if (argument[i] == '\'' && !inStr)
return argument.Substring(0, i).Trim();
}
return argument;
}
public ICompilationUnit Parse(IProjectContent projectContent, string fileName, ICSharpCode.SharpDevelop.ITextBuffer fileContent)
{
using (ICSharpCode.NRefactory.IParser p = ICSharpCode.NRefactory.ParserFactory.CreateParser(ICSharpCode.NRefactory.SupportedLanguage.VBNet, fileContent.CreateReader())) {

1
src/AddIns/BackendBindings/VBNetBinding/Project/VBNetBinding.csproj

@ -68,6 +68,7 @@ @@ -68,6 +68,7 @@
</Compile>
<Compile Include="Src\FormattingStrategy\VBIndentationStrategy.cs" />
<Compile Include="Src\FormattingStrategy\VBStatement.cs" />
<Compile Include="Src\LanguageUtils.cs" />
<Compile Include="Src\OptionPanels\ProjectImportsOptions.xaml.cs">
<DependentUpon>ProjectImportsOptions.xaml</DependentUpon>
<SubType>Code</SubType>

Loading…
Cancel
Save