Chromium Code Reviews| Index: chrome/browser/resources/print_preview/data/page_number_set.js |
| diff --git a/chrome/browser/resources/print_preview/data/page_number_set.js b/chrome/browser/resources/print_preview/data/page_number_set.js |
| new file mode 100644 |
| index 0000000000000000000000000000000000000000..5d5b54b3127f969a469357ec3f72028f410cb40f |
| --- /dev/null |
| +++ b/chrome/browser/resources/print_preview/data/page_number_set.js |
| @@ -0,0 +1,91 @@ |
| +// Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| +// Use of this source code is governed by a BSD-style license that can be |
| +// found in the LICENSE file. |
| + |
| +cr.define('print_preview', function() { |
| + 'use strict'; |
| + |
| + /** |
| + * An immutable ordered set of page numbers. |
| + * |
| + * @param {Array.<number>!} pageNumberList A list of page numbers to include |
|
dpapad1
2012/04/19 22:45:01
Exclamation marks should be at the start
!Array.<n
Robert Toscano
2012/04/23 23:00:09
Done.
|
| + * in the set. |
| + * @constructor |
| + */ |
| + function PageNumberSet(pageNumberList) { |
| + /** |
| + * Internal data store for the page number set. |
| + * @type {Array.<number>} |
|
dpapad1
2012/04/19 22:45:01
!Array.<number>
Robert Toscano
2012/04/23 23:00:09
Done.
|
| + * @private |
| + */ |
| + this.pageNumberSet_ = pageListToPageSet(pageNumberList); |
| + }; |
| + |
| + /** |
| + * @param {string} pageRangeStr String form of a page range. I.e. '2,3,4-5'. |
| + * If string is empty, all page numbers will be in the page number set. |
| + * @param {number} totalPageCount Total number of pages in the original |
| + * document. |
| + * @return {print_preview.PageNumberSet?} Page number set parsed from the |
| + * given page range string and total page count. Null returned if |
| + * the given page range string is invalid. |
| + */ |
| + PageNumberSet.parse = function(pageRangeStr, totalPageCount) { |
| + if (pageRangeStr == '') { |
| + var pageNumberList = []; |
| + for (var i = 0; i < totalPageCount; i++) { |
| + pageNumberList.push(i + 1); |
| + } |
| + return new PageNumberSet(pageNumberList); |
| + } else { |
| + return isPageRangeTextValid(pageRangeStr, totalPageCount) ? |
| + new PageNumberSet( |
| + pageRangeTextToPageList(pageRangeStr, totalPageCount)) : null; |
| + } |
| + }; |
| + |
| + PageNumberSet.prototype = { |
| + /** @return {number} The number of page numbers in the set. */ |
| + get size() { |
| + return this.pageNumberSet_.length; |
| + }, |
| + |
| + /** |
| + * @param {number} index 0-based index of the page number to get. |
| + * @return {number} Page number at the given index. |
| + */ |
| + getPageNumberAt: function(index) { |
| + return this.pageNumberSet_[index]; |
| + }, |
| + |
| + /** |
| + * @param {number} 1-based page number to check for. |
| + * @return {boolean} Whether the given page number is in the page range. |
| + */ |
| + hasPageNumber: function(pageNumber) { |
| + return arrayContains(this.pageNumberSet_, pageNumber); |
| + }, |
| + |
| + /** |
| + * @param {number} 1-based number of the page to get index of. |
| + * @return {number} 0-based index of the given page number with respect to |
| + * all of the pages in the page range. |
| + */ |
| + getPageNumberIndex: function(pageNumber) { |
| + return this.pageNumberSet_.indexOf(pageNumber); |
| + }, |
| + |
| + /** |
| + * @return {boolean} Whether a page number set is equal to this one. |
| + */ |
| + equals: function(other) { |
|
dpapad1
2012/04/19 22:45:01
Document |other|.
Robert Toscano
2012/04/23 23:00:09
Done.
|
| + return other == null ? |
| + false : areArraysEqual(this.pageNumberSet_, other.pageNumberSet_); |
| + } |
| + }; |
| + |
| + // Export |
| + return { |
| + PageNumberSet: PageNumberSet |
| + }; |
| +}); |