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 |