1 /** 2 * @namespace JavaScriptの言語仕様に関する情報を取得するために使用する名前空間です。 3 */ 4 JSDOC.Lang = { 5 } 6 7 /** 8 * 指定された名前が組み込みオブジェクトのものであるか判定します。 9 * @param {String} name オブジェクト名 10 * @return {Boolean} 組み込みオブジェクトならtrue、そうでなければfalse 11 */ 12 JSDOC.Lang.isBuiltin = function(name) { 13 return (JSDOC.Lang.isBuiltin.coreObjects.indexOf(name) > -1); 14 } 15 16 JSDOC.Lang.isBuiltin.coreObjects = ['_global_', 'Array', 'Boolean', 'Date', 'Error', 'Function', 'Math', 'Number', 'Object', 'RegExp', 'String']; 17 18 /** @ignore */ 19 JSDOC.Lang.whitespace = function(ch) { 20 return JSDOC.Lang.whitespace.names[ch]; 21 } 22 JSDOC.Lang.whitespace.names = { 23 " ": "SPACE", 24 "\f": "FORMFEED", 25 "\t": "TAB", 26 "\u0009": "UNICODE_TAB", 27 "\u000A": "UNICODE_NBR", 28 "\u0008": "VERTICAL_TAB" 29 }; 30 31 /** @ignore */ 32 JSDOC.Lang.newline = function(ch) { 33 return JSDOC.Lang.newline.names[ch]; 34 } 35 JSDOC.Lang.newline.names = { 36 "\n": "NEWLINE", 37 "\r": "RETURN", 38 "\u000A": "UNICODE_LF", 39 "\u000D": "UNICODE_CR", 40 "\u2029": "UNICODE_PS", 41 "\u2028": "UNICODE_LS" 42 }; 43 44 /** @ignore */ 45 JSDOC.Lang.keyword = function(word) { 46 return JSDOC.Lang.keyword.names["="+word]; 47 } 48 JSDOC.Lang.keyword.names = { 49 "=break": "BREAK", 50 "=case": "CASE", 51 "=catch": "CATCH", 52 "=const": "VAR", 53 "=continue": "CONTINUE", 54 "=default": "DEFAULT", 55 "=delete": "DELETE", 56 "=do": "DO", 57 "=else": "ELSE", 58 "=false": "FALSE", 59 "=finally": "FINALLY", 60 "=for": "FOR", 61 "=function": "FUNCTION", 62 "=if": "IF", 63 "=in": "IN", 64 "=instanceof": "INSTANCEOF", 65 "=new": "NEW", 66 "=null": "NULL", 67 "=return": "RETURN", 68 "=switch": "SWITCH", 69 "=this": "THIS", 70 "=throw": "THROW", 71 "=true": "TRUE", 72 "=try": "TRY", 73 "=typeof": "TYPEOF", 74 "=void": "VOID", 75 "=while": "WHILE", 76 "=with": "WITH", 77 "=var": "VAR" 78 }; 79 80 /** @ignore */ 81 JSDOC.Lang.punc = function(ch) { 82 return JSDOC.Lang.punc.names[ch]; 83 } 84 JSDOC.Lang.punc.names = { 85 ";": "SEMICOLON", 86 ",": "COMMA", 87 "?": "HOOK", 88 ":": "COLON", 89 "||": "OR", 90 "&&": "AND", 91 "|": "BITWISE_OR", 92 "^": "BITWISE_XOR", 93 "&": "BITWISE_AND", 94 "===": "STRICT_EQ", 95 "==": "EQ", 96 "=": "ASSIGN", 97 "!==": "STRICT_NE", 98 "!=": "NE", 99 "<<": "LSH", 100 "<=": "LE", 101 "<": "LT", 102 ">>>": "URSH", 103 ">>": "RSH", 104 ">=": "GE", 105 ">": "GT", 106 "++": "INCREMENT", 107 "--": "DECREMENT", 108 "+": "PLUS", 109 "-": "MINUS", 110 "*": "MUL", 111 "/": "DIV", 112 "%": "MOD", 113 "!": "NOT", 114 "~": "BITWISE_NOT", 115 ".": "DOT", 116 "[": "LEFT_BRACKET", 117 "]": "RIGHT_BRACKET", 118 "{": "LEFT_CURLY", 119 "}": "RIGHT_CURLY", 120 "(": "LEFT_PAREN", 121 ")": "RIGHT_PAREN" 122 }; 123 124 /** @ignore */ 125 JSDOC.Lang.matching = function(name) { 126 return JSDOC.Lang.matching.names[name]; 127 } 128 JSDOC.Lang.matching.names = { 129 "LEFT_PAREN": "RIGHT_PAREN", 130 "RIGHT_PAREN": "LEFT_PAREN", 131 "LEFT_CURLY": "RIGHT_CURLY", 132 "RIGHT_CURLY": "LEFT_CURLY", 133 "LEFT_BRACE": "RIGHT_BRACE", 134 "RIGHT_BRACE": "LEFT_BRACE" 135 } 136 137 /** 138 * 指定された文字列が数値であるか判定します。 139 * @param {String} str 判定対象の文字列 140 * @return {Boolean} 数値ならtrue、そうでなければfalse 141 */ 142 JSDOC.Lang.isNumber = function(str) { 143 return /^(\.[0-9]|[0-9]+\.|[0-9])[0-9]*([eE][+-][0-9]+)?$/i.test(str); 144 } 145 146 /** 147 * 指定された文字列が16進数表記の数値であるか判定します。 148 * @param {String} str 判定対象の文字列 149 * @return {Boolean} 16進数表記の数値ならtrue、そうでなければfalse 150 */ 151 JSDOC.Lang.isHexDec = function(str) { 152 return /^0x[0-9A-F]+$/i.test(str); 153 } 154 155 /** 156 * 指定された文字列が以下の要素からのみ構成されているか判定します。 <br> 157 * <ul><li>アルファベット</li><li>数字</li><li>$</li><li>_</li><li>.</li></ul> 158 * @param {String} str 判定対象の文字列 159 * @return {Boolean} 上記の条件に一致しているならtrue、そうでなければfalse 160 */ 161 JSDOC.Lang.isWordChar = function(str) { 162 return /^[a-zA-Z0-9$_.]+$/.test(str); 163 } 164 165 /** 166 * 指定された文字列が空白文字(スペース、タブなど。改行文字は含みません)であるか判定します。 167 * @param {String} str 判定対象の文字列 168 * @return {Boolean} 空白文字ならtrue、そうでなければfalse 169 */ 170 JSDOC.Lang.isSpace = function(str) { 171 return (typeof JSDOC.Lang.whitespace(str) != "undefined"); 172 } 173 174 /** 175 * 指定された文字列が改行文字であるか判定します。 176 * @param {String} str 判定対象の文字列 177 * @return {Boolean} 改行文字ならtrue、そうでなければfalse 178 */ 179 JSDOC.Lang.isNewline = function(str) { 180 return (typeof JSDOC.Lang.newline(str) != "undefined"); 181 }