diff --git a/src/main/kotlin/app/revanced/patcher/data/impl/ResourceData.kt b/src/main/kotlin/app/revanced/patcher/data/impl/ResourceData.kt index c02b031..3b9c52f 100644 --- a/src/main/kotlin/app/revanced/patcher/data/impl/ResourceData.kt +++ b/src/main/kotlin/app/revanced/patcher/data/impl/ResourceData.kt @@ -9,13 +9,20 @@ import javax.xml.transform.TransformerFactory import javax.xml.transform.dom.DOMSource import javax.xml.transform.stream.StreamResult -class ResourceData(private val resourceCacheDirectory: File) : Data { - private fun resolve(path: String) = resourceCacheDirectory.resolve(path) +class ResourceData(private val resourceCacheDirectory: File) : Data, Iterable { + operator fun get(path: String) = resourceCacheDirectory.resolve(path) + val xmlEditor = XmlFileHolder() + override fun iterator() = resourceCacheDirectory.walkTopDown().iterator() - fun forEach(action: (File) -> Unit) = resourceCacheDirectory.walkTopDown().forEach(action) - fun get(path: String) = resolve(path) + inner class XmlFileHolder { + operator fun get(path: String) = DomFileEditor(this@ResourceData[path]) + } - fun getXmlEditor(path: String) = DomFileEditor(resolve(path)) + @Deprecated("Use operator getter instead of resolve function", ReplaceWith("get(path)")) + fun resolve(path: String) = get(path) + + @Deprecated("Use operator getter on xmlEditor instead of getXmlEditor function", ReplaceWith("xmlEditor[path]")) + fun getXmlEditor(path: String) = xmlEditor[path] } class DomFileEditor internal constructor(private val domFile: File) : Closeable { diff --git a/src/test/kotlin/app/revanced/patcher/usage/resource/patch/ExampleResourcePatch.kt b/src/test/kotlin/app/revanced/patcher/usage/resource/patch/ExampleResourcePatch.kt index 3d0f33f..ca2c195 100644 --- a/src/test/kotlin/app/revanced/patcher/usage/resource/patch/ExampleResourcePatch.kt +++ b/src/test/kotlin/app/revanced/patcher/usage/resource/patch/ExampleResourcePatch.kt @@ -18,8 +18,8 @@ import org.w3c.dom.Element @Version("0.0.1") class ExampleResourcePatch : ResourcePatch() { override fun execute(data: ResourceData): PatchResult { - data.getXmlEditor("AndroidManifest.xml").use { domFileEditor -> - val element = domFileEditor // regular DomFileEditor + data.xmlEditor["AndroidManifest.xml"].use { editor -> + val element = editor // regular DomFileEditor .file .getElementsByTagName("application") .item(0) as Element