decl.scala

来自「JAVA 语言的函数式编程扩展」· SCALA 代码 · 共 173 行

SCALA
173
字号
/*                     __                                               *\ **     ________ ___   / /  ___     Scala API                            ** **    / __/ __// _ | / /  / _ |    (c) 2003-2008, LAMP/EPFL             ** **  __\ \/ /__/ __ |/ /__/ __ |    http://www.scala-lang.org/           ** ** /____/\___/_/ |_/____/_/ | |                                         ** **                          |/                                          ** \*                                                                      */// $Id: Decl.scala 13898 2008-02-06 10:43:23Z michelou $package scala.xml.dtdabstract class Decl;abstract class MarkupDecl extends Decl {  def toString(sb: StringBuilder): StringBuilder}/** an element declaration  */case class ElemDecl(name: String, contentModel: ContentModel) extends MarkupDecl with DtdTypeSymbol {    //def mixed  = ; // to do   override def toString(sb: StringBuilder): StringBuilder = {    sb    .append("<!ELEMENT ")    .append(name)    .append(' ');    ContentModel.toString(contentModel, sb);    sb.append('>');  }} // ElemDecl case class AttListDecl(name: String, attrs:List[AttrDecl]) extends MarkupDecl with DtdTypeSymbol {  override def toString(sb: StringBuilder): StringBuilder = {    sb    .append("<!ATTLIST ")    .append(name)    .append('\n')    .append(attrs.mkString("","\n",">"));  }}/** an attribute declaration. at this point, the tpe is a string. Future *  versions might provide a way to access the attribute types more *  directly. */case class AttrDecl(name: String, tpe: String, default: DefaultDecl) {  override def toString(): String =     toString(new StringBuilder()).toString(); def toString(sb: StringBuilder): StringBuilder = {    sb.append("  ").append( name ).append(' ').append( tpe ).append(' ');    default.toString(sb)  }}/** an entity declaration */abstract class EntityDecl extends MarkupDecl; /** a parsed general entity declaration */case class ParsedEntityDecl(name: String, entdef: EntityDef) extends EntityDecl {  override def toString(sb: StringBuilder): StringBuilder = {    sb.append("<!ENTITY ").append( name ).append(' ');    entdef.toString(sb).append('>');  }}/** a parameter entity declaration */case class ParameterEntityDecl(name: String, entdef: EntityDef) extends EntityDecl {  override def toString(sb: StringBuilder): StringBuilder = {    sb.append("<!ENTITY % ").append( name ).append(' ');    entdef.toString(sb).append('>');  }}/** an unparsed entity declaration */case class UnparsedEntityDecl( name:String, extID:ExternalID, notation:String ) extends EntityDecl {  override def toString(sb: StringBuilder): StringBuilder = {    sb.append("<!ENTITY ").append( name ).append(' ');    extID.toString(sb).append(" NDATA ").append(notation).append('>');  }}/** a notation declaration */case class NotationDecl( name:String, extID:ExternalID ) extends MarkupDecl {  override def toString(sb: StringBuilder): StringBuilder = {    sb.append("<!NOTATION ").append( name ).append(' ');    extID.toString(sb);  }}abstract class EntityDef {  def toString(sb: StringBuilder): StringBuilder}case class IntDef(value:String) extends EntityDef {  private def validateValue() {    var tmp = value;    var ix  = tmp.indexOf('%');    while( ix != -1) {      val iz = tmp.indexOf(';', ix);      if(iz == -1 && iz == ix + 1)        throw new IllegalArgumentException("no % allowed in entity value, except for parameter-entity-references");      else {        val n = tmp.substring(ix, iz);        if( !Utility.isName( n ))           throw new IllegalArgumentException("interal entity def: \""+n+"\" must be an XML Name");        tmp = tmp.substring(iz+1, tmp.length());        ix  = tmp.indexOf('%');      }    }  }  validateValue();  override def toString(sb: StringBuilder): StringBuilder =     Utility.appendQuoted(value, sb);}case class ExtDef(extID:ExternalID) extends EntityDef {  override def toString(sb: StringBuilder): StringBuilder =     extID.toString(sb);}/** a parsed entity reference */case class PEReference(ent:String) extends MarkupDecl {  if( !Utility.isName( ent ))     throw new IllegalArgumentException("ent must be an XML Name");    override def toString(sb: StringBuilder): StringBuilder =     sb.append('%').append(ent).append(';');}// default declarations for attributesabstract class DefaultDecl {  override def toString(): String  def toString(sb: StringBuilder): StringBuilder}case object REQUIRED extends DefaultDecl {  override def toString(): String = "#REQUIRED"  override def toString(sb: StringBuilder) = sb.append("#REQUIRED")}case object IMPLIED extends DefaultDecl {  override def toString(): String = "#IMPLIED"  override def toString(sb: StringBuilder) = sb.append("#IMPLIED")}case class DEFAULT(fixed: Boolean, attValue:String) extends DefaultDecl {  override def toString(): String =     toString(new StringBuilder()).toString();  override def toString(sb: StringBuilder): StringBuilder = {    if (fixed) sb.append("#FIXED ")    Utility.appendEscapedQuoted(attValue, sb)  }}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?