No documentation for this object"; } if ($obj) { $markdown .= "\n\n"; $markdown .= get_depends_markdown('Depends on', $obj['depends']); $markdown .= get_depends_markdown('Depended on by', $obj['dependedOnBy']); } // Use {{object_id}} to link to an object $arr = explode('{{', $markdown); $markdown = $arr[0]; for ($i = 1; $i < count($arr); $i++) { $pieces = explode('}}', $arr[$i], 2); $name = $pieces[0]; $id_string = get_id_string($name); $name_esc = str_replace('_', '\_', $name); $class = 'select-object'; if (!isset($data[$name])) { $class .= ' missing'; $errors[] = "Object '$obj[name]' links to unrecognized object '$name'"; } $markdown .= "$name_esc"; $markdown .= $pieces[1]; } $html = Markdown::defaultTransform($markdown); // IE can't handle
 (it eats all the line breaks)
    $html = str_replace('
'  , '
' , $html);
    $html = str_replace('
', '
', $html); return $html; } function get_depends_markdown($header, $arr) { $markdown = "### $header"; if (count($arr)) { $markdown .= "\n\n"; foreach ($arr as $name) { $markdown .= "* {{" . $name . "}}\n"; } $markdown .= "\n"; } else { $markdown .= " *(none)*\n\n"; } return $markdown; } function get_id_string($name) { return 'obj-' . preg_replace('@[^a-z0-9]+@i', '-', $name); } function read_config() { global $config, $dataset, $dataset_qs; $config = json_decode(file_get_contents("data/$dataset/config.json" ), true); $config['jsonUrl'] = "json.php$dataset_qs"; } function read_data() { global $config, $data, $dataset, $errors; if (!$config) read_config(); $json = json_decode(file_get_contents("data/$dataset/objects.json"), true); $data = array(); $errors = array(); foreach ($json as $obj) { $data[$obj['name']] = $obj; } foreach ($data as &$obj) { $obj['dependedOnBy'] = array(); } unset($obj); foreach ($data as &$obj) { foreach ($obj['depends'] as $name) { if ($data[$name]) { $data[$name]['dependedOnBy'][] = $obj['name']; } else { $errors[] = "Unrecognized dependency: '$obj[name]' depends on '$name'"; } } } unset($obj); foreach ($data as &$obj) { $obj['docs'] = get_html_docs($obj); } unset($obj); } ?>