OLD | NEW |
(Empty) | |
| 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 |
| 3 // found in the LICENSE file. |
| 4 |
| 5 cr.define('print_preview', function() { |
| 6 'use strict'; |
| 7 |
| 8 /** |
| 9 * An immutable ordered set of page numbers. |
| 10 * |
| 11 * @param {Array.<number>!} pageNumberList A list of page numbers to include |
| 12 * in the set. |
| 13 * @constructor |
| 14 */ |
| 15 function PageNumberSet(pageNumberList) { |
| 16 /** |
| 17 * Internal data store for the page number set. |
| 18 * @type {Array.<number>} |
| 19 * @private |
| 20 */ |
| 21 this.pageNumberSet_ = pageListToPageSet(pageNumberList); |
| 22 }; |
| 23 |
| 24 /** |
| 25 * @param {string} pageRangeStr String form of a page range. I.e. '2,3,4-5'. |
| 26 * If string is empty, all page numbers will be in the page number set. |
| 27 * @param {number} totalPageCount Total number of pages in the original |
| 28 * document. |
| 29 * @return {print_preview.PageNumberSet?} Page number set parsed from the |
| 30 * given page range string and total page count. Null returned if |
| 31 * the given page range string is invalid. |
| 32 */ |
| 33 PageNumberSet.parse = function(pageRangeStr, totalPageCount) { |
| 34 if (pageRangeStr == '') { |
| 35 var pageNumberList = []; |
| 36 for (var i = 0; i < totalPageCount; i++) { |
| 37 pageNumberList.push(i + 1); |
| 38 } |
| 39 return new PageNumberSet(pageNumberList); |
| 40 } else { |
| 41 return isPageRangeTextValid(pageRangeStr, totalPageCount) ? |
| 42 new PageNumberSet( |
| 43 pageRangeTextToPageList(pageRangeStr, totalPageCount)) : null; |
| 44 } |
| 45 }; |
| 46 |
| 47 PageNumberSet.prototype = { |
| 48 /** @return {number} The number of page numbers in the set. */ |
| 49 get size() { |
| 50 return this.pageNumberSet_.length; |
| 51 }, |
| 52 |
| 53 /** |
| 54 * @param {number} index 0-based index of the page number to get. |
| 55 * @return {number} Page number at the given index. |
| 56 */ |
| 57 getPageNumberAt: function(index) { |
| 58 return this.pageNumberSet_[index]; |
| 59 }, |
| 60 |
| 61 /** |
| 62 * @param {number} 1-based page number to check for. |
| 63 * @return {boolean} Whether the given page number is in the page range. |
| 64 */ |
| 65 hasPageNumber: function(pageNumber) { |
| 66 return arrayContains(this.pageNumberSet_, pageNumber); |
| 67 }, |
| 68 |
| 69 /** |
| 70 * @param {number} 1-based number of the page to get index of. |
| 71 * @return {number} 0-based index of the given page number with respect to |
| 72 * all of the pages in the page range. |
| 73 */ |
| 74 getPageNumberIndex: function(pageNumber) { |
| 75 return this.pageNumberSet_.indexOf(pageNumber); |
| 76 }, |
| 77 |
| 78 /** |
| 79 * @return {boolean} Whether a page number set is equal to this one. |
| 80 */ |
| 81 equals: function(other) { |
| 82 return other == null ? |
| 83 false : areArraysEqual(this.pageNumberSet_, other.pageNumberSet_); |
| 84 } |
| 85 }; |
| 86 |
| 87 // Export |
| 88 return { |
| 89 PageNumberSet: PageNumberSet |
| 90 }; |
| 91 }); |
OLD | NEW |