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) { |
11 var numericExp = /^\s*[0-9]+\s*$/; | 11 var numericExp = /^\s*[0-9]+\s*$/; |
12 return numericExp.test(toTest); | 12 return numericExp.test(toTest); |
13 } | 13 } |
14 | 14 |
15 /** | 15 /** |
16 * Returns true if |value| is a valid non zero positive integer. | 16 * Returns true if |value| is a valid non zero positive integer. |
17 * @param {string} value The string to be tested. | 17 * @param {string} value The string to be tested. |
18 * @return {boolean} true if the |value| is valid non zero positive integer. | 18 * @return {boolean} true if the |value| is valid non zero positive integer. |
19 */ | 19 */ |
20 function isPositiveInteger(value) { | 20 function isPositiveInteger(value) { |
21 return isInteger(value) && parseInt(value, 10) > 0; | 21 return isInteger(value) && parseInt(value, 10) > 0; |
22 } | 22 } |
23 | 23 |
24 /** | 24 /** |
25 * Returns true if the contents of the two arrays are equal. | 25 * Returns true if the contents of the two arrays are equal. |
26 * @param {Array.<{from: number, to: number}>} array1 The first array. | 26 * @param {Array<{from: number, to: number}>} array1 The first array. |
27 * @param {Array.<{from: number, to: number}>} array2 The second array. | 27 * @param {Array<{from: number, to: number}>} array2 The second array. |
28 * @return {boolean} true if the arrays are equal. | 28 * @return {boolean} true if the arrays are equal. |
29 */ | 29 */ |
30 function areArraysEqual(array1, array2) { | 30 function areArraysEqual(array1, array2) { |
31 if (array1.length != array2.length) | 31 if (array1.length != array2.length) |
32 return false; | 32 return false; |
33 for (var i = 0; i < array1.length; i++) | 33 for (var i = 0; i < array1.length; i++) |
34 if (array1[i] !== array2[i]) | 34 if (array1[i] !== array2[i]) |
35 return false; | 35 return false; |
36 return true; | 36 return true; |
37 } | 37 } |
(...skipping 11 matching lines...) Expand all 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 16 matching lines...) Expand all Loading... |
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=} opt_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, opt_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 var totalPageCount = opt_totalPageCount ? opt_totalPageCount : | 105 var totalPageCount = opt_totalPageCount ? opt_totalPageCount : |
106 MAX_PAGE_NUMBER; | 106 MAX_PAGE_NUMBER; |
107 | 107 |
(...skipping 26 matching lines...) Expand all Loading... |
134 } | 134 } |
135 | 135 |
136 /** | 136 /** |
137 * Returns a list of pages defined by |pagesRangeText|. The pages are | 137 * Returns a list of pages defined by |pagesRangeText|. The pages are |
138 * listed in the order they appear in |pageRangeText| and duplicates are not | 138 * listed in the order they appear in |pageRangeText| and duplicates are not |
139 * eliminated. If |pageRangeText| is not valid according or | 139 * eliminated. If |pageRangeText| is not valid according or |
140 * |totalPageCount| undefined [1,2,...,totalPageCount] is returned. | 140 * |totalPageCount| undefined [1,2,...,totalPageCount] is returned. |
141 * See pageRangeTextToPageRanges for details. | 141 * See pageRangeTextToPageRanges for details. |
142 * @param {string} pageRangeText The text to be checked. | 142 * @param {string} pageRangeText The text to be checked. |
143 * @param {number} totalPageCount The total number of pages. | 143 * @param {number} totalPageCount The total number of pages. |
144 * @return {Array.<number>} A list of all pages. | 144 * @return {Array<number>} A list of all pages. |
145 */ | 145 */ |
146 function pageRangeTextToPageList(pageRangeText, totalPageCount) { | 146 function pageRangeTextToPageList(pageRangeText, totalPageCount) { |
147 var pageRanges = pageRangeTextToPageRanges(pageRangeText, totalPageCount); | 147 var pageRanges = pageRangeTextToPageRanges(pageRangeText, totalPageCount); |
148 var pageList = []; | 148 var pageList = []; |
149 if (pageRanges) { | 149 if (pageRanges) { |
150 for (var i = 0; i < pageRanges.length; ++i) { | 150 for (var i = 0; i < pageRanges.length; ++i) { |
151 for (var j = pageRanges[i].from; j <= Math.min(pageRanges[i].to, | 151 for (var j = pageRanges[i].from; j <= Math.min(pageRanges[i].to, |
152 totalPageCount); ++j) { | 152 totalPageCount); ++j) { |
153 pageList.push(j); | 153 pageList.push(j); |
154 } | 154 } |
155 } | 155 } |
156 } | 156 } |
157 if (pageList.length == 0) { | 157 if (pageList.length == 0) { |
158 for (var j = 1; j <= totalPageCount; ++j) | 158 for (var j = 1; j <= totalPageCount; ++j) |
159 pageList.push(j); | 159 pageList.push(j); |
160 } | 160 } |
161 return pageList; | 161 return pageList; |
162 } | 162 } |
163 | 163 |
164 /** | 164 /** |
165 * @param {!Array.<number>} pageList The list to be processed. | 165 * @param {!Array<number>} pageList The list to be processed. |
166 * @return {!Array.<number>} The contents of |pageList| in ascending order and | 166 * @return {!Array<number>} The contents of |pageList| in ascending order and |
167 * without any duplicates. |pageList| is not affected. | 167 * without any duplicates. |pageList| is not affected. |
168 */ | 168 */ |
169 function pageListToPageSet(pageList) { | 169 function pageListToPageSet(pageList) { |
170 var pageSet = []; | 170 var pageSet = []; |
171 if (pageList.length == 0) | 171 if (pageList.length == 0) |
172 return pageSet; | 172 return pageSet; |
173 pageSet = pageList.slice(0); | 173 pageSet = pageList.slice(0); |
174 pageSet.sort(function(a, b) { | 174 pageSet.sort(function(a, b) { |
175 return /** @type {number} */(a) - /** @type {number} */(b); | 175 return /** @type {number} */(a) - /** @type {number} */(b); |
176 }); | 176 }); |
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
225 * localizedStrings An array of strings with corresponding locales. | 225 * localizedStrings An array of strings with corresponding locales. |
226 * @return {string} A string for the current locale. An empty string if there's | 226 * @return {string} A string for the current locale. An empty string if there's |
227 * no string for the current locale found. | 227 * no string for the current locale found. |
228 */ | 228 */ |
229 function getStringForCurrentLocale(localizedStrings) { | 229 function getStringForCurrentLocale(localizedStrings) { |
230 // First try to find an exact match and then look for the language only. | 230 // First try to find an exact match and then look for the language only. |
231 return getStringForLocale(localizedStrings, navigator.language) || | 231 return getStringForLocale(localizedStrings, navigator.language) || |
232 getStringForLocale(localizedStrings, | 232 getStringForLocale(localizedStrings, |
233 navigator.language.split('-')[0]); | 233 navigator.language.split('-')[0]); |
234 } | 234 } |
OLD | NEW |