Initial commit

This commit is contained in:
2026-07-15 11:38:06 +01:00
commit 1d5acfdc94
20 changed files with 2902 additions and 0 deletions
+32
View File
@@ -0,0 +1,32 @@
{-# LANGUAGE CApiFFI #-}
{-# LANGUAGE ForeignFunctionInterface #-}
{-# LANGUAGE TemplateHaskell #-}
module WM.Mruby where
import Data.FileEmbed (embedFile)
import Data.Text qualified as T
import Data.Text.Encoding qualified as TE
import Data.Text.Encoding.Error qualified as TEE
import Foreign.C (CString, withCString)
import Foreign.Ptr
runtimeRb :: String
runtimeRb =
T.unpack (TE.decodeUtf8With TEE.lenientDecode $(embedFile "./app/ruby/lib.rb"))
data MrbState
foreign import capi "mruby.h mrb_open"
mrb_open :: IO (Ptr MrbState)
foreign import capi "mruby.h mrb_close"
mrb_close :: Ptr MrbState -> IO ()
foreign import capi "mruby/compile.h mrb_load_string"
c_mrb_load_string :: Ptr MrbState -> CString -> IO ()
runRuby :: Ptr MrbState -> String -> IO ()
runRuby mrb code =
withCString code $ \cstr ->
c_mrb_load_string mrb cstr