Hatena::Groupsubtech

#生存戦略 、それは

-> 07 { 06 / 05 }

migemo 正規表現を JSONP で呼び出す

19:21 | はてなブックマーク - migemo 正規表現を JSONP で呼び出す - #生存戦略 、それは

御大がぼやいてた。グリモンとか HTMLJS検索で便利かなー?勝手に使ってOKですが鯖が落ちてたり突然アクセスできなくなったりするかもしれません。

ACソースmigemo 使うときだけ euc に切り替えてるんだけどもっと良い方法あるかな。あ、あとこのコードだと nagaYama とか書けないじゃん、ということに気づいた…。

追記

つーか callback があるときは jsonp で、他はjson ででいいじゃん。なんだこの設計。と時間がたつとすぐ粗が…。

$KCODE = 'e'
require 'migemo'
$KCODE = 'u'
require 'nkf'

class MigemoController < ApplicationController
  DICT = MigemoStaticDict.new('/usr/share/migemo/migemo-dict')
  def index
    render :text => migemize
  end

  def json
    render :text => migemize.to_json
  end

  JSONP_REGEXP = /^[a-zA-Z0-9\.\_\[\]]+$/
  def jsonp
    if params[:callback].to_s.match JSONP_REGEXP
      render :text => params[:callback] + '(' + migemize.to_json + ');'
    else
      render :text => 'invalid callback param'
    end
  end

  private
  def migemize
    dict_cache = MigemoDictCache.new(RAILS_ROOT + '/tmp/migemo.cache')
    migemo = Migemo.new(DICT, NKF::nkf('-m0 -e', params[:word] || ''))
    migemo.dict_cache = dict_cache if dict_cache
    $KCODE = 'e'
    res = migemo.regex
    $KCODE = 'u'
    NKF::nkf('-m0 -Ew', res)
  end
end

swdyhswdyh2007/06/06 23:12色に意味はないです。区別がつかなくてもたぶんそんなに困らない気がするし、今になって変えるとその方が違和感ありそうだから、そのままかなあ。あ、migemoサーバいいですね。

secondlifesecondlife2007/06/06 23:39なるほど。使い慣れた人には違和感出ますよね。

brazilbrazil2007/06/07 08:45僕も同じこと思ってた。夢で。君と僕とは夢でアッチッチなのかもしれん。

secondlifesecondlife2007/06/07 09:32夢でアッチッチあえたら。いやだよ!!!

トラックバック - http://subtech.g.hatena.ne.jp/secondlife/20070605