Bye Bye Moore

PoCソルジャーな零細事業主が作業メモを残すブログ

slim

slimで存在しても居ない行に"syntax error"とかが出た場合、if-elseの構文をif-unlessに直すとうまくいく事がある

今回はどうも泥臭い話です。 もしかすると、将来勝手に解決されてるかもしれません。erbからslimにしたviewのとある機能について検証していたところ、こんなエラーがでました。 ERROR: compiling _app_views_hoges_search_html_slim__ RAISED /home/shuzo/ra…

テンプレートエンジンのはなし:slimの次はjade?

最近仕事でnode.jsを使う機会が増えてきました。*1 普段はslimを使ってるワタシですが、これはruby文化と親和性が高いものでnodejs向きじゃないそうです。 javascriptフレンドリーなテンプレートエンジンは jade skim emblem.js てのがあるそうです。 現状で…

sinatraでhelperを使う

sinatraでもhelperを使う事ができます。 実際のところ link_toを作ってみます。 使うもの app.rb いつものsinatraアプリに、helpersメソッドを追加。 ブロックの中身にメソッドを記述します。 require 'sinatra' require 'slim' helpers do def link_to(url,…

sinatraでmarkdownを使う(slim経由)

楽にネタアプリを作りたい場合、Railsではなくsinatraを使ったほうがいい場合も多々あります。 加えて、マークダウンみたいなのが使えれば更に試作が早くなりますよね。 今回はそんな話です。 実際のところ 画面遷移なし、コメントとGoogle.comへのリンクだ…

SlimのEmbedded_engines機能で、入力で楽をする

Slimはtiltというgemと連動しているため、 coffee scriptやsass、markdownを書くときに便利な機能を使えます。 実例 例えば、 coffee: square = (x) -> x * x markdown: #Header Hello from #{"Markdown!"} Second Line! なんてslimスクリプトだと <script type="text/javascript">(function…

SlimでHTMLエスケープをしない場合「==」

yieldなど、HTMLエスケープをしたくない場合は「==」で出力すればOKです - def hoge; '&!hoge'; end = hoge br == hoge これが、 &amp;!hoge<br />&!hoge と出力されます。 参考もと slim-template/slim · GitHub

Slimでタグを切り替えたい場合はDynamic Tagが便利

Slimでタグを切り替えたい場合はDynamic Tagが便利です。 これを使うと… たとえば特定のユーザにだけ表示したいinputタグ…なんてケースを実装するのが楽です。 実際のところ ruby: def nyu @flag ? {tag: 'p'} : {tag: 'b'} end - @flag = true *nyu NYU wit…

SlimのSplat attributes「*」で要素代入を楽にやる

Slimでタグにクラスをくっつける場合、配列やハッシュで渡す事ができます。 a.menu class="highlight" href="http://slim-lang.com/" Slim-lang.comとやれば、 <a class="menu highlight" href="http://slim-lang.com/">Slim-lang.com</a> と、よろしくコンバートしてくれます。ここで、Splat attributesという機能をつか…

slimで最初の数え上げ要素だけ特別な処理を加える

次のようなslim形式のテキストデータがあったとします。 $ cat hoge.txt ul li.first: a[href="/a"] A link - 10.times do |i| li: a[href="/#{i}"] #{i} link li.last: a[href="/B"] B linkこれをSlimのコンバータにかけると、 のように最初の要素だけA、数…

slimrbコマンドで軽くSlimを扱う

slimrbは公式が提供しているslimのパーサコマンドです。 ただ、別途redcarpetというマークダウンパーサのgemが必要なので 先に導入します。 $ gem install redcarpet つかいかた $ echo 'markdown: 123 456 * a * b ' | slimrb なんてことをやれば、 <p>123 456</p> <ul></ul>…

printf記法を使って変数の多い文字列を楽に生成する

今回はC言語使いにもお馴染み、printf記法の話です。 やや記法が独特なところがありますが、使いこなせば複雑な文字列も割と気軽に生成できます。以下の例では、出力したいものを id = 3 measure = 20 とします。 printfだと代入できない printfはputsやprin…

erbからslimに移行する際はblockのチェックを忘れずに

erbからslimに移行する際の注意点です。erb2slimを使えば、簡単に変換できます。 が、開発者の意図までは酌んでくれません。 例えば、blockを使ったスクリプトを書いていると意図せずクラッシュする可能性があります。 具体例 <%= form_tag :hoge, :id => :p…

slimで複数のクラスを設定する

微妙に引っかかったのでメモ想定する出力 方法 後ろにもう一個classをつける a.menu class="highlight" 配列を渡す a class=["menu","highlight"] ハッシュとして渡す ハッシュを渡す場合は*をつけます これはクラスに限らないので色々な属性も設定可能です…