"Evaluate", "autoeval" => "false", "editor" => "codemirror", "languages" => "sage", "replaceOutput" => "true", "hide" => "" )); Markup('sage', 'fulltext', '/\(:sage(?:\s+([^\n]+))?:\)(.*?)\(:sageend:\)/si', 'SageCell'); function SageCell($m) { static $sage_id = 1; static $sage_linked_cells = array(); global $SageCellDefaultArgs; $args = array_merge($SageCellDefaultArgs, array_slice(ParseArgs($m[1]), 1)); SageRectifyArgs($args); $input_location = isset($args['linked']) ? ".sage_linked_{$args['linked']}" : "#sage_{$sage_id}"; if ( isset($args['linked']) == false || $sage_linked_cells[$args['linked']] == null) { if (isset($args['linked'])) $sage_linked_cells[$args['linked']] = 1; $args['linked'] = isset($args['linked']) ? 'true' : 'false'; global $HTMLFooterFmt; $sagecell_script = " "; $HTMLFooterFmt[] = $sagecell_script; } $class = ($input_location[0] == '.') ? 'sage ' . substr($input_location, 1) : 'sage'; $out = "
'; SageCellAppendFooter(); $sage_id++; return Keep($out); } function SageCellAppendFooter () { static $ran_once = false; if (!$ran_once) { global $HTMLHeaderFmt; $HTMLHeaderFmt['SageCell'] = ' '; } $ran_once = true; } function SageRectifyArgs(&$args) { $args_to_enquote = array( 'evalButtonText', 'editor' ); foreach ($args_to_enquote as $a) { enquote($args[$a]); } if ($args['languages'] == 'allLanguages') $args['languages'] = 'sagecell.allLanguages'; else $args['languages'] = "[ '" . implode("', '", explode(',', $args['languages'])) . "' ]"; $args['hide'] = "[ '" . implode("', '", explode(',', $args['hide'])) . "' ]"; } function enquote(&$string, $double = false) { $q = $double ? '"' : "'"; $string = $q.$string.$q; }