1/* 2 * Copyright (C) 2013 Google Inc. All rights reserved. 3 * 4 * Redistribution and use in source and binary forms, with or without 5 * modification, are permitted provided that the following conditions are 6 * met: 7 * 8 * * Redistributions of source code must retain the above copyright 9 * notice, this list of conditions and the following disclaimer. 10 * * Redistributions in binary form must reproduce the above 11 * copyright notice, this list of conditions and the following disclaimer 12 * in the documentation and/or other materials provided with the 13 * distribution. 14 * * Neither the name of Google Inc. nor the names of its 15 * contributors may be used to endorse or promote products derived from 16 * this software without specific prior written permission. 17 * 18 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 19 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 20 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 21 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 22 * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 23 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 24 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 25 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 26 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 27 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 28 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 29 */ 30 31WebInspector.TextUtils = { 32 /** 33 * @param {string} char 34 * @return {boolean} 35 */ 36 isStopChar: function(char) 37 { 38 return (char > " " && char < "0") || 39 (char > "9" && char < "A") || 40 (char > "Z" && char < "_") || 41 (char > "_" && char < "a") || 42 (char > "z" && char <= "~"); 43 }, 44 45 /** 46 * @param {string} char 47 * @return {boolean} 48 */ 49 isWordChar: function(char) 50 { 51 return !WebInspector.TextUtils.isStopChar(char) && !WebInspector.TextUtils.isSpaceChar(char); 52 }, 53 54 /** 55 * @param {string} char 56 * @return {boolean} 57 */ 58 isSpaceChar: function(char) 59 { 60 return WebInspector.TextUtils._SpaceCharRegex.test(char); 61 }, 62 63 /** 64 * @param {string} word 65 * @return {boolean} 66 */ 67 isWord: function(word) 68 { 69 for (var i = 0; i < word.length; ++i) { 70 if (!WebInspector.TextUtils.isWordChar(word.charAt(i))) 71 return false; 72 } 73 return true; 74 }, 75 76 /** 77 * @param {string} char 78 * @return {boolean} 79 */ 80 isOpeningBraceChar: function(char) 81 { 82 return char === "(" || char === "{"; 83 }, 84 85 /** 86 * @param {string} char 87 * @return {boolean} 88 */ 89 isClosingBraceChar: function(char) 90 { 91 return char === ")" || char === "}"; 92 }, 93 94 /** 95 * @param {string} char 96 * @return {boolean} 97 */ 98 isBraceChar: function(char) 99 { 100 return WebInspector.TextUtils.isOpeningBraceChar(char) || WebInspector.TextUtils.isClosingBraceChar(char); 101 }, 102 103 textToWords: function(text) 104 { 105 var words = []; 106 var startWord = -1; 107 for(var i = 0; i < text.length; ++i) { 108 if (!WebInspector.TextUtils.isWordChar(text.charAt(i))) { 109 if (startWord !== -1) 110 words.push(text.substring(startWord, i)); 111 startWord = -1; 112 } else if (startWord === -1) 113 startWord = i; 114 } 115 if (startWord !== -1) 116 words.push(text.substring(startWord)); 117 return words; 118 }, 119} 120 121WebInspector.TextUtils._SpaceCharRegex = /\s/; 122 123/** 124 * @enum {string} 125 */ 126WebInspector.TextUtils.Indent = { 127 TwoSpaces: " ", 128 FourSpaces: " ", 129 EightSpaces: " ", 130 TabCharacter: "\t" 131} 132