summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorburaq <buraq@epfl.ch>2003-06-24 13:27:33 +0000
committerburaq <buraq@epfl.ch>2003-06-24 13:27:33 +0000
commit8b6079a283fb4d4b32469bf293e62cdf1ca54183 (patch)
tree355cf386ca53f2bb2a017b632a48081a8bb5c827
parentb8f86bb95c338986d7e0ac750e7cd13527b8a20d (diff)
downloadscala-8b6079a283fb4d4b32469bf293e62cdf1ca54183.tar.gz
scala-8b6079a283fb4d4b32469bf293e62cdf1ca54183.tar.bz2
scala-8b6079a283fb4d4b32469bf293e62cdf1ca54183.zip
attributes
-rw-r--r--sources/scala/xml/ScalaFactoryAdapter.scala55
1 files changed, 55 insertions, 0 deletions
diff --git a/sources/scala/xml/ScalaFactoryAdapter.scala b/sources/scala/xml/ScalaFactoryAdapter.scala
new file mode 100644
index 0000000000..00c29a0088
--- /dev/null
+++ b/sources/scala/xml/ScalaFactoryAdapter.scala
@@ -0,0 +1,55 @@
+package scala.xml ;
+
+import scala.xml.javaAdapter.Map ;
+import scala.xml.javaAdapter.HashMap ;
+
+abstract class ScalaFactoryAdapter
+ extends scala.xml.FactoryAdapter() {
+
+ def iterToList[ a ]( iter:java.util.Iterator ):List[a] =
+ if( !iter.hasNext() )
+ Nil
+ else
+ (iter.next() as a )::iterToList( iter ) ;
+
+
+ def mapToMap[a,b]( map:java.util.Map ):Map[a,b] = {
+
+ val keys:java.util.Iterator = map.keySet().iterator();
+ val res = new HashMap[a,b] ;
+
+ def iterToMap:Unit =
+ if( keys.hasNext() ) {
+ val key = keys.next();
+ val value = map.get( key ) as b ;
+ res.put( key as a , value as b );
+ iterToMap
+ } else
+ () ;
+
+ iterToMap;
+ res
+ }
+
+
+ val f: Map[ String, List[Element] => Element ];
+
+ val g: Map[ String, Boolean ] ;
+
+ def elementContainsText( name:String ):Boolean =
+ g.get( name ) ;
+
+ def createElement(elemName:String,
+ attribs:java.util.Map,
+ children:java.util.Iterator ):scala.Object = {
+ val c = f.get( elemName ); // constructor
+ val el = c( iterToList[Element]( children ) );
+ el.setAttribs( mapToMap[String,String]( attribs ) );
+ el
+ }
+
+ def createPCDATA( text:String ):scala.Object = {
+ new PCDATA( text );
+ };
+
+} // ScalaFactoryAdapter