Backup of blog/2009-02-08 (1) Back


Back to History list

#navi(../)
*JavaScriptでINIファイルを操作する [#n67d1f33]
このサイトで、JavaScriptでINIファイルを操作するスクリプトが公開されている。

http://shoji.blog1.fc2.com/blog-entry-130.html

たとえば、sample.iniというファイルを読み込む場合、
#code(javascript){{
var sampleini = new Ini('ample.ini');
}}
となる。そして、sample.iniの内容が以下のような場合、
#code(ini){{
[section]
main=1
sub=2
[section2]
main=2
sub=1
}}
JavaScriptでは、
#code(javascript){{
sampleini =
	items : {
		'section' : {
			main : 1,
			sub : 2
		},
		'section2' : {
			main : 2,
			sub : 1
		}
	}
};
}}
で読みこむことができる。

しかし、このままでは、
#code(ini){{
[section]
main = 1
;sub = 2
}}
というデーターが正常に処理できない。sub2はコメントアウトされているのに、mainの内容は読み込まれないし、subはコメントアウトされているにも関わらず、;subという形で読み込まれる。

そこで、以下のように書き換える
#code(diff){{
-					} else if( sectionname != null && (p = line.indexOf('='))>=0 ) {
-						var keyname = line.substr(0,p);
-						var value = line.substr(p+1,line.length - p - 1);
+					} else if( sectionname != null && (p = line.indexOf('='))>=0 && !line.match(/^;/)) {
+						var thisline = line.split("=");
+						var keyname = thisline[0].replace(/[\s]$/,'');
+						var value = thisline[1].replace(/^[\s]/,'');
}}
改造点は、まず、コメント行であるかを確認し、キーネームと値を=で分割して、キーネームの末尾の空白文字と、値の前の空白文字を削除して格納する。