src/Pure/General/json_api.scala
changeset 74963 29dfe75c058b
parent 74962 2c9c4ad4c816
child 75393 87ebf5a50283
equal deleted inserted replaced
74962:2c9c4ad4c816 74963:29dfe75c058b
    46       }
    46       }
    47     def check_data: Data = check.get_data getOrElse api_error("missing data")
    47     def check_data: Data = check.get_data getOrElse api_error("missing data")
    48     def check_resource: Resource = check_data.resource
    48     def check_resource: Resource = check_data.resource
    49     def check_resources: List[Resource] = check_data.resources
    49     def check_resources: List[Resource] = check_data.resources
    50 
    50 
       
    51     def iterator: Iterator[Root] =
       
    52     {
       
    53       val init = Some(this)
       
    54       new Iterator[Root] {
       
    55         private var state: Option[Root] = init
       
    56         def hasNext: Boolean = state.nonEmpty
       
    57         def next(): Root =
       
    58           state match {
       
    59             case None => Iterator.empty.next()
       
    60             case Some(res) =>
       
    61               state = res.get_next.map(_.get_root())
       
    62               res
       
    63           }
       
    64       }
       
    65     }
       
    66     def iterator_data: Iterator[Data] = iterator.map(_.check_data)
       
    67     def iterator_resource: Iterator[Resource] = iterator.map(_.check_resource)
       
    68     def iterator_resources: Iterator[Resource] = iterator.flatMap(_.check_resources)
       
    69 
    51     override def toString: String = "Root(" + (if (ok) "ok" else "errors") + ")"
    70     override def toString: String = "Root(" + (if (ok) "ok" else "errors") + ")"
    52   }
    71   }
    53 
    72 
    54   sealed case class Links(json: JSON.T)
    73   sealed case class Links(json: JSON.T)
    55   {
    74   {