mirror of
https://github.com/revanced/revanced-patcher.git
synced 2025-05-08 16:14:25 +02:00
feat: streams overload for XmlFileHolder
This commit is contained in:
parent
c8eedac4d9
commit
6f72c4c4c0
@ -4,6 +4,8 @@ import app.revanced.patcher.data.Data
|
|||||||
import org.w3c.dom.Document
|
import org.w3c.dom.Document
|
||||||
import java.io.Closeable
|
import java.io.Closeable
|
||||||
import java.io.File
|
import java.io.File
|
||||||
|
import java.io.InputStream
|
||||||
|
import java.io.OutputStream
|
||||||
import javax.xml.parsers.DocumentBuilderFactory
|
import javax.xml.parsers.DocumentBuilderFactory
|
||||||
import javax.xml.transform.TransformerFactory
|
import javax.xml.transform.TransformerFactory
|
||||||
import javax.xml.transform.dom.DOMSource
|
import javax.xml.transform.dom.DOMSource
|
||||||
@ -17,14 +19,20 @@ class ResourceData(private val resourceCacheDirectory: File) : Data, Iterable<Fi
|
|||||||
override fun iterator() = resourceCacheDirectory.walkTopDown().iterator()
|
override fun iterator() = resourceCacheDirectory.walkTopDown().iterator()
|
||||||
|
|
||||||
inner class XmlFileHolder {
|
inner class XmlFileHolder {
|
||||||
|
operator fun get(inputStream: InputStream, outputStream: OutputStream) =
|
||||||
|
DomFileEditor(inputStream, outputStream)
|
||||||
|
|
||||||
operator fun get(path: String) = DomFileEditor(this@ResourceData[path])
|
operator fun get(path: String) = DomFileEditor(this@ResourceData[path])
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
class DomFileEditor internal constructor(private val domFile: File) : Closeable {
|
class DomFileEditor internal constructor(inputStream: InputStream, private val outputStream: OutputStream) : Closeable {
|
||||||
val file: Document = DocumentBuilderFactory.newInstance().newDocumentBuilder()
|
constructor(file: File) : this(file.inputStream(), file.outputStream())
|
||||||
.parse(domFile).also(Document::normalize)
|
|
||||||
|
val file: Document =
|
||||||
|
DocumentBuilderFactory.newInstance().newDocumentBuilder().parse(inputStream).also(Document::normalize)
|
||||||
|
|
||||||
|
override fun close() =
|
||||||
|
TransformerFactory.newInstance().newTransformer().transform(DOMSource(file), StreamResult(outputStream))
|
||||||
|
|
||||||
override fun close() = TransformerFactory.newInstance().newTransformer()
|
|
||||||
.transform(DOMSource(file), StreamResult(domFile.outputStream()))
|
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user