finalclass Digest private[SHA1](rep: String) { overridedef toString: String = rep overridedef hashCode: Int = rep.hashCode overridedef equals(that: Any): Boolean =
that match { case other: Digest => rep == other.toString case _ => false
} def base64: String = Base64.encode(HexFormat.of().parseHex(rep))
}
def fake_digest(rep: String): Digest = new Digest(rep)
def make_digest(body: MessageDigest => Unit): Digest = { val digest_body = new Setup_Build.Digest_Body { def apply(sha: MessageDigest): Unit = body(sha)} new Digest(Setup_Build.make_digest(digest_body))
}
val digest_empty: Digest = make_digest(_ => ()) def digest_length: Int = digest_empty.toString.length
def digest(file: JFile): Digest =
make_digest(sha => using(new FileInputStream(file)) { stream => val buf = new Array[Byte](65536) var m = 0 while ({
m = stream.read(buf, 0, buf.length) if (m != -1) sha.update(buf, 0, m)
m != -1
}) ()
})
finalclass Shasum private[SHA1](private[SHA1] val rep: List[String]) { overridedef equals(other: Any): Boolean =
other match { case that: Shasum => rep.equals(that.rep) case _ => false
} overridedef hashCode: Int = rep.hashCode overridedef toString: String = Library.terminate_lines(rep)
def is_empty: Boolean = rep.isEmpty
def - (other: Shasum): Shasum = new Shasum(rep.filterNot(other.rep.toSet.contains))
def :::(other: Shasum): Shasum = new Shasum(other.rep ::: rep)
def filter(pred: String => Boolean): Shasum = new Shasum(rep.filter(pred))
def digest: Digest = {
rep match { case List(s) if s.length == digest_length && s.forall(Symbol.is_ascii_hex) => fake_digest(s) case _ => SHA1.digest(toString)
}
}
}
val no_shasum: Shasum = new Shasum(Nil) def flat_shasum(list: List[Shasum]): Shasum = new Shasum(list.flatMap(_.rep)) def fake_shasum(text: String): Shasum = new Shasum(Library.trim_split_lines(text))
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung ist noch experimentell.