eRubyのembedded patternを変更する

RubyからCのヘッダ定義を読み込みたい - きみのハートを8ビットキャスト

erubyの<% %>ってhtmlに埋め込むとhtmlタグにまぎれて 気にならないけどC言語とかに埋め込むと微妙に見えますねー、という感想でした。 Cとかの代替案だと/% %/とかが良いのかなー

erubisならばeRubyのembedded patternを「<% %>」から変更できる。

$ cat hoge.rc
/* -*- mode: c -*- */
#include <stdio.h>
#include "/usr/include/linux/soundcard.h"

/%
  ary = [
    :SOUND_PCM_READ_RATE ,
    :SOUND_PCM_READ_CHANNELS,
    :SOUND_PCM_READ_BITS,
    :SNDCTL_DSP_GETBLKSIZE,
  ]
%/

int main(void)
{
  printf("module SoundCard\n  Param = {\n");
  /% ary.each do |i|  %/
  printf("    :/%= i.to_s %/ => 0x%x,\n", /%=i%/);
  /% end %/
  printf("  }\nend\n");
  return 0;
}
$ erubis -p '/% %/' hoge.rc | tee  hoge.c; gcc -o hoge hoge.c
/* -*- mode: c -*- */
#include <stdio.h>
#include "/usr/include/linux/soundcard.h"


int main(void)
{
  printf("module SoundCard\n  Param = {\n");
  printf("    :SOUND_PCM_READ_RATE => 0x%x,\n", SOUND_PCM_READ_RATE);
  printf("    :SOUND_PCM_READ_CHANNELS => 0x%x,\n", SOUND_PCM_READ_CHANNELS);
  printf("    :SOUND_PCM_READ_BITS => 0x%x,\n", SOUND_PCM_READ_BITS);
  printf("    :SNDCTL_DSP_GETBLKSIZE => 0x%x,\n", SNDCTL_DSP_GETBLKSIZE);
  printf("  }\nend\n");
  return 0;
}
$ ./hoge
module SoundCard
  Param = {
    :SOUND_PCM_READ_RATE => 0x80045002,
    :SOUND_PCM_READ_CHANNELS => 0x80045006,
    :SOUND_PCM_READ_BITS => 0x80045005,
    :SNDCTL_DSP_GETBLKSIZE => 0xc0045004,
  }
end