Webrubyで正規表現を使うには #mruby
webrubyで正規表現が使えた!
あ、webrubyの元になってるmrubyが正規表現使えないのかぁ http://t.co/S5vfrCNpEe
— kjunichi (@kjunichi) 2014, 1月 30
と呟いたところ、
@kjunichi 正規表現はコアに入ってません。mrbgemを入れてください。mruby-onig-regexp(鬼車), mruby-pcre-regexp(PCRE), mruby-hs-regexp(henry spencer)の各gemがあります。
— Yukihiro Matsumoto (@yukihiro_matz) 2014, 1月 31
と、なんとRubyの作者のまつもとゆきひろさんご自身より返信が!
ということで、mrubyを手元でコンパイルでして、正規表現を組み込むことは思いの外簡単に出来、 それでは、ということで、webrubyでやってみたら、Rakeファイルに実は説明が書いてあり、 こちらも簡単にできました。
Rakefileの編集
最後の方に
conf.gem :github => 'masamitsu-murase/mruby-hs-regexp'
を追加。たったこれだけ、
rake clean rake
Rakefile全体
require 'webruby' # This file sets up the build environment for a webruby project. Webruby::App.setup do |conf| # Entrypoint file name conf.entrypoint = 'app/app.rb' # By default, the build output directory is "build/" conf.build_dir = 'build' # Use 'release' for O2 mode build, and everything else for O0 mode conf.compile_mode = 'debug' # Loading mode, see lib/webruby/utility.rb for details conf.loading_mode = 2 # By default the final output file name is "webruby.js" conf.output_name = 'webruby.js' # The syntax for adding gems here are kept the same as mruby. # Below are a few examples: # mruby-eval gem, all parsing code will be packed into the final JS! # conf.gem :core => "mruby-eval" # JavaScript calling interface conf.gem :git => 'git://github.com/xxuejie/mruby-js.git', :branch => 'master' # OpenGL ES 2.0 binding # conf.gem :git => 'git://github.com/xxuejie/mruby-gles.git', :branch => 'master' # Normally we wouldn't use this example gem, I just put it here to show how to # add a gem on the local file system, you can either use absolute path or relative # path from mruby root, which is modules/webruby. # conf.gem "#{root}/examples/mrbgems/c_and_ruby_extension_example" conf.gem :github => 'masamitsu-murase/mruby-hs-regexp' end
Jsdo.itで動かした
まとめ
webrubyでも簡単にgemを追加することができる事が分かった。
mruby-onig-regexp(鬼車)は、残念ながら、ヘッダファイルが見つからないとエラーで うまく行かなかった。
実はこの記事書こうと試した際に、Rakefileを編集し、rakeを実行したら、 webrubyが無いと怒られた。
これは、rbenvで rubyのバージョンをあげていたから、gem webrubyとすることで解決したw。