Browse Source

fix unit tests

pull/470/head
Siegfried Pammer 11 years ago
parent
commit
cfc8e8ae6b
  1. 5
      src/AddIns/BackendBindings/XamlBinding/XamlBinding/MarkupExtensionInfo.cs
  2. 1
      src/AddIns/BackendBindings/XamlBinding/XamlBinding/MarkupExtensionParser.cs
  3. 10
      src/AddIns/BackendBindings/XamlBinding/XamlBinding/Utils.cs

5
src/AddIns/BackendBindings/XamlBinding/XamlBinding/MarkupExtensionInfo.cs

@ -32,6 +32,7 @@ namespace ICSharpCode.XamlBinding @@ -32,6 +32,7 @@ namespace ICSharpCode.XamlBinding
public int StartOffset { get; set; }
public int EndOffset { get; set; }
public bool IsClosed { get; set; }
public MarkupExtensionInfo()
: this(string.Empty, new List<AttributeValue>(), new Dictionary<string, AttributeValue>(StringComparer.OrdinalIgnoreCase))
@ -163,6 +164,10 @@ namespace ICSharpCode.XamlBinding @@ -163,6 +164,10 @@ namespace ICSharpCode.XamlBinding
}
}
public bool IsClosed {
get { return IsString || extensionValue.IsClosed; }
}
public bool IsString {
get { return stringValue != null; }
}

1
src/AddIns/BackendBindings/XamlBinding/XamlBinding/MarkupExtensionParser.cs

@ -45,6 +45,7 @@ namespace ICSharpCode.XamlBinding @@ -45,6 +45,7 @@ namespace ICSharpCode.XamlBinding
break;
case MarkupExtensionTokenKind.CloseBrace:
info.EndOffset = token.EndOffset + offset;
info.IsClosed = true;
break;
case MarkupExtensionTokenKind.TypeName:
info.ExtensionType = token.Value;

10
src/AddIns/BackendBindings/XamlBinding/XamlBinding/Utils.cs

@ -126,12 +126,18 @@ namespace ICSharpCode.XamlBinding @@ -126,12 +126,18 @@ namespace ICSharpCode.XamlBinding
MarkupExtensionInfo tmp = info;
foreach (var item in info.PositionalArguments) {
if (item.StartOffset < offset && offset <= item.EndOffset)
int endOffset = item.EndOffset;
if (!item.IsClosed)
endOffset++;
if (item.StartOffset < offset && offset < endOffset)
tmp = item.IsString ? tmp : GetMarkupExtensionAtPosition(item.ExtensionValue, offset);
}
foreach (var pair in info.NamedArguments) {
if (pair.Value.StartOffset < offset && offset < pair.Value.EndOffset)
int endOffset = pair.Value.EndOffset;
if (!pair.Value.IsClosed)
endOffset++;
if (pair.Value.StartOffset < offset && offset < endOffset)
tmp = pair.Value.IsString ? tmp : GetMarkupExtensionAtPosition(pair.Value.ExtensionValue, offset);
}

Loading…
Cancel
Save