|  | @@ -8,18 +8,31 @@ JTALK=`dirname ${0}`/..
 | 
	
		
			
				|  |  |  USAGE="Usage: $0 [-r] file1 file2 ... file3 Program
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |     Will compile a JTalk program into a single javascript file called
 | 
	
		
			
				|  |  | -   Program.js (last argument) by concatenating listed files using these rules:
 | 
	
		
			
				|  |  | +   <Program>.js by concatenating listed files using these rules:
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |       *.js files are concatenated as is. If not found we look in $JTALK/js
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |       *.st files are compiled into .js files. If not found we look in $JTALK/st.
 | 
	
		
			
				|  |  | -     Each file is considered to be a fileout of a single class category of
 | 
	
		
			
				|  |  | -     the same name as the file.
 | 
	
		
			
				|  |  | +     Each file is currently considered to be a fileout of a single class
 | 
	
		
			
				|  |  | +     category of the same name as the file.
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |       NOTE: boot.js and Kernel.js is always added first and init.js
 | 
	
		
			
				|  |  |       is always added last. Finally main.js is added if found.
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |       If -r is used we also run node with the resulting Program.js.
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +     Example invocations:
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +     Compile Hello.st to Hello.js and create
 | 
	
		
			
				|  |  | +     complete program called Program.js:
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        ntalkc Hello.st Program
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +     Compile two different class categories into corresponding .js files,
 | 
	
		
			
				|  |  | +     link with two existing javascript libraries and create complete
 | 
	
		
			
				|  |  | +     program called Program.js:
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        ntalkc lib1.js lib2.js CategoryOne.st CategoryTwo.st Program
 | 
	
		
			
				|  |  |  "
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  if [ "$#" == "0" ]; then
 | 
	
	
		
			
				|  | @@ -77,6 +90,7 @@ done
 | 
	
		
			
				|  |  |  cat $JTALK/js/boot.js $JTALK/js/Kernel.js $JTALK/js/Parser.js $JTALK/js/Compiler.js $JTALK/js/init.js $JTALK/nodejs/nodecompile.js > $TMPDIR/compiler-all.js
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  # Compile all collected .st files to .js
 | 
	
		
			
				|  |  | +echo "Compiling$COMPILED ..."
 | 
	
		
			
				|  |  |  node $TMPDIR/compiler-all.js $COMPILE
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  # Verify all .js files corresponding .st files were created, otherwise exit
 | 
	
	
		
			
				|  | @@ -89,20 +103,36 @@ do
 | 
	
		
			
				|  |  |    fi 
 | 
	
		
			
				|  |  |  done
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +# We must have these first...
 | 
	
		
			
				|  |  | +echo "Adding boot.js and Kernel.js ..."
 | 
	
		
			
				|  |  | +BOOT="$JTALK/js/boot.js $JTALK/js/Kernel.js"
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |  # Compose the complete libs.js file from collected .js filenames.
 | 
	
		
			
				|  |  |  if [ -n "$LIBS" ]; then
 | 
	
		
			
				|  |  | -  echo "LIBS $LIBS"
 | 
	
		
			
				|  |  | +  echo "Adding libraries $LIBS ..."
 | 
	
		
			
				|  |  |    cat $LIBS > $TMPDIR/libs.js
 | 
	
		
			
				|  |  |    LIBS=$TMPDIR/libs.js
 | 
	
		
			
				|  |  |  fi
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +# Check for init.js
 | 
	
		
			
				|  |  | +if [ -f "init.js" ]; then
 | 
	
		
			
				|  |  | +  echo "Adding init.js ..."
 | 
	
		
			
				|  |  | +  INIT="init.js"
 | 
	
		
			
				|  |  | +else
 | 
	
		
			
				|  |  | +  echo "Adding $JTALK/js/init.js ..."
 | 
	
		
			
				|  |  | +  INIT=$JTALK/js/init.js
 | 
	
		
			
				|  |  | +fi
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |  # Check for main.js
 | 
	
		
			
				|  |  |  if [ -f "main.js" ]; then
 | 
	
		
			
				|  |  | +  echo "Adding main.js ..."
 | 
	
		
			
				|  |  |    MAIN="main.js"
 | 
	
		
			
				|  |  |  fi
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  # And finally concatenate Program.js
 | 
	
		
			
				|  |  | -cat $JTALK/js/boot.js $JTALK/js/Kernel.js $LIBS $COMPILED $JTALK/js/init.js $MAIN > $PROGRAM.js
 | 
	
		
			
				|  |  | +echo "Writing $PROGRAM.js ..."
 | 
	
		
			
				|  |  | +cat $BOOT $LIBS $COMPILED $INIT $MAIN > $PROGRAM.js
 | 
	
		
			
				|  |  | +echo "Done."
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  # Optionally run Program and give all args left to it
 | 
	
		
			
				|  |  |  if [ -n "$RUN" ]; then
 |