mirror of
https://github.com/bakustarver/rpgmakermlinux-cicpoffs.git
synced 2025-07-09 10:05:19 +02:00
320 lines
No EOL
12 KiB
JavaScript
320 lines
No EOL
12 KiB
JavaScript
function object(o) {
|
|
var f = object.f, i, len, n, prop;
|
|
f.prototype = o;
|
|
n = new f;
|
|
for (i=1, len=arguments.length; i<len; ++i)
|
|
for (prop in arguments[i])
|
|
n[prop] = arguments[i][prop];
|
|
return n;
|
|
}
|
|
|
|
object.f = function(){};
|
|
|
|
var tyrano ={};
|
|
tyrano.plugin ={};
|
|
tyrano.plugin.kag ={};
|
|
|
|
|
|
(function($){
|
|
|
|
$.generateHtml = function() {
|
|
|
|
var html="";
|
|
|
|
var master_tag ={};
|
|
var map_doc = {};
|
|
|
|
// タグの種類を確定させる
|
|
for(var order_type in tyrano.plugin.kag.tag){
|
|
|
|
master_tag[order_type] = object(tyrano.plugin.kag.tag[order_type]);
|
|
|
|
}
|
|
|
|
console.log(master_tag);
|
|
|
|
//テキストを読み込み。スクリプトから、オブジェクト構造解析
|
|
//同じディレクトリにある、KAG関連のデータを読み込み
|
|
|
|
var array_script = ["kag.tag.js","kag.tag_audio.js","kag.tag_ext.js","kag.tag_system.js","kag.tag_camera.js"];
|
|
|
|
var script_num = array_script.length;
|
|
var loading_num = 0;
|
|
|
|
for(var i=0;i<array_script.length;i++){
|
|
|
|
$.loadText("./tyrano/plugins/kag/"+array_script[i],function(text_str){
|
|
|
|
var flag_tag = ""; //タグ解析中の場合
|
|
var flag_param =""; //パラメータ名
|
|
|
|
var tmp_str ="";
|
|
|
|
var array_str = text_str.split("\n");
|
|
|
|
for(var i=0; i< array_str.length;i++){
|
|
|
|
var line_str = $.trim(array_str[i]);
|
|
|
|
//タグ解析中は改行もつかう
|
|
if (line_str !="" || flag_tag !=""){
|
|
|
|
if(line_str ==="#[end]"){
|
|
|
|
|
|
//終了時点で登録すべきデータが残っていた場合は入れておく
|
|
map_doc[flag_tag][flag_param] = tmp_str;
|
|
|
|
flag_tag ="";
|
|
flag_param ="";
|
|
|
|
|
|
}
|
|
else if(flag_tag!=""){
|
|
|
|
if(line_str.substr(0,1)==":"){
|
|
|
|
if(tmp_str!=""){
|
|
|
|
if(flag_param!=""){
|
|
map_doc[flag_tag][flag_param] = tmp_str;
|
|
}
|
|
}
|
|
|
|
flag_param ="";
|
|
flag_param = line_str.substr(1,line_str.length);
|
|
|
|
//すでに登録済みのデータがあれば、それを格納する
|
|
map_doc[flag_tag][flag_param] = "";
|
|
|
|
tmp_str ="";
|
|
|
|
}else {
|
|
|
|
if(flag_param != "param" && flag_param != "title"){
|
|
tmp_str +=line_str+"\n";
|
|
}else{
|
|
tmp_str +=line_str;
|
|
}
|
|
|
|
}
|
|
|
|
|
|
//タグ読み込み開始
|
|
}else if(line_str.substr(0,2)==="#["){
|
|
|
|
var tag_name = line_str.replace("#[","");
|
|
tag_name = tag_name.replace("]","");
|
|
tag_name = $.trim(tag_name);
|
|
|
|
flag_tag = tag_name;
|
|
flag_param ="";
|
|
|
|
|
|
map_doc[flag_tag] = {};
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
console.log(map_doc);
|
|
|
|
//macdoc を 解析して、HTMLを作成
|
|
|
|
loading_num++;
|
|
|
|
if(loading_num == script_num){
|
|
$.putHtml(map_doc,master_tag);
|
|
}
|
|
|
|
|
|
});// ローディング
|
|
|
|
}
|
|
|
|
return html;
|
|
|
|
};
|
|
|
|
|
|
$.putHtml = function (map_doc,master_tag){
|
|
|
|
//タグのグルーピングで左部分作成
|
|
|
|
var group_map = {};
|
|
|
|
var ghtml = "";
|
|
|
|
for(key in map_doc){
|
|
|
|
var obj = map_doc[key];
|
|
if(group_map[obj.group]){
|
|
}else{
|
|
group_map[obj.group] ={};
|
|
}
|
|
group_map[obj.group][key] = obj;
|
|
|
|
}
|
|
|
|
var num_index = 0;
|
|
|
|
//グループをつくる
|
|
for(key in group_map){
|
|
|
|
|
|
ghtml+='<li class="list-group-item list-toggle">';
|
|
ghtml +='<a data-toggle="collapse" data-parent="#sidebar-nav-1" href="#nav_'+num_index+'" class="collapsed" aria-expanded="false">'+key+'</a>';
|
|
|
|
var tmp = group_map[key];
|
|
|
|
ghtml += '<ul id="nav_'+num_index+'" class="collapse" aria-expanded="false" style="height: 0px;">';
|
|
|
|
for (key2 in tmp){
|
|
var obj = tmp[key2];
|
|
//ghtml +='<div style="padding:2px"><a href="#'+key2+'">['+key2+'] <span style="font-style:italic;color:gray">('+obj.title+')</span></a></div>';
|
|
ghtml +='<li><a href="#'+key2+'"> ['+key2+'] '+obj.title+'</a></li>';
|
|
}
|
|
|
|
ghtml +="</ul>";
|
|
ghtml +="</li>";
|
|
|
|
num_index++;
|
|
|
|
}
|
|
|
|
$(".area_group").html(ghtml);
|
|
|
|
|
|
var j_root = $("<div></div>");
|
|
|
|
|
|
for(key in map_doc){
|
|
|
|
var obj = map_doc[key];
|
|
|
|
console.log(obj.exp.split("\n"));
|
|
|
|
var html =''
|
|
+'<div class="news-v3 bg-color-white margin-bottom-20">'
|
|
+'<div class="news-v3-in"><a name="'+key+'"></a>'
|
|
+'<h3 style="color:#a10f2b">['+key+'] '+obj.title+'</h3>'
|
|
+'<ul class="list-inline posted-info"><li>'+obj.group+'</li></ul>'
|
|
+'<p>'+$.br($.escapeHTML(obj.exp))+'</p>'
|
|
+'<table class="table table-bordered">'
|
|
+'<thead style="background-color:pink"><tr><th>パラメータ</th><th>必須</th><th>解説</th></tr></thead>'
|
|
+'<tbody>';
|
|
|
|
|
|
//繰り返し
|
|
|
|
var param_str = obj.param;
|
|
|
|
var array_param = obj.param.split(",");
|
|
|
|
console.log("==== array_param =====");
|
|
console.log(array_param);
|
|
|
|
for(var k=0;k<array_param.length;k++){
|
|
|
|
if(array_param[k]==""){
|
|
html+='<tr ><td colspan="3">指定できるパラメータはありません</td></tr>';
|
|
}else{
|
|
var tmp_array = array_param[k].split("=");
|
|
|
|
var param_name = $.trim(tmp_array[0]);
|
|
var param_value =$.trim(tmp_array[1]);
|
|
|
|
var vital = "×";
|
|
|
|
if(master_tag[key]!=null && master_tag[key]["vital"]!=null){
|
|
|
|
var array_vital = master_tag[key]["vital"];
|
|
|
|
for(var j=0;j<array_vital.length;j++){
|
|
|
|
if(master_tag[key].vital[j]==param_name){
|
|
|
|
vital ="◯";
|
|
break;
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
html+=' <tr>'
|
|
+' <td>'+param_name+'</td>'
|
|
+' <td>'+vital+'</td>'
|
|
+' <td>'+param_value+'</td>'
|
|
|
|
+' </tr>';
|
|
|
|
}
|
|
|
|
}//end for loop
|
|
|
|
html +='</tbody></table>';
|
|
|
|
|
|
if(obj.sample!=""){
|
|
|
|
html+=''
|
|
+'<ul class="list-inline posted-info"><li>サンプルコード</li></ul>'
|
|
+'<code><br />'
|
|
|
|
+$.br($.escapeHTML(obj.sample))
|
|
|
|
+'<br /></code>'
|
|
+'';
|
|
|
|
}
|
|
|
|
html +="</div></div>";
|
|
html +='<div class="clearfix "><hr style="margin:0"></div>';
|
|
|
|
//htmlをぶち込みます
|
|
|
|
j_root.append($(html));
|
|
|
|
}// end map_doc loop
|
|
|
|
|
|
|
|
$(".area_ref").empty();
|
|
|
|
//基本説明部分n
|
|
|
|
var basic_exp = ''
|
|
+' <div class="alert alert-success fade in margin-bottom-20">'
|
|
+'<h4>基本</h4>'
|
|
+'<p>'
|
|
+' [ ] で囲まれた部分がタグになります。 <br/ >'
|
|
+' @で始まる行も、タグとして認識しますが、1行で記述しなければなりません<br/ >'
|
|
+' ;(セミコロン)で始まる行はコメントとして扱われます。<br/ >'
|
|
+' 複数行にわたってコメントにする場合は、/* からはじめて */ で 閉じることでコメントになります。 <br/ >'
|
|
+' すべてのタグにcond属性があります。JS式を記述して、その結果が真の場合のみタグが実行されます<br/ >'
|
|
+' _(半角アンダーバー)で始まる行は、文章の前に空白を挿入することができます。<br />'
|
|
+' '
|
|
+' </p> '
|
|
+''
|
|
+'</div>';
|
|
$(".area_ref").append(basic_exp);
|
|
$(".area_ref").append(j_root);
|
|
$("#src_html").val($(".area_main").html());
|
|
|
|
var js_auto_complete = "";
|
|
for(key in master_tag ){
|
|
js_auto_complete += '"'+key+'",\n';
|
|
}
|
|
|
|
console.log(master_tag);
|
|
|
|
$("#auto_complete_tag").val(js_auto_complete);
|
|
|
|
|
|
};
|
|
|
|
|
|
})(jQuery); |