カレンダーを作るスクリプトの一つとして

先日のスクリプトを利用して
カレンダーを作るスクリプトをひとつ。
カレンダーを作るスクリプトはいろいろあると思いますが、どちらかというと
作るというより、先にレイアウトした文字を更新すると言ったほうが正しいでしょうか?

先に7x6の塊としてグループ化(文字は一つ一つバラバラです)


こんな感じで先にレイアウト。
12ヶ月分のグループを選択して。
スクリプト一発

(2008-11-11 ミスを修正)

//読み込み
#include 'lib/hvg.js';

//
//

//12ヶ月分のグループを渡す
var cal = new hvg(activeDocument.selection);

for(var a = 0; a < 12; a++){
	var cald = dd(2009,a+1);
	days = new hvg(cal.each().textFrames);
	//
	for(var i = 0 ; i < cald.start; i++)days.each().contents = " ";
	//
	for(var i = 0 ; i < cald.max; i++)days.each().contents = i+1;
	//
	while(x = days.each())x.contents = " ";
}


//
function dd(y , m){
	var today_date = new Date();
	var y  = y ? y : today_date.getFullYear();
	var m = m ? m : today_date.getMonth()+1;
	return {
		year : y ,
		month : m ,
		max : days_num(y , m),
		start : new Date(y,m-1,1).getDay()
		};
}

function days_num(y,m){
	var mday = [31,28,31,30,31,30,31,31,30,31,30,31];
	m--;
	if (m == 2) {
    if (y % 400 == 0) mday[1] =29;
    else if (y % 100 == 0) ;
    else if (y % 4 == 0) mday[1]=29;
	}

	return mday[m];
}

カレンダーの部分はこちらを参考にさせて頂きました。
http://www.freecalendar.jp/illustrator_javascript/index.html