Một cách tiếp cận hoàn toàn khác, sẽ là tạo một bộ lọc, bộ lọc đầu tiên sẽ thay thế các liên kết, sau đó hiển thị bằng ngọc thứ hai
h1 happy days
:inline
p this can have [a link](http://going-nowhere.com/) in it
Kết xuất:
<h1>happy days</h1><p>this can have <a href='http://going-nowhere.com/'>a link</a> in it</p>
Ví dụ hoạt động đầy đủ: index.js (chạy với nodejs)
var f, jade;
jade = require('jade');
jade.filters.inline = function(txt) {
// simple regex to match links, might be better as parser, but seems overkill
txt = txt.replace(/\[(.+?)\]\((.+?)\)/, "<a href='$2'>$1</a>");
return jade.compile(txt)();
};
jadestring = ""+ // p.s. I hate javascript's non-handling of multiline strings
"h1 happy days\n"+
":inline\n"+
" p this can have [a link](http://going-nowhere.com/) in it"
f = jade.compile(jadestring);
console.log(f());
Một giải pháp tổng quát hơn sẽ làm cho các khối ngọc nhỏ nhỏ trong một khối duy nhất (có thể được xác định bởi một cái gì đó giống như ${jade goes here}
), vì vậy ...
p some paragraph text where ${a(href="wherever.htm") the link} is embedded
Điều này có thể được thực hiện theo cách chính xác như trên.
Ví dụ làm việc của giải pháp chung:
var f, jade;
jade = require('jade');
jade.filters.inline = function(txt) {
txt = txt.replace(/\${(.+?)}/, function(a,b){
return jade.compile(b)();
});
return jade.compile(txt)();
};
jadestring = ""+ // p.s. I hate javascript's non-handling of multiline strings
"h1 happy days\n"+
":inline\n"+
" p this can have ${a(href='http://going-nowhere.com/') a link} in it"
f = jade.compile(jadestring);
console.log(f());