"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 = $args['linked'] ? '.sage_linked_'.$args['linked'] : '#sage_'.$sage_id; if (!$sage_linked_cells[$args['linked']]) { if ($args['linked']) $sage_linked_cells[$args['linked']] = 1; $args['linked'] = $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; }