| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 /** | 5 /** |
| 6 * @param {string} toTest The string to be tested. | 6 * @param {string} toTest The string to be tested. |
| 7 * @return {boolean} True if |toTest| contains only digits. Leading and trailing | 7 * @return {boolean} True if |toTest| contains only digits. Leading and trailing |
| 8 * whitespace is allowed. | 8 * whitespace is allowed. |
| 9 */ | 9 */ |
| 10 function isInteger(toTest) { | 10 function isInteger(toTest) { |
| (...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 49 if (array1[i].from != array2[i].from || | 49 if (array1[i].from != array2[i].from || |
| 50 array1[i].to != array2[i].to) { | 50 array1[i].to != array2[i].to) { |
| 51 return false; | 51 return false; |
| 52 } | 52 } |
| 53 return true; | 53 return true; |
| 54 } | 54 } |
| 55 | 55 |
| 56 /** | 56 /** |
| 57 * Removes duplicate elements from |inArray| and returns a new array. | 57 * Removes duplicate elements from |inArray| and returns a new array. |
| 58 * |inArray| is not affected. It assumes that |inArray| is already sorted. | 58 * |inArray| is not affected. It assumes that |inArray| is already sorted. |
| 59 * @param {Array.<number>} inArray The array to be processed. | 59 * @param {!Array.<number>} inArray The array to be processed. |
| 60 * @return {Array.<number>} The array after processing. | 60 * @return {!Array.<number>} The array after processing. |
| 61 */ | 61 */ |
| 62 function removeDuplicates(inArray) { | 62 function removeDuplicates(inArray) { |
| 63 var out = []; | 63 var out = []; |
| 64 | 64 |
| 65 if (inArray.length == 0) | 65 if (inArray.length == 0) |
| 66 return out; | 66 return out; |
| 67 | 67 |
| 68 out.push(inArray[0]); | 68 out.push(inArray[0]); |
| 69 for (var i = 1; i < inArray.length; ++i) | 69 for (var i = 1; i < inArray.length; ++i) |
| 70 if (inArray[i] != inArray[i - 1]) | 70 if (inArray[i] != inArray[i - 1]) |
| (...skipping 15 matching lines...) Expand all Loading... |
| 86 * Wildcard the second number must be larger then the first number. If it's | 86 * Wildcard the second number must be larger then the first number. If it's |
| 87 * missed then |totalPageCount| is used as the second number. | 87 * missed then |totalPageCount| is used as the second number. |
| 88 * Example: "1-4, 9, 3-6, 10, 11" is valid, assuming |totalPageCount| >= 11. | 88 * Example: "1-4, 9, 3-6, 10, 11" is valid, assuming |totalPageCount| >= 11. |
| 89 * Example: "1-4, -6" is valid, assuming |totalPageCount| >= 6. | 89 * Example: "1-4, -6" is valid, assuming |totalPageCount| >= 6. |
| 90 * Example: "2-" is valid, assuming |totalPageCount| >= 2, means from 2 to the | 90 * Example: "2-" is valid, assuming |totalPageCount| >= 2, means from 2 to the |
| 91 * end. | 91 * end. |
| 92 * Example: "4-2, 11, -6" is invalid. | 92 * Example: "4-2, 11, -6" is invalid. |
| 93 * Example: "-" is valid, assuming |totalPageCount| >= 1. | 93 * Example: "-" is valid, assuming |totalPageCount| >= 1. |
| 94 * Example: "1-4dsf, 11" is invalid regardless of |totalPageCount|. | 94 * Example: "1-4dsf, 11" is invalid regardless of |totalPageCount|. |
| 95 * @param {string} pageRangeText The text to be checked. | 95 * @param {string} pageRangeText The text to be checked. |
| 96 * @param {number} totalPageCount The total number of pages. | 96 * @param {number=} opt_totalPageCount The total number of pages. |
| 97 * @return {Array.<{from: number, to: number}>} An array of page range objects. | 97 * @return {Array.<{from: number, to: number}>} An array of page range objects. |
| 98 */ | 98 */ |
| 99 function pageRangeTextToPageRanges(pageRangeText, totalPageCount) { | 99 function pageRangeTextToPageRanges(pageRangeText, opt_totalPageCount) { |
| 100 if (pageRangeText == '') { | 100 if (pageRangeText == '') { |
| 101 return []; | 101 return []; |
| 102 } | 102 } |
| 103 | 103 |
| 104 var MAX_PAGE_NUMBER = 1000000000; | 104 var MAX_PAGE_NUMBER = 1000000000; |
| 105 totalPageCount = totalPageCount ? totalPageCount : MAX_PAGE_NUMBER; | 105 var totalPageCount = opt_totalPageCount ? opt_totalPageCount : |
| 106 MAX_PAGE_NUMBER; |
| 106 | 107 |
| 107 var regex = /^\s*([0-9]*)\s*-\s*([0-9]*)\s*$/; | 108 var regex = /^\s*([0-9]*)\s*-\s*([0-9]*)\s*$/; |
| 108 var parts = pageRangeText.split(/,/); | 109 var parts = pageRangeText.split(/,/); |
| 109 | 110 |
| 110 var pageRanges = []; | 111 var pageRanges = []; |
| 111 for (var i = 0; i < parts.length; ++i) { | 112 for (var i = 0; i < parts.length; ++i) { |
| 112 var match = parts[i].match(regex); | 113 var match = parts[i].match(regex); |
| 113 if (match) { | 114 if (match) { |
| 114 if (!isPositiveInteger(match[1]) && match[1] !== '') | 115 if (!isPositiveInteger(match[1]) && match[1] !== '') |
| 115 return null; | 116 return null; |
| (...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 154 } | 155 } |
| 155 } | 156 } |
| 156 if (pageList.length == 0) { | 157 if (pageList.length == 0) { |
| 157 for (var j = 1; j <= totalPageCount; ++j) | 158 for (var j = 1; j <= totalPageCount; ++j) |
| 158 pageList.push(j); | 159 pageList.push(j); |
| 159 } | 160 } |
| 160 return pageList; | 161 return pageList; |
| 161 } | 162 } |
| 162 | 163 |
| 163 /** | 164 /** |
| 164 * @param {Array.<number>} pageList The list to be processed. | 165 * @param {!Array.<number>} pageList The list to be processed. |
| 165 * @return {Array.<number>} The contents of |pageList| in ascending order and | 166 * @return {!Array.<number>} The contents of |pageList| in ascending order and |
| 166 * without any duplicates. |pageList| is not affected. | 167 * without any duplicates. |pageList| is not affected. |
| 167 */ | 168 */ |
| 168 function pageListToPageSet(pageList) { | 169 function pageListToPageSet(pageList) { |
| 169 var pageSet = []; | 170 var pageSet = []; |
| 170 if (pageList.length == 0) | 171 if (pageList.length == 0) |
| 171 return pageSet; | 172 return pageSet; |
| 172 pageSet = pageList.slice(0); | 173 pageSet = pageList.slice(0); |
| 173 pageSet.sort(function(a, b) { | 174 pageSet.sort(function(a, b) { |
| 174 return (/** @type {number} */ a) - (/** @type {number} */ b); | 175 return (/** @type {number} */ a) - (/** @type {number} */ b); |
| 175 }); | 176 }); |
| (...skipping 19 matching lines...) Expand all Loading... |
| 195 } | 196 } |
| 196 | 197 |
| 197 /** | 198 /** |
| 198 * @param {!Array} array Array to check for item. | 199 * @param {!Array} array Array to check for item. |
| 199 * @param {*} item Item to look for in array. | 200 * @param {*} item Item to look for in array. |
| 200 * @return {boolean} Whether the item is in the array. | 201 * @return {boolean} Whether the item is in the array. |
| 201 */ | 202 */ |
| 202 function arrayContains(array, item) { | 203 function arrayContains(array, item) { |
| 203 return array.indexOf(item) != -1; | 204 return array.indexOf(item) != -1; |
| 204 } | 205 } |
| OLD | NEW |