Roslyn VisitArgumentList和VisitArgument如何获得逗号琐事?

时间:2018-01-29 07:39:14

标签: vb.net dictionary roslyn

如果我使用VisitArgementList(Node),则Node是逗号分隔列表(x,y,z),而VisitArgument(节点)节点是逗号,x或y或z之间的东西。但是我对逗号附带的琐事(换行符)很感兴趣。有没有办法访问逗号,然后重新创建列表而不会丢失换行符。

$(document).ready(function(){
		$('input[type=text]').on('keyup', function(){
			var empty = false, val = '';
			val = $(this).val();
			if (val.length) {
				empty = false;
			} else {
				empty = true;
			}
			if (empty) {
				$('#submit').attr('disabled', 'disabled');
			} else {
				$('#submit').removeAttr('disabled');
			}
		});
	});

以下代码是我如何创建新行并且缺少所有换行符

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="container-fluid">
	<form>
		<div class="row">
		    <div class="col-xs-12 col-sm-12 col-md-12 col-lg-12 button-holder" style="margin-top:30px;">
		    	<input type="text" name="" required="*" id="register">
		      <div class="ajax-button">
		        <div class="fa fa-check done fabutton"></div>
		        <div class="fa fa-close failed fabutton"></div>
		        <input id="submit" class="submit" type="submit" value="submit" disabled="disabled" />
		      </div>
		    </div>
	  	</div>
	</form>
</div>
<script>
</script>

1 个答案:

答案 0 :(得分:0)

您可以使用GetSeparators从节点获取分隔符

Dim NodeList As New List(Of ArgumentSyntax)
' Fill the node list and deal with Trivia
Dim Separators As IEnumerable(Of SyntaxToken) = node.Arguments.GetSeparators

然后是所有SyntaxFactory.SeparatedList方法和其他列表函数(SyntaxFactory.ArgumentList)的另一个版本。它们采用节点列表(带有琐事)和分隔符(带有琐事),甚至是包含括号或括号的版本。使用这些版本,您可以将琐事添加到每个元素。需要注意的一点是,C#允许额外的分隔符,(例如, 8个节点,8个分隔符)其中VB需要少一个分隔符,然后是节点(8个节点,7个分隔符)。在循环中填充NodeList比使用选择函数更容易,这样您就可以管理琐事并处理VB中缺少的分隔符,而不是在节点之后允许所有Trivia,有些必须在分隔符后移动到。以下是部分示例

Return SyntaxFactory.ArgumentList(
    SyntaxFactory.Token(SyntaxKind.OpenParenToken).WithConvertedLeadingTriviaFrom(node.OpenParenToken),
    SyntaxFactory.SeparatedList(NodeList, Separators),
    CloseParenToken.WithConvertedTrailingTriviaFrom(node.CloseParenToken)
    )