回答:
jade 1.0以降、これに対処する簡単な方法があります。残念ながら、公式ドキュメントにはどこにもありません。
次の構文でインライン要素を追加できます。
#[a.someClass A Link!]
したがって、apの複数の行に入らない例は、次のようになります。
p: #[span this is the start of the para] #[a(href="http://example.com") a link] #[span and this is the rest of the paragraph]
ネストされたインライン要素を行うこともできます:
p: This is a #[a(href="#") link with a nested #[span element]]
マークダウンフィルターを使用し、マークダウン(および許可されたHTML)を使用して段落を記述できます。
:markdown
this is the start of the para.
[a link](http://example.com)
and this is the rest of the paragraph.
または、問題なくHTMLを出力できるように見えます。
p
| this is the start of the para.
| <a href="http://example.com">a link</a>
| and this is he rest of the paragraph
私自身はこれに気づかず、jadeコマンドラインツールを使用してテストしました。正常に動作するようです。
編集: それは実際には次のようにJadeで完全に行うことができるようです:
p
| this is the start of the para
a(href='http://example.com;) a link
| and this is the rest of the paragraph
あなたがそれを見ることができないが(パラの末尾に余分なスペースを忘れてはいけない。との間で| and
。そうでなければ、それはこのようになりますpara.a linkand
ではありませんpara a link and
p This is a paragraph #[a(href="#") with a link] in it
。参照してくださいgithub.com/visionmedia/jade/issues/936
、最初の行の終わりにを使用しますが、今後のアプローチについては議論しています。
別の完全に異なるアプローチは、最初にリンクを置き換えるときに突き刺し、次に翡翠でレンダリングするフィルターを作成することです
h1 happy days
:inline
p this can have [a link](http://going-nowhere.com/) in it
<h1>happy days</h1><p>this can have <a href='http://going-nowhere.com/'>a link</a> in it</p>
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());
より一般的な解決策は、ジェイドのミニサブブロックを一意のブロック(おそらくのようなもので識別される${jade goes here}
)にレンダリングするので、...
p some paragraph text where ${a(href="wherever.htm") the link} is embedded
これは、上記とまったく同じ方法で実装できます。
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());
リンクがデータソースからのものである場合は、次を使用できます。
ul
each val in results
p
| blah blah
a(href="#{val.url}") #{val.name}
| more blah
補間を参照
編集:この機能が実装され、問題は解決しました。上記の回答を参照してください。
この機能をJadeに追加するための問題を投稿しました
https://github.com/visionmedia/jade/issues/936
それを実装する時間はありませんでしたが、+ 1を増やすと役立つ場合があります。
これは私が思いつくことができる最高のものです
-var a = function(href,text){ return "<a href='"+href+"'>"+text+"</a>" }
p this is an !{a("http://example.com/","embedded link")} in the paragraph
レンダリング...
<p>this is an <a href='http://example.com/'>embedded link</a> in the paragraph</p>
動作しますが、少しハックのように感じられます-これには構文があるはずです!
(少なくとも)完全にシンプルなオプションがあることがわかります
p Convert a .fit file using <a href="http://connect.garmin.com/"> Garmin Connect's</a> export functionality.