Tôi đang sử dụng công cụ mẫu FreeMarker để tạo một số lớp học php từ mô tả trừu tượng về dịch vụ web. Vấn đề của tôi là, khi tôi gọi một macro trong một mẫu FreeMarker, macro chèn văn bản mà không có khoảng trắng bên trái trước cuộc gọi macro.FreeMarker: giữ thông tin nhận dạng khi sử dụng macro
exampleTemplate.ftl:
<?php
class ${class.name} {
<@docAsComment class.doc/>
<#list class.fields as field>
$${field.name};
</#list>
<#-- ... -->
}
?>
<#macro docAsComment doc>
/*
<#if doc.title != "">
* ${doc.title}
</#if>
<#list doc.content as content>
<#if content != ""> * ${content}</#if>
</#list>
*/
</#macro>
này sẽ tạo ra một cái gì đó như thế này:
<?php
class foo {
/*
* foo
* bar foo, bla
*/
$a;
$b;
}
?>
Một giải pháp sẽ được, để nộp khoảng trắng hàng đầu như một cuộc tranh cãi đến vĩ mô, nhưng điều đó làm cho chỉ mẫu không thể đọc được. Có giải pháp nào tốt hơn không?
Cảm ơn câu trả lời! Với "làm cho các mẫu khó đọc", tôi có nghĩa là gần như những gì bạn đã nghĩ, nó làm cho các macro phức tạp hơn và ít tự giải thích. Dường như việc gửi cấp thụt lề là cách hợp lý nhất để giải quyết vấn đề. –
Bạn luôn có thể thêm tiêu đề nhận xét trên macro của mình để giúp làm rõ tiêu đề nhận xét. –
Có một loại trong đoạn mã của bạn, nó phải là: '...' '<#local spc> $ {" "? Left_pad (indent * 4)}#local>' '...' –