SHOJI's Code
 仕事や趣味で書いた各種言語のプログラミングコード(エクセルVBA,PHP,C/C++/C#,JavaScript等)、その他雑記。
2017.10<<123456789101112131415161718192021222324252627282930>>2017.12
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

2年ほど前に「iniファイルクラス」という記事で iniファイルを扱うJavaScriptのクラスを載せたが、それはWSHなどでしか利用できず、HTML内では使用できない。

ということで、そこからiniファイル形式のテキストを扱う部分を抜き出してみた。
それならば、AJAXなどでテキストを取得し、このクラスに渡せばiniファイルが扱えることになる。
function IniParser()
{
this.initialize.apply(this, arguments);
}
IniParser.prototype = {

// 初期化
initialize: function(text) {
this.clear();
if (text!=null) this.parse(text);
},

// 全削除
clear: function() {
try { delete this.items; } catch(e) {}
this.items = new Array();
},

// INI形式テキストの解析
parse: function(text) {
try {
this.clear();
var sectionname = null;
var p;

var lines = text.split("\n");
for (var no in lines)
{
var line = lines[no];

line = line.replace(/\r$/, ""); // 行末のCRは削除
line = line.replace(/^[ \t]+/,""); // 先頭の空白は削除
if (line.match(/^[ \t]*$/)) continue; // 空行は無視

if (line.match(/^\[(.+)\][ \t]*$/)) { // セクション行
sectionname = RegExp.$1;
this.items[sectionname] = new Array(); // セクションを追加
}
else if (sectionname!=null && (p=line.indexOf('='))>=0) {
var keyname = line.substr(0, p).replace(/[ \t]+$/, "");
var value = line.substr(p+1, line.length-p-1);

this.items[sectionname][keyname] = value;
}
}
return true;
}
catch(e)
{
return false;
}
},

// 項目の値取得
getItem: function(sectionname, keyname) {
if (sectionname in this.items) if (keyname in this.items[sectionname]) return this.items[sectionname][keyname];
return '';
},

// setItemメソッド - 項目の値設定
setItem: function(sectionname, keyname, value) {
if( !(sectionname in this.items) ) this.items[sectionname] = new Array();
this.items[sectionname][keyname] = value;
}
};


ただ、サーバーにiniという拡張子でファイルを置いても、通常はテキストとみなしてもらえないと思う。
コメント
この記事へのコメント
コメントを投稿する

管理者にだけ表示を許可する
トラックバック
この記事のトラックバックURL
この記事へのトラックバック
copyright © 2004-2006 SHOJI, Powered By FC2ブログ all rights reserved.
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。