本文整理汇总了C#中AttributeNode类的典型用法代码示例。如果您正苦于以下问题:C# AttributeNode类的具体用法?C# AttributeNode怎么用?C# AttributeNode使用的例子?那么, 这里精选的类代码示例或许可以为您提供帮助。
AttributeNode类属于命名空间,在下文中一共展示了AttributeNode类的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: CheckForProblems
private ProblemCollection CheckForProblems(AttributeNode attribute)
{
if (SemanticRulesUtilities.HasAttribute<ServiceContractAttribute>(attribute))
{
// reset the hasUnmatchedMessageHandler flag for each new type
hasUnmatchedMessageHandler = false;
return base.Problems;
}
string action = SemanticRulesUtilities.GetAttributeValue<String>(attribute, "Action");
if (SemanticRulesUtilities.HasAttribute<OperationContractAttribute>(attribute) &&
!string.IsNullOrEmpty(action) &&
action.Equals("*", StringComparison.OrdinalIgnoreCase))
{
// check if we already inspected another operation with unmatched message handler
if (hasUnmatchedMessageHandler)
{
Resolution resolution = base.GetResolution();
Problem problem = new Problem(resolution, attribute.SourceContext);
base.Problems.Add(problem);
return base.Problems;
}
hasUnmatchedMessageHandler = true;
}
return base.Problems;
}
示例2: GetClosestMatch
public virtual AttributeNode GetClosestMatch(AttributeNode/*!*/ nd1, AttributeList/*!*/ list1, AttributeList list2, int list1pos, ref int list2start,
TrivialHashtable/*!*/ matchedNodes, out Differences closestDifferences, out int list2pos) {
closestDifferences = null; list2pos = -1;
if (list2 == null) return null;
if (nd1 == null || list1 == null || matchedNodes == null || list1pos < 0 || list1pos >= list1.Count || list2start < 0 || list2start >= list2.Count) {
Debug.Assert(false); return null;
}
AttributeNode closest = null;
Differences winnerSoFar = null;
for (int j = list2start, m = list2.Count; j < m; j++){
AttributeNode nd2 = list2[j];
if (list2start == j) list2start++;
if (nd2 == null) continue;
if (matchedNodes[nd2.UniqueKey] != null) continue;
Differences diff = this.GetDifferences(nd1, nd2);
if (diff == null){Debug.Assert(false); continue;}
if (diff.Similarity <= 0.5){
//Not a good enough match
if (list2start == j+1) list2start--; //The next call to GetClosestMatch will start looking at list2start, so this node will be considered then
continue; //ignore it for the rest of this call
}
if (winnerSoFar != null && winnerSoFar.Similarity >= diff.Similarity) continue;
winnerSoFar = closestDifferences = diff;
closest = nd2;
list2pos = j;
if (diff.NumberOfDifferences == 0) return closest; //Perfect match, no need to look for other matches
}
if (closest != null){
//^ assert winnerSoFar != null;
//closest is closer to nd1 than any other node in list2, but this is no good if some other node in list1 has a better claim on closest
for (int i = list1pos+1, n = list1.Count; i < n; i++){
AttributeNode nd1alt = list1[i];
if (nd1alt == null) continue;
if (matchedNodes[nd1alt.UniqueKey] != null) continue;
Differences diff = this.GetDifferences(nd1alt, closest);
if (diff == null){Debug.Assert(false); continue;}
if (diff.Similarity <= winnerSoFar.Similarity) continue;
//nd1alt has a better claim on closest. See if it wants closest.
Differences diff2;
int j, k = list2start;
AttributeNode nd2alt = this.GetClosestMatch(nd1alt, list1, list2, i, ref k, matchedNodes, out diff2, out j);
if (nd2alt != closest){
Debug.Assert(nd2alt != null && diff2 != null && diff2.Similarity >= diff.Similarity);
continue; //nd1alt prefers nd2alt to closest, so closest is still available
}
//nd1alt wants closest, take it out of the running
matchedNodes[closest.UniqueKey] = nd1alt;
//Now that closest is out of the running, try again
k = list2start;
AttributeNode newClosest = this.GetClosestMatch(nd1, list1, list2, i, ref k, matchedNodes, out winnerSoFar, out list2pos);
//put closest back in the running so that the next call to this routine will pick it up
matchedNodes[closest.UniqueKey] = closest;
closest = newClosest;
break;
}
}
closestDifferences = winnerSoFar;
return closest;
}
示例3: IsFragment
public static bool IsFragment(AttributeNode attribute)
{
ArgumentUtility.CheckNotNull ("attribute", attribute);
string fragmentFullName = typeof (FragmentAttribute).FullName;
bool isFragment = attribute.Type.FullName == fragmentFullName;
bool isFragmentChild = attribute.Type.BaseType.FullName == fragmentFullName;
return isFragment || isFragmentChild;
}
示例4: TryCreateSmartTag
public IHtmlSmartTag TryCreateSmartTag(ITextView textView, ITextBuffer textBuffer, ElementNode element, AttributeNode attribute, int caretPosition, HtmlPositionType positionType)
{
if (element.InnerRange == null || element.GetText(element.InnerRange).Trim().Length == 0)
return null;
string displayText = element.Children.Count == 0 ? "Remove HTML tag" : "Remove and keep children";
return new HtmlRemoveParentSmartTag(textView, textBuffer, element, displayText);
}
示例5: TryCreateSmartTag
public IHtmlSmartTag TryCreateSmartTag(ITextView textView, ITextBuffer textBuffer, ElementNode element, AttributeNode attribute, int caretPosition, HtmlPositionType positionType)
{
if (element.IsStyleBlock() || element.IsJavaScriptBlock())
{
return new HtmlMinifySmartTag(textView, textBuffer, element);
}
return null;
}
示例6: TryCreateSmartTag
public IHtmlSmartTag TryCreateSmartTag(ITextView textView, ITextBuffer textBuffer, ElementNode element, AttributeNode attribute, int caretPosition, HtmlPositionType positionType)
{
if (element.Children.Count > 0)
{
return new HtmlRemoveParentSmartTag(textView, textBuffer, element);
}
return null;
}
示例7: TryCreateSmartTag
public IHtmlSmartTag TryCreateSmartTag(ITextView textView, ITextBuffer textBuffer, ElementNode element, AttributeNode attribute, int caretPosition, HtmlPositionType positionType)
{
if (IsEnabled(element))
{
return new OptimizeImageSmartTag(textView, textBuffer, element);
}
return null;
}
示例8: TryCreateSmartTag
public IHtmlSmartTag TryCreateSmartTag(ITextView textView, ITextBuffer textBuffer, ElementNode element, AttributeNode attribute, int caretPosition, HtmlPositionType positionType)
{
if ((element.IsStyleBlock() || element.IsJavaScriptBlock()) && element.InnerRange.Length > 5)
{
return new ExtractToFileSmartTag(textView, textBuffer, element);
}
return null;
}
示例9: TryCreateSmartTag
public IHtmlSmartTag TryCreateSmartTag(ITextView textView, ITextBuffer textBuffer, ElementNode element, AttributeNode attribute, int caretPosition, HtmlPositionType positionType)
{
if (element.GetAttribute("ng-controller") != null)
{
return new HtmlAngularControllerSmartTag(textView, textBuffer, element);
}
return null;
}
示例10: WhileLoopStatementNode
public WhileLoopStatementNode(ExpressionNode conditionExpression, StatementNodeBase body, AttributeNode[] attributes)
: base(body, attributes)
{
if (conditionExpression == null)
throw new ArgumentNullException("conditionExpression", "The ConditionExpression is null!");
ConditionExpression = conditionExpression;
AddChildren(ConditionExpression);
}
示例11: TryCreateSmartTag
public IHtmlSmartTag TryCreateSmartTag(ITextView textView, ITextBuffer textBuffer, ElementNode element, AttributeNode attribute, int caretPosition, HtmlPositionType positionType)
{
if (element.GetAttribute("class") == null)
{
return new $safeitemname$SmartTag(textView, textBuffer, element);
}
return null;
}
示例12: While
public WhileLoopStatementNode While(ExpressionNode condition, StatementNodeBase body, AttributeNode[] attributes)
{
if (condition == null)
ThrowHelper.ThrowArgumentNullException(() => condition);
if (attributes == null)
ThrowHelper.ThrowArgumentNullException(() => attributes);
return new WhileLoopStatementNode(condition, body, attributes);
}
示例13: GetAttributeValue
public static Literal GetAttributeValue( AttributeNode attr, int index ) {
Debug.Assert( attr != null && index >= 0 && index < attr.Expressions.Count );
if (attr == null) return null;
for (int i = 0, n = attr.Expressions.Count, c = 0; i < n; i++) {
Literal lit = attr.Expressions[i] as Literal;
if (lit != null) {
if (c == index) return lit;
c++;
}
}
return null;
}
示例14: NormalizeUrl
public static Uri NormalizeUrl(AttributeNode attribute)
{
string value = attribute.Value;
if (value.StartsWith("//", StringComparison.Ordinal))
value = "http:" + value;
Uri url;
Uri.TryCreate(value, UriKind.Absolute, out url);
return url;
}
示例15: GetNamedAttributeValue
public static Literal GetNamedAttributeValue( AttributeNode attr, Identifier name ) {
if( attr == null ) return null;
ExpressionList exprs = attr.Expressions;
if( exprs == null ) return null;
for( int i = 0, n = exprs.Count; i < n; i++ ) {
NamedArgument na = exprs[i] as NamedArgument;
if( na == null ) continue;
if( na.Name.UniqueIdKey == name.UniqueIdKey ) {
return na.Value as Literal;
}
}
return null;
}