Skip to content
Snippets Groups Projects
Commit 63be5587 authored by deuce's avatar deuce
Browse files

Move everything into a function named xjs_load() which can be called by xjs

files to convert another xjs file to ssjs and load() it.
parent 120bf828
No related branches found
No related tags found
No related merge requests found
......@@ -2,86 +2,99 @@
/* $Id$ */
var filename;
var xjs_filename;
if(this.http_request!=undefined) /* Requested through web-server */
filename = http_request.real_path;
xjs_filename = http_request.real_path;
else
filename = argv[0];
xjs_filename = argv[0];
var ssjs_filename=filename+".ssjs";
var last_cwd='';
// Probably a race condition on Win32
if(file_exists(ssjs_filename)) {
if(file_date(ssjs_filename)<=file_date(filename)) {
file_remove(ssjs_filename);
}
}
xjs_load(xjs_filename);
function xjs_load(filename) {
var cwd=filename;
cwd=cwd.replace(/[^\\\/]*$/,'');
if(!file_exists(ssjs_filename)) {
var file = new File(filename);
if(!file.open("r",true,8192)) {
writeln("!ERROR " + file.error + " opening " + filename);
exit();
if(last_cwd != '')
filename=last_cwd+'/'+filename;
var ssjs_filename=filename+".ssjs";
// Probably a race condition on Win32
if(file_exists(ssjs_filename)) {
if(file_date(ssjs_filename)<=file_date(filename)) {
file_remove(ssjs_filename);
}
}
var text = file.readAll(8192);
file.close();
var script="";
if(!file_exists(ssjs_filename)) {
var file = new File(filename);
if(!file.open("r",true,8192)) {
writeln("!ERROR " + file.error + " opening " + filename);
exit();
}
var text = file.readAll(8192);
file.close();
var script="";
var in_xjs=false;
for (line in text) {
var str=text[line];
while(str != '') {
if(!in_xjs) {
if(str=='<?xjs' || str=='<?') {
in_xjs=true;
str='';
var in_xjs=false;
for (line in text) {
var str=text[line];
while(str != '') {
if(!in_xjs) {
if(str=='<?xjs' || str=='<?') {
in_xjs=true;
str='';
}
else {
if(str.search(/<\?(xjs)?\s+/)==-1) {
script += "writeln("+escape_quotes(str)+");";
str='';
}
else {
str=str.replace(/^(.*?)<\?(xjs)?\s+/,
function (str, p1, p2, offset, s) {
if(p1 != '')
script += "write("+escape_quotes(p1)+");";
in_xjs=true;
return '';
}
);
}
}
}
else {
if(str.search(/<\?(xjs)?\s+/)==-1) {
script += "writeln("+escape_quotes(str)+");";
if(str.search(/\?>/)==-1) {
script += str;
str='';
}
else {
str=str.replace(/^(.*?)<\?(xjs)?\s+/,
function (str, p1, p2, offset, s) {
if(p1 != '')
script += "write("+escape_quotes(p1)+");";
in_xjs=true;
str=str.replace(/^(.*?)\?>/,
function (str, p1, offset, s) {
script += p1+";";
in_xjs=false;
return '';
}
);
}
}
}
else {
if(str.search(/\?>/)==-1) {
script += str;
str='';
}
else {
str=str.replace(/^(.*?)\?>/,
function (str, p1, offset, s) {
script += p1+";";
in_xjs=false;
return '';
}
);
}
}
script += '\n';
}
script += '\n';
}
var f=new File(ssjs_filename);
if(f.open("w",false)) {
f.write(script);
f.close();
var f=new File(ssjs_filename);
if(f.open("w",false)) {
f.write(script);
f.close();
}
}
}
load(ssjs_filename);
last_cwd=cwd;
load(ssjs_filename);
}
function escape_quotes(arg) {
return("'"+arg.replace(/'/g,"'+"+'"'+"'"+'"+'+"'")+"'");
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment