« 誕生日終了 | メイン | 1番乗りは気持ちいいね。 »

Data::PageをActionScript2.0に移植

Data::PageをActionScript2.0に移植しました。
元のバージョンは1.03、「$」を「this.」に変えて、メソッドの後ろに「()」を付けただけ。これでものぐさできます。

class Data.Page {
	var TOTAL_ENTRIES:Number;
	var ENTRIES_PER_PAGE:Number;
	var CURRENT_PAGE:Number;
	function Page(total_entries:Number, entries_per_page:Number, current_page:Number) {
		this.TOTAL_ENTRIES = total_entries;
		this.ENTRIES_PER_PAGE = entries_per_page;
		this.CURRENT_PAGE = current_page;
	}
	/* total_entries */
	function total_entries():Number {
		return this.TOTAL_ENTRIES;
	}
	/* entries_per_page */
	function entries_per_page():Number {
		return this.ENTRIES_PER_PAGE;
	}
	/* entries_on_this_page */
	function entries_on_this_page():Number {
		if (this.total_entries() == 0) {
			return 0;
		} else {
			return this.last()-this.first()+1;
		}
	}
	/* current_page */
	function current_page():Number {
		return this.CURRENT_PAGE;
	}
	/* first_page */
	function first_page():Number {
		return 1;
	}
	/* last_page */
	function last_page():Number {
		var page:Number = this.total_entries()/this.entries_per_page();
		if (page == Math.floor(page)) {
			return page;
		} else {
			return 1+Math.floor(page);
		}
	}
	/* first */
	function first():Number {
		if (this.total_entries() == 0) {
			return 0;
		} else {
			return ((this.current_page()-1)*this.entries_per_page())+1;
		}
	}
	/* last */
	function last():Number {
		if (this.current_page() == this.last_page()) {
			return this.total_entries();
		} else {
			return (this.current_page()*this.entries_per_page());
		}
	}
	/* previous_page */
	function previous_page():Number {
		if (this.current_page()>1) {
			return this.current_page()-1;
		} else {
			return null;
		}
	}
	/* next_page */
	function next_page():Number {
		if (this.current_page()<this.last_page()) {
			return this.current_page()+1;
		} else {
			return null;
		}
	}
	/* skipped */
	function skipped():Number {
		return this.first()-1;
	}
	/* splice */
	function splice(array:Array):Array {
		return array.slice(this.skipped(), this.last());
	}

}
</pre>