AMADEUS html plain
This sketchy text is generated by AMADEUS
import java.io.*;
import java.util.*;
Javadoc
* Tehakse Skeemist HTML-plain fail
*
*@author J.Kiho
class Sketch2XmlPlain
class Sketch2XmlPlain
igas reas (ja kommentaaris):
suuremad kui 127 koodiga sümbolid
asendatakse sümbololemi viidaga;
kõik kolmikud ]]> asendatakse sümbololemite viitadega;
rida, mis sisaldab '<' või '&' ümbritsetakse
* static final String
TITLE0 =
"";
TITLE =
"
TITLE1 =
"SYSTEM 'SKM_DTD_plain.dtd'>";
TITLE2 = "";
static PrintWriter out;
globaalne muutuja faili kirjutamiseks
static void write2file (String buf)
static void writeHeader(String title)
kirjutab faili xml-i headeri
write2file(TITLE0);
write2file(TITLE);
write2file(TITLE1);
write2file(TITLE2);
static void writeFooter()
static void writeRowOrComment(String rida, String märgis)
teeb rea või kommentaari; eeldus: rida ei ole tühi
märgis = ROW või COMMENT
? rida.indexOf("<") == -1
? rida.indexOf("&") == -1
write2file("<" + märgis + ">"
+ codeForCDATA(code(rida))
+ "" + märgis + ">");
<======
write2file("<" + märgis + ">+ codeForCDATA(code(rida))
+ "]]>" + märgis + ">");
static void writePrimitiveMember(PrimitiveMember p, int level)
kirjutatakse faili lihtliige, primitiiv (kui level = -1) või nool
lihtliikme algus
? level == -999
write2file("
<======
tüüp
? p.type != 0
write2file("type=\""+str((int)(p.type))+"\"");
tase
? level != -999
write2file("level=\""+str(level)+"\"");
write2file(">");
writeText(p.text);
lihtpäise tekst
lihtliikme lõpp
? level == -999
write2file("");
<======
static void writeText(Text t)
write2file("");
teksti algus
String comm = t.comment.toString();
kommentaar
? comm.length() > 0
writeRowOrComment(comm, "COMMENT");
read
* int i = 0; i < t.rows.size(); i++
String rida = t.row(i).toString();
//milleks?
<----------
writeRowOrComment(rida, "ROW");
write2file("");
teksti lõpp
static void writeHead(Scheme s, String märgis)
kirjutame primitiivpäised faili
int n = s.head.size();
* int i = 0; i < n; i++
PrimitiveHead he = s.primitiveHead(i);
write2file("<"+ märgis + "_HEAD");
lihtpäise algus
tüüp
? he.type != 0
write2file("type=\""+str((int)(he.type))+"\"");
write2file(">");
writeText(he.text);
lihtpäise tekst
write2file(""+ märgis + "_HEAD>");
lihtpäise lõpp
static void writeSchemeStart(Scheme s, String märgis)
kirjutab faili skeemi alguse
write2file("<" + märgis);
atribuudid:
tüüp
? s.type != Scheme.SIMPLE
write2file("type=\"" + str((int)(s.type)) + "\"");
ikoon
? s.icon
write2file("icon=\"yes\"");
vaade
? s.view.type != View.SKETCHY
write2file("view=\"" + str((int)(s.view.type)) + "\"");
baas
? s.baseLanguage.type != BaseLanguage.NONE
write2file("base=\"" + str((int)(s.baseLanguage.type)) + "\"");
write2file(">");
String comm = s.comment.toString();
kommentaar
? comm.length() > 0
writeRowOrComment(comm, "COMMENT");
static void writeScheme(Scheme s)
skeemi läbivaatamine ja faili kirjutamine
String märgis = "";
kompil.
skeem või haru
? s instanceof Sketch
märgis = "SKETCH";
<======
writeSchemeStart(s, märgis);
skeemi algus
Object o;
writeHead(s, "PRIMITIVE");
skeemi primitiivpäised
* Enumeration e = s.body.elements(); e.hasMoreElements();
o = e.nextElement();
? o instanceof Scheme
writeScheme((Scheme)o);
<======
? o instanceof Arrow
int level = ((Arrow)o).level;
writePrimitiveMember((PrimitiveMember)o, level + 4);
level + 4, sest kaks skeemi sai ümber pandud
<======
writePrimitiveMember((PrimitiveMember)o, -999);
write2file("" + märgis + ">");
skeemi lõpp
static private String str(int n)
abiks
<======(new Integer(n)).toString()
static String code(String buf)
suuremad (kui 127) koodiga sümbolid
asendatakse sümbololemi viidaga
StringBuffer sbuf = new StringBuffer();
char c;
* int i = 0; i < buf.length(); i++
c = buf.charAt(i);
? ((int)c) < 128
sbuf.append(c);
<------
sbuf.append("");
sbuf.append(Integer.toString((int)c));
sbuf.append(';');
<======sbuf.toString()
static String codeForCDATA(String buf)
kõik kolmikud ]]> asendatakse sümbololemi viitadega
StringBuffer sbuf = new StringBuffer();
int k = 0;
osa algus
int i = buf.length();
osa lõpp
i = buf.substring(k).indexOf("]]>");
osa lõpp
? i == -1
sbuf.append(buf.substring(k));
<======
sbuf.append(buf.substring(k, k+i));
sbuf.append("]]>");
k += i + 3;
<======sbuf.toString()
static public void s2h (Scheme s, String fname)
parameetrid skeem s ja failinimi kuhu ta XML-iseerida
avame etteantud nimelise faili
!!
out = new PrintWriter(new FileWriter(fname));
! (IOException e)
System.err.println("Caught IOException: " + e.getMessage());
writeHeader(TITLE);
writeScheme(s);
writeFooter();
out.close();
fail kinni