static string JS_common_bootstrap_print = "////////////////////////////////////////////////////////////////////////////////\n" "/// @brief printing\n" "///\n" "/// @file\n" "///\n" "/// DISCLAIMER\n" "///\n" "/// Copyright 2010-2012 triagens GmbH, Cologne, Germany\n" "///\n" "/// Licensed under the Apache License, Version 2.0 (the \"License\");\n" "/// you may not use this file except in compliance with the License.\n" "/// You may obtain a copy of the License at\n" "///\n" "/// http://www.apache.org/licenses/LICENSE-2.0\n" "///\n" "/// Unless required by applicable law or agreed to in writing, software\n" "/// distributed under the License is distributed on an \"AS IS\" BASIS,\n" "/// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n" "/// See the License for the specific language governing permissions and\n" "/// limitations under the License.\n" "///\n" "/// Copyright holder is triAGENS GmbH, Cologne, Germany\n" "///\n" "/// @author Dr. Frank Celler\n" "/// @author Copyright 2011-2012, triAGENS GmbH, Cologne, Germany\n" "////////////////////////////////////////////////////////////////////////////////\n" "\n" "var internal = require(\"internal\");\n" "\n" "// -----------------------------------------------------------------------------\n" "// --SECTION-- printing\n" "// -----------------------------------------------------------------------------\n" "\n" "////////////////////////////////////////////////////////////////////////////////\n" "/// @addtogroup V8Shell\n" "/// @{\n" "////////////////////////////////////////////////////////////////////////////////\n" "\n" "////////////////////////////////////////////////////////////////////////////////\n" "/// @brief prints objects to standard output\n" "///\n" "/// @FUN{print(@FA{arg1}, @FA{arg2}, @FA{arg3}, ...)}\n" "///\n" "/// Only available in shell mode.\n" "///\n" "/// Prints the arguments. If an argument is an object having a\n" "/// function @FN{_PRINT}, then this function is called. Otherwise @FN{toJson} is\n" "/// used. A final newline is printed\n" "///\n" "/// @verbinclude fluent40\n" "////////////////////////////////////////////////////////////////////////////////\n" "\n" "function print () {\n" " for (var i = 0; i < arguments.length; ++i) {\n" " if (0 < i) {\n" " internal.output(\" \");\n" " }\n" "\n" " if (typeof(arguments[i]) === \"string\") {\n" " internal.output(arguments[i]); \n" " } \n" " else {\n" " PRINT(arguments[i], [], \"~\", [], 0);\n" " }\n" " }\n" "\n" " if (typeof(COLOR_OUTPUT) != \"undefined\" && typeof(COLOR_OUTPUT_RESET) != \"undefined\") {\n" " internal.output(COLOR_OUTPUT_RESET);\n" " }\n" "\n" " internal.output(\"\\n\");\n" "}\n" "\n" "var characterQuoteCache = {\n" " '\\b': '\\\\b', // ASCII 8, Backspace\n" " '\\t': '\\\\t', // ASCII 9, Tab\n" " '\\n': '\\\\n', // ASCII 10, Newline\n" " '\\f': '\\\\f', // ASCII 12, Formfeed\n" " '\\r': '\\\\r', // ASCII 13, Carriage Return\n" " '\\\"': '\\\\\"',\n" " '\\\\': '\\\\\\\\'\n" "};\n" "\n" "function QuoteSingleJSONCharacter(c) {\n" " if (c in characterQuoteCache) {\n" " return characterQuoteCache[c];\n" " }\n" " var charCode = c.charCodeAt(0);\n" " var result;\n" " if (charCode < 16) result = '\\\\u000';\n" " else if (charCode < 256) result = '\\\\u00';\n" " else if (charCode < 4096) result = '\\\\u0';\n" " else result = '\\\\u';\n" " result += charCode.toString(16);\n" " characterQuoteCache[c] = result;\n" " return result;\n" "}\n" "\n" "function QuoteJSONString(str) {\n" " var quotable = /[\\\\\\\"\\x00-\\x1f]/g;\n" " return '\"' + str.replace(quotable, QuoteSingleJSONCharacter) + '\"';\n" "}\n" "\n" "\n" "////////////////////////////////////////////////////////////////////////////////\n" "/// @brief prints objects to standard output without a new-line\n" "////////////////////////////////////////////////////////////////////////////////\n" "\n" "function PRINT (value, seen, path, names, level) {\n" " var p;\n" "\n" " if (seen === undefined) {\n" " seen = [];\n" " names = [];\n" " }\n" "\n" " p = seen.indexOf(value);\n" "\n" " if (0 <= p) {\n" " internal.output(names[p]);\n" " }\n" " else {\n" " if (value instanceof Object) {\n" " seen.push(value);\n" " names.push(path);\n" " }\n" "\n" " if (value instanceof Object) {\n" " if ('_PRINT' in value) {\n" " value._PRINT(seen, path, names, level);\n" " }\n" " else if (value.__proto__ === Object.prototype) {\n" " PRINT_OBJECT(value, seen, path, names, level);\n" " }\n" " else if ('toString' in value) {\n" " internal.output(value.toString());\n" " }\n" " else {\n" " PRINT_OBJECT(value, seen, path, names, level);\n" " }\n" " }\n" " else if (value === undefined) {\n" " internal.output(\"undefined\");\n" " }\n" " else {\n" " if (typeof(value) === \"string\") {\n" " internal.output(QuoteJSONString(value));\n" " } \n" " else {\n" " internal.output(\"\" + value); \n" " }\n" " }\n" " }\n" "}\n" "\n" "////////////////////////////////////////////////////////////////////////////////\n" "/// @}\n" "////////////////////////////////////////////////////////////////////////////////\n" "\n" "// -----------------------------------------------------------------------------\n" "// --SECTION-- Array\n" "// -----------------------------------------------------------------------------\n" "\n" "////////////////////////////////////////////////////////////////////////////////\n" "/// @addtogroup V8Shell\n" "/// @{\n" "////////////////////////////////////////////////////////////////////////////////\n" "\n" "////////////////////////////////////////////////////////////////////////////////\n" "/// @brief JSON representation of an array\n" "////////////////////////////////////////////////////////////////////////////////\n" "\n" "Array.prototype._PRINT = function(seen, path, names, level) {\n" " if (this.length == 0) {\n" " internal.output(\"[ ]\");\n" " }\n" " else {\n" " var sep = \"\";\n" "\n" " internal.output(\"[\");\n" " \n" " var newLevel = level + 1;\n" " \n" " for (var i = 0; i < this.length; i++) {\n" " internal.output(sep);\n" " \n" " printIdent(newLevel);\n" " \n" " PRINT(this[i], seen, path + \"[\" + i + \"]\", names, newLevel);\n" " sep = \", \";\n" " }\n" "\n" " printIdent(level);\n" "\n" " internal.output(\"]\");\n" " }\n" "}\n" "\n" "////////////////////////////////////////////////////////////////////////////////\n" "/// @}\n" "////////////////////////////////////////////////////////////////////////////////\n" "\n" "// -----------------------------------------------------------------------------\n" "// --SECTION-- Function\n" "// -----------------------------------------------------------------------------\n" "\n" "////////////////////////////////////////////////////////////////////////////////\n" "/// @addtogroup V8Shell\n" "/// @{\n" "////////////////////////////////////////////////////////////////////////////////\n" "\n" "////////////////////////////////////////////////////////////////////////////////\n" "/// @brief prints a function\n" "////////////////////////////////////////////////////////////////////////////////\n" "\n" "Function.prototype._PRINT = function() {\n" " internal.output(this.toString());\n" "}\n" "\n" "////////////////////////////////////////////////////////////////////////////////\n" "/// @}\n" "////////////////////////////////////////////////////////////////////////////////\n" "\n" "// -----------------------------------------------------------------------------\n" "// --SECTION-- Object\n" "// -----------------------------------------------------------------------------\n" "\n" "////////////////////////////////////////////////////////////////////////////////\n" "/// @addtogroup V8Shell\n" "/// @{\n" "////////////////////////////////////////////////////////////////////////////////\n" "\n" "////////////////////////////////////////////////////////////////////////////////\n" "/// @brief string representation of an object\n" "////////////////////////////////////////////////////////////////////////////////\n" "\n" "function PRINT_OBJECT (object, seen, path, names, level) {\n" " var sep = \" \";\n" "\n" " internal.output(\"{\");\n" "\n" " var newLevel = level + 1;\n" "\n" " for (var k in object) {\n" " if (object.hasOwnProperty(k)) {\n" " var val = object[k];\n" "\n" " internal.output(sep);\n" " \n" " printIdent(newLevel);\n" " \n" " if ( typeof(COLOR_OUTPUT) != \"undefined\") {\n" " internal.output(COLOR_OUTPUT, k, COLOR_OUTPUT_RESET, \" : \");\n" " }\n" " else {\n" " internal.output(QuoteJSONString(k), \" : \"); \n" " }\n" " PRINT(val, seen, path + \"[\" + k + \"]\", names, newLevel);\n" " sep = \", \";\n" " }\n" " }\n" "\n" " printIdent(level);\n" " \n" " internal.output(\" }\");\n" "}\n" "\n" "////////////////////////////////////////////////////////////////////////////////\n" "/// @}\n" "////////////////////////////////////////////////////////////////////////////////\n" "\n" "\n" "////////////////////////////////////////////////////////////////////////////////\n" "/// @addtogroup V8Shell\n" "/// @{\n" "////////////////////////////////////////////////////////////////////////////////\n" "\n" "////////////////////////////////////////////////////////////////////////////////\n" "/// @brief prints the ident for pretty printing\n" "///\n" "/// @FUN{printIdent(@FA{level})}\n" "///\n" "/// Only available in shell mode.\n" "////////////////////////////////////////////////////////////////////////////////\n" "\n" "function printIdent(level) {\n" " if (typeof(PRETTY_PRINT) != \"undefined\" && PRETTY_PRINT) {\n" " internal.output(\"\\n\"); \n" " for (var j = 0; j < level; ++j) {\n" " internal.output(\" \"); \n" " } \n" " }\n" "}\n" "\n" "////////////////////////////////////////////////////////////////////////////////\n" "/// @}\n" "////////////////////////////////////////////////////////////////////////////////\n" "\n" "// Local Variables:\n" "// mode: outline-minor\n" "// outline-regexp: \"^\\\\(/// @brief\\\\|/// @addtogroup\\\\|// --SECTION--\\\\|/// @page\\\\|/// @}\\\\)\"\n" "// End:\n" ;