gzz-commits
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Gzz-commits] alph/org/nongnu/alph impl/ScrollBlockManager.ja...


From: Tuomas J. Lukka
Subject: [Gzz-commits] alph/org/nongnu/alph impl/ScrollBlockManager.ja...
Date: Sun, 06 Apr 2003 06:56:00 -0400

CVSROOT:        /cvsroot/alph
Module name:    alph
Changes by:     Tuomas J. Lukka <address@hidden>        03/04/06 06:55:59

Modified files:
        org/nongnu/alph/impl: ScrollBlockManager.java 
        org/nongnu/alph/xml: SpanReader.java SpanSerializer.java 
                             serialization.test 

Log message:
        Make serialization work with urn5 spans

CVSWeb URLs:
http://savannah.gnu.org/cgi-bin/viewcvs/alph/alph/org/nongnu/alph/impl/ScrollBlockManager.java.diff?tr1=1.2&tr2=1.3&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/alph/alph/org/nongnu/alph/xml/SpanReader.java.diff?tr1=1.3&tr2=1.4&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/alph/alph/org/nongnu/alph/xml/SpanSerializer.java.diff?tr1=1.3&tr2=1.4&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/alph/alph/org/nongnu/alph/xml/serialization.test.diff?tr1=1.4&tr2=1.5&r1=text&r2=text

Patches:
Index: alph/org/nongnu/alph/impl/ScrollBlockManager.java
diff -u alph/org/nongnu/alph/impl/ScrollBlockManager.java:1.2 
alph/org/nongnu/alph/impl/ScrollBlockManager.java:1.3
--- alph/org/nongnu/alph/impl/ScrollBlockManager.java:1.2       Sun Apr  6 
04:24:06 2003
+++ alph/org/nongnu/alph/impl/ScrollBlockManager.java   Sun Apr  6 06:55:59 2003
@@ -40,7 +40,7 @@
  */
 
 public class ScrollBlockManager {
-String rcsid = "$Id: ScrollBlockManager.java,v 1.2 2003/04/06 08:24:06 tjl Exp 
$";
+String rcsid = "$Id: ScrollBlockManager.java,v 1.3 2003/04/06 10:55:59 tjl Exp 
$";
     public static boolean dbg = false;
     final static void p(String s) { if(dbg) System.out.println(s); }
     final static void pa(String s) { System.out.println(s); }
@@ -191,7 +191,7 @@
 
     }
 
-    static class SimpleTextSpan extends Span1DBase
+    static public class SimpleTextSpan extends Span1DBase
                                implements TextSpan, java.io.Serializable {
        SimpleTextSpan(TextScrollBlock sb, int offs0, int offs1) {
            super((MediaserverScrollBlock)sb, offs0, offs1);
Index: alph/org/nongnu/alph/xml/SpanReader.java
diff -u alph/org/nongnu/alph/xml/SpanReader.java:1.3 
alph/org/nongnu/alph/xml/SpanReader.java:1.4
--- alph/org/nongnu/alph/xml/SpanReader.java:1.3        Sun Apr  6 01:56:08 2003
+++ alph/org/nongnu/alph/xml/SpanReader.java    Sun Apr  6 06:55:59 2003
@@ -40,6 +40,11 @@
            int e = Integer.parseInt(attributes.getValue("e"));
            spans.add(((TextScrollBlock)(scrollBlockFactory.getScrollBlock(b)))
                . getSpan(s, e));
+       } else if(qName.equals("uts")) {
+           String b = attributes.getValue("b");
+           int o = Integer.parseInt(attributes.getValue("o"));
+           String t = attributes.getValue("t");
+           spans.add(new org.nongnu.alph.impl.URN5TextSpan(b, o, t));
        } else {
            throw new Error("Unknown element '"+localName+"'");
        }
Index: alph/org/nongnu/alph/xml/SpanSerializer.java
diff -u alph/org/nongnu/alph/xml/SpanSerializer.java:1.3 
alph/org/nongnu/alph/xml/SpanSerializer.java:1.4
--- alph/org/nongnu/alph/xml/SpanSerializer.java:1.3    Sun Apr  6 01:56:08 2003
+++ alph/org/nongnu/alph/xml/SpanSerializer.java        Sun Apr  6 06:55:59 2003
@@ -10,14 +10,35 @@
 
 public class SpanSerializer {
 
+    public static String escapeXML(String s) {
+       StringBuffer buf = new StringBuffer();
+       for(int i=0; i<s.length(); i++) {
+           switch(s.charAt(i)) {
+               case '&': buf.append("&amp;"); break;
+               case '<': buf.append("&lt;"); break;
+               case '>': buf.append("&gt;"); break;
+               case '\'': buf.append("&apos;"); break;
+               case '\"': buf.append("&quot;"); break;
+               default:
+                         buf.append(s.charAt(i)); break;
+           }
+       }
+       return buf.toString();
+    }
+
     public String namespace;
 
     public String span2xml(Span s0) {
-       if(s0 instanceof TextSpan) {
+       if(s0 instanceof org.nongnu.alph.impl.URN5TextSpan) {
+           org.nongnu.alph.impl.URN5TextSpan t = 
(org.nongnu.alph.impl.URN5TextSpan)s0;
+           return "<uts b=\""+t.getScrollId()+
+                   "\" o=\""+t.offset()+
+                   "\" t=\""+escapeXML(t.getText())+"\"/>";
+       } else if(s0 instanceof TextSpan) {
            TextSpan s = (TextSpan)s0;
            return "<" + (namespace == null ? "" : 
                                              namespace+":") +
-                       "ts b=\""+s.getScrollBlock().getID()+
+                       "ts b=\""+s.getScrollId()+
                        "\" s=\""+s.offset()+
                        "\" e=\""+(s.offset()+s.length())+"\"/>";
        } else {
Index: alph/org/nongnu/alph/xml/serialization.test
diff -u alph/org/nongnu/alph/xml/serialization.test:1.4 
alph/org/nongnu/alph/xml/serialization.test:1.5
--- alph/org/nongnu/alph/xml/serialization.test:1.4     Sun Apr  6 01:56:08 2003
+++ alph/org/nongnu/alph/xml/serialization.test Sun Apr  6 06:55:59 2003
@@ -17,8 +17,10 @@
        return self.s
     def length(self):
        return self.e-self.s
-    def getScrollBlock(self):
-       return self.sb
+    def getScrollId(self):
+       return self.sb.getID()
+    def toString(self):
+       return "[Fake span]"
 
 class Sb(alph.TextScrollBlock):
     def __init__(self, id):
@@ -84,4 +86,15 @@
     list = r.getSpans()
     failUnlessEqual(list.size(), 2)
 
+def testURN5():
+    """See that reading and writing URN-5 spans works
+    """
+    r = SpanReader()
+    str = """<uts b="Q" o="5" t="foo&amp;bar"/>"""
+    parseString(str, r)
+    sp = r.getSpans()[0]
+    failUnlessEqual(sp.getScrollId(), "Q")
+    failUnlessEqual(sp.offset(), 5)
+    failUnlessEqual(sp.getText(), "foo&bar")
 
+    failUnlessEqual(SpanSerializer().span2xml(sp), str)




reply via email to

[Prev in Thread] Current Thread [Next in Thread]