2013-02-06 40 views
0

是否可以設置一個規則,允許Xpand方法根據輸入輸出指定的文本字符串。例如:Xtend/Xpand查找並替換(規則)

«FOR a:e.attributes» 
Type = «a.eClass.name» 
Value = «a.name.toFirstUpper» 

«ENDFOR» 

上面的代碼可輸出:

Type = StringAttribute 
Value = String1 

Type = IntegerAttribute 
Value = 123 

我怎麼會做出這樣的輸出:

Type = String 
Value = String1 

Type = int 
Value = 123 

我知道這可以用if語句,但我想完成能夠或多或少地自動化。每次我需要在同一個文件中輸出這些細節時,必須指定這樣的規則是很浪費的。有人可以告訴我我可以用什麼樣的代碼來實現這個目標?謝謝。

回答

0

我建議你創建一個可重用的Xtend幫手

toSimpleName(String inp): 
    switch (inp) { 
     case "StringAttribute" : "String" 
     case "IntegerAttribute" : "int" 
     // ...more cases here... 
     default     : inp 
    } 
; 

,然後從XPAND模板調用它是這樣的:

«FOR a:e.attributes» 
Type = «a.eClass.name.toSimpleName()» 
Value = «a.name.toFirstUpper» 

«ENDFOR» 
+0

非常感謝你。沒有我想象的那麼困難。雖然我不得不改變代碼一點使它在的Xtend有效: '高清toJavaType(字符串INP){ \t \t開關(INP){ \t \t \t案 「NumberAttribute」: 「字符串」 \t \t \t案 「StringAttribute」: 「詮釋」 \t \t \t默認: 「」 \t \t} \t}' –