<?php if (!defined('PmWiki')) exit(); /** * PmWiki Lua Execute Recipe * Copyright (c) 2014 Felipe Daragon * Lua VM JavaScript * Copyright (c) 2013 Alon Zakai * * License: MIT */ $RecipeInfo['LuaExecute']['1.0.2'] = '2017-12-31'; // Defaults SDVA($LuaConfig, array( 'initscript' => '', 'safemode' => true )); // Internal variables $LuaHeaderInserted = false; function InsertLuaHeader(){ global $LuaHeaderInserted, $LuaConfig, $FarmPubDirUrl, $HTMLHeaderFmt, $HTMLFooterFmt; $LuaHeaderInserted = true; $initscript = $LuaConfig['initscript']; if ($initscript != '') $initscript = EncodeLuaScript($initscript); if ($LuaConfig['safemode'] == false) $script = "<script>LuaExecutor.enableSafeMode(false);</script>"; $HTMLHeaderFmt['luahead'] = " <script type='text/javascript' src='{$FarmPubDirUrl}/lua/luaexecute.js'></script>{$script} "; $HTMLFooterFmt['luafoot'] = " <script type='text/javascript' src='{$FarmPubDirUrl}/lua/lua.vm.js'></script> <script>LuaExecutor.run('{$initscript}');</script> "; } function EncodeLuaScript($s){ $s = html_entity_decode($s); return base64_encode($s); } function ExecuteLuaScript($m) { $args = $m[1]; global $LuaHeaderInserted; if ($LuaHeaderInserted == false) InsertLuaHeader(); $code = PSS($args); $code = str_replace('<:vspace>', '', $code); $code = EncodeLuaScript($code); return Keep("<div class='luaoutput' luacode='{$code}'></div>"); } Markup('lua', 'fulltext', '/\\(:lua:\\)(.*?)\\(:luaend:\\)/msi', "ExecuteLuaScript");