はてなでLuaプログラミング

こちらのアイデアがおもしろかったので、真似してみた。

こんな感じでエントリにコードを書いて


>|lua|
response.content_type = 'text/html'

response.puts 'hello, world!'

<

エントリのurlをパラメータとしてrun_luaに渡すとLuaのコードを実行する。
http://storehouse.quickvps.net/run_lua/?src=http://d.hatena.ne.jp/winebarrel/20080108/p1

例)みさくら誤変換

実行

--簡易みさくら誤変換機出張所(http://scrap.web.infoseek.co.jp/misakura.html)の
--コードを利用させてもらいました

function conv(url)
  local c ;

  open(url, function(f)
    c = f.read()
    c = nkf('-w -m0', c)
    c = string.gsub(c, 'src="/', 'src="'..url)
    c = string.gsub(c, 'href="/', 'href="'..url)
    c = misakura(c)
  end)

  return c
end

function misakura(c)
  c  = string.gsub(c, '(気持|きも)ちいい', 'ぎも゛ぢい゛い゛ぃ');
  c  = string.gsub(c, '(大好|だいす)き', 'らいしゅきいぃっ');
  c  = string.gsub(c, '(ミルク|みるく|牛乳)', 'ちんぽミルク');
  c  = string.gsub(c, 'お(願|ねが)い', 'お願いぃぃぃっっっ゙');
  c  = string.gsub(c, 'ぁ', 'ぁぁ゛ぁ゛');
  c  = string.gsub(c, 'あ', 'ぁあああ あぉ');
  c  = string.gsub(c, 'お', 'お゙ぉおォおん');
  c  = string.gsub(c, 'ごきげんよう', 'ごきげんよぉおお!んおっ!んおおーーっ! ');
  c  = string.gsub(c, 'ごきげんよう', 'ごきげんみゃぁあ゛あ゛ぁ゛ぁぁあ!!');
  c  = string.gsub(c, 'こん(にち|ばん)[はわ]', 'こん%1みゃぁあ゛あ゛ぁ゛ぁぁあ!!');
  c  = string.gsub(c, 'えて', 'えてへぇええぇ゙');
  c  = string.gsub(c, 'する', 'するの');
  c  = string.gsub(c, 'します', 'するの');
  c  = string.gsub(c, '精液', 'せーしっせーし でりゅぅ でちゃいましゅ みるく ちんぽみるく ふたなりみるく');
  c  = string.gsub(c, '射精', 'でちゃうっ れちゃうよぉおお゙');
  c  = string.gsub(c, '(馬鹿|バカ|ばか)', 'バカ!バカ!まんこ!!');
  c  = string.gsub(c, 'いい', 'いぃぃっよぉおお゙');
  c  = string.gsub(c, '[好す]き', 'ちゅき');
  c  = string.gsub(c, 'して', 'してぇぇぇぇ゛');
  c  = string.gsub(c, '行く', 'んはっ イっぐぅぅぅふうぅ');
  c  = string.gsub(c, 'いく', 'イっくぅぅふぅん');
  c  = string.gsub(c, 'イク', 'イッちゃううぅん');
  c  = string.gsub(c, '駄目', 'らめにゃのぉぉぉ゛');
  c  = string.gsub(c, 'ダメ', 'んぉほぉぉォォ らめぇ');
  c  = string.gsub(c, 'だめ', 'らめぇぇ');
  c  = string.gsub(c, 'ちゃん', 'ちゃぁん');
  c  = string.gsub(c, '(おい|美味)しい', '$1ひぃ…れしゅぅ');
  c  = string.gsub(c, '(た|る|ない)([。、  ・…!?!?」\n\r\x00])', '%1の%2');
  c  = string.gsub(c, 'さい([。、  ・…!?!?」\n\r\x00])', 'さいなの%1');
  c  = string.gsub(c, 'よ([。、  ・…!?!?」\n\r\x00])', 'よお゛お゛お゛ぉ%1');
  c  = string.gsub(c, 'もう', 'んもぉ゛お゛お゛ぉぉ');
  c  = string.gsub(c, '(い|入)れて', 'いれてえぇぇぇえ');
  c  = string.gsub(c, '(気持|きも)ちいい', 'きも゛ぢい゛〜っ');
  c  = string.gsub(c, '(がんば|頑張)る', '尻穴ちんぽしごき%1るぅ!!!');
  c  = string.gsub(c, '出る', 'でちゃうっ れちゃうよぉおお゙');
  c  = string.gsub(c, 'でる', 'でっ…でるぅでるうぅうぅ');
  c  = string.gsub(c, 'です', 'れしゅぅぅぅ');
  c  = string.gsub(c, 'ます', 'ましゅぅぅぅ');
  c  = string.gsub(c, 'はい', 'はひぃ');
  c  = string.gsub(c, 'スゴイ', 'スゴぉッ!!');
  c  = string.gsub(c, '(すご|凄)い', 'しゅごいのょぉぉぅ');
  c  = string.gsub(c, 'だ', 'ら');
  c  = string.gsub(c, 'さ', 'しゃ');
  c  = string.gsub(c, 'な', 'にゃ');
  c  = string.gsub(c, 'つ', 'ちゅ');
  c  = string.gsub(c, 'ちゃ', 'ひゃ');
  c  = string.gsub(c, 'じゃ', 'に゛ゃ');
  c  = string.gsub(c, 'ほ', 'ほお゛お゛っ');
  c  = string.gsub(c, 'で', 'れ');
  c  = string.gsub(c, 'す', 'しゅ');
  c  = string.gsub(c, 'ざ', 'じゃ');
  c  = string.gsub(c, 'い', 'いぃ');
  c  = string.gsub(c, 'の', 'のぉおお');
  return c
end

response.content_type = 'text/html; charset=UTF-8'
c = conv('http://q.hatena.ne.jp/')
response.puts(c)

所感

hpricotはやっぱり重い気がするなぁ。。。