diff options
author | buraq <buraq@epfl.ch> | 2003-06-24 13:27:33 +0000 |
---|---|---|
committer | buraq <buraq@epfl.ch> | 2003-06-24 13:27:33 +0000 |
commit | 8b6079a283fb4d4b32469bf293e62cdf1ca54183 (patch) | |
tree | 355cf386ca53f2bb2a017b632a48081a8bb5c827 /sources | |
parent | b8f86bb95c338986d7e0ac750e7cd13527b8a20d (diff) | |
download | scala-8b6079a283fb4d4b32469bf293e62cdf1ca54183.tar.gz scala-8b6079a283fb4d4b32469bf293e62cdf1ca54183.tar.bz2 scala-8b6079a283fb4d4b32469bf293e62cdf1ca54183.zip |
attributes
Diffstat (limited to 'sources')
-rw-r--r-- | sources/scala/xml/ScalaFactoryAdapter.scala | 55 |
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 |