From 75047e26e2d0deeca622d406e456837121bac680 Mon Sep 17 00:00:00 2001 From: WerWolv Date: Tue, 13 Sep 2022 23:48:47 +0200 Subject: [PATCH] feat: Added various new Copy as... options --- .../source/content/data_formatters.cpp | 35 +++++++++++++++++-- plugins/builtin/source/lang/de_DE.cpp | 8 ++++- plugins/builtin/source/lang/en_US.cpp | 8 ++++- plugins/builtin/source/lang/it_IT.cpp | 8 ++++- plugins/builtin/source/lang/ja_JP.cpp | 8 ++++- plugins/builtin/source/lang/ko_KR.cpp | 8 ++++- plugins/builtin/source/lang/pt_BR.cpp | 8 ++++- plugins/builtin/source/lang/zh_CN.cpp | 8 ++++- plugins/builtin/source/lang/zh_TW.cpp | 8 ++++- 9 files changed, 89 insertions(+), 10 deletions(-) diff --git a/plugins/builtin/source/content/data_formatters.cpp b/plugins/builtin/source/content/data_formatters.cpp index b49cd161d..3e0b560a8 100644 --- a/plugins/builtin/source/content/data_formatters.cpp +++ b/plugins/builtin/source/content/data_formatters.cpp @@ -3,6 +3,7 @@ #include #include #include +#include namespace hex::plugin::builtin { @@ -19,13 +20,14 @@ namespace hex::plugin::builtin { reader.seek(offset); reader.setEndAddress(offset + size); + u64 index = 0x00; for (u8 byte : reader) { - if ((offset % LineLength) == 0x00) + if ((index % LineLength) == 0x00) result += NewLineIndent; result += hex::format(byteFormat, byte); - offset++; + index++; } // Remove trailing comma @@ -69,6 +71,35 @@ namespace hex::plugin::builtin { return formatLanguageArray(provider, offset, size, "const data = new Uint8Array([", "0x{0:02X}, ", "]);"); }); + ContentRegistry::DataFormatter::add("hex.builtin.view.hex_editor.copy.lua", [](prv::Provider *provider, u64 offset, size_t size) { + return formatLanguageArray(provider, offset, size, "data = {", "0x{0:02X}, ", "}"); + }); + + ContentRegistry::DataFormatter::add("hex.builtin.view.hex_editor.copy.go", [](prv::Provider *provider, u64 offset, size_t size) { + return formatLanguageArray(provider, offset, size, "data := [...]byte {", "0x{0:02X}, ", "}"); + }); + + ContentRegistry::DataFormatter::add("hex.builtin.view.hex_editor.copy.crystal", [](prv::Provider *provider, u64 offset, size_t size) { + return formatLanguageArray(provider, offset, size, "data = [", "0x{0:02X}, ", "] of UInt8"); + }); + + ContentRegistry::DataFormatter::add("hex.builtin.view.hex_editor.copy.swift", [](prv::Provider *provider, u64 offset, size_t size) { + return formatLanguageArray(provider, offset, size, "let data: [Uint8] = [", "0x{0:02X}, ", "]"); + }); + + ContentRegistry::DataFormatter::add("hex.builtin.view.hex_editor.copy.pascal", [](prv::Provider *provider, u64 offset, size_t size) { + return formatLanguageArray(provider, offset, size, hex::format("data: array[0..{0}] of Byte = (", size - 1), "${0:02X}, ", ")"); + }); + + ContentRegistry::DataFormatter::add("hex.builtin.view.hex_editor.copy.base64", [](prv::Provider *provider, u64 offset, size_t size) { + std::vector data(size, 0x00); + provider->read(offset, data.data(), size); + + auto result = crypt::encode64(data); + + return std::string(result.begin(), result.end()); + }); + ContentRegistry::DataFormatter::add("hex.builtin.view.hex_editor.copy.ascii", [](prv::Provider *provider, u64 offset, size_t size) { constexpr static auto HeaderLine = "Hex View 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F\n"; std::string result; diff --git a/plugins/builtin/source/lang/de_DE.cpp b/plugins/builtin/source/lang/de_DE.cpp index 40d16b882..170cba9c7 100644 --- a/plugins/builtin/source/lang/de_DE.cpp +++ b/plugins/builtin/source/lang/de_DE.cpp @@ -293,7 +293,13 @@ namespace hex::plugin::builtin { { "hex.builtin.view.hex_editor.copy.python", "Python Array" }, { "hex.builtin.view.hex_editor.copy.java", "Java Array" }, { "hex.builtin.view.hex_editor.copy.js", "JavaScript Array" }, - { "hex.builtin.view.hex_editor.copy.ascii", "ASCII Art" }, + { "hex.builtin.view.hex_editor.copy.lua", "Lua Array" }, + { "hex.builtin.view.hex_editor.copy.go", "Go Array" }, + { "hex.builtin.view.hex_editor.copy.crystal", "Crystal Array" }, + { "hex.builtin.view.hex_editor.copy.swift", "Swift Array" }, + { "hex.builtin.view.hex_editor.copy.pascal", "Pascal Array" }, + { "hex.builtin.view.hex_editor.copy.base64", "Base64" }, + { "hex.builtin.view.hex_editor.copy.ascii", "Text Area" }, { "hex.builtin.view.hex_editor.copy.html", "HTML" }, { "hex.builtin.view.hex_editor.menu.edit.paste", "Einfügen" }, { "hex.builtin.view.hex_editor.menu.edit.select_all", "Alles auswählen" }, diff --git a/plugins/builtin/source/lang/en_US.cpp b/plugins/builtin/source/lang/en_US.cpp index e121dc3a8..c0fca7729 100644 --- a/plugins/builtin/source/lang/en_US.cpp +++ b/plugins/builtin/source/lang/en_US.cpp @@ -297,7 +297,13 @@ namespace hex::plugin::builtin { { "hex.builtin.view.hex_editor.copy.python", "Python Array" }, { "hex.builtin.view.hex_editor.copy.java", "Java Array" }, { "hex.builtin.view.hex_editor.copy.js", "JavaScript Array" }, - { "hex.builtin.view.hex_editor.copy.ascii", "ASCII Art" }, + { "hex.builtin.view.hex_editor.copy.lua", "Lua Array" }, + { "hex.builtin.view.hex_editor.copy.go", "Go Array" }, + { "hex.builtin.view.hex_editor.copy.crystal", "Crystal Array" }, + { "hex.builtin.view.hex_editor.copy.swift", "Swift Array" }, + { "hex.builtin.view.hex_editor.copy.pascal", "Pascal Array" }, + { "hex.builtin.view.hex_editor.copy.base64", "Base64" }, + { "hex.builtin.view.hex_editor.copy.ascii", "Text Area" }, { "hex.builtin.view.hex_editor.copy.html", "HTML" }, { "hex.builtin.view.hex_editor.menu.edit.paste", "Paste" }, { "hex.builtin.view.hex_editor.menu.edit.select_all", "Select all" }, diff --git a/plugins/builtin/source/lang/it_IT.cpp b/plugins/builtin/source/lang/it_IT.cpp index 5b2b0f6d3..0b664c8a3 100644 --- a/plugins/builtin/source/lang/it_IT.cpp +++ b/plugins/builtin/source/lang/it_IT.cpp @@ -298,7 +298,13 @@ namespace hex::plugin::builtin { { "hex.builtin.view.hex_editor.copy.python", "Python Array" }, { "hex.builtin.view.hex_editor.copy.java", "Java Array" }, { "hex.builtin.view.hex_editor.copy.js", "JavaScript Array" }, - { "hex.builtin.view.hex_editor.copy.ascii", "ASCII Art" }, + { "hex.builtin.view.hex_editor.copy.lua", "Lua Array" }, + { "hex.builtin.view.hex_editor.copy.go", "Go Array" }, + { "hex.builtin.view.hex_editor.copy.crystal", "Crystal Array" }, + { "hex.builtin.view.hex_editor.copy.swift", "Swift Array" }, + { "hex.builtin.view.hex_editor.copy.pascal", "Pascal Array" }, + { "hex.builtin.view.hex_editor.copy.base64", "Base64" }, + //{ "hex.builtin.view.hex_editor.copy.ascii", "Text Area" }, { "hex.builtin.view.hex_editor.copy.html", "HTML" }, { "hex.builtin.view.hex_editor.menu.edit.paste", "Incolla" }, { "hex.builtin.view.hex_editor.menu.edit.select_all", "Seleziona tutti" }, diff --git a/plugins/builtin/source/lang/ja_JP.cpp b/plugins/builtin/source/lang/ja_JP.cpp index 2f29d6a66..a0858e73f 100644 --- a/plugins/builtin/source/lang/ja_JP.cpp +++ b/plugins/builtin/source/lang/ja_JP.cpp @@ -297,7 +297,13 @@ namespace hex::plugin::builtin { { "hex.builtin.view.hex_editor.copy.python", "Python 配列" }, { "hex.builtin.view.hex_editor.copy.java", "Java 配列" }, { "hex.builtin.view.hex_editor.copy.js", "JavaScript 配列" }, - { "hex.builtin.view.hex_editor.copy.ascii", "アスキーアート" }, + { "hex.builtin.view.hex_editor.copy.lua", "Lua 配列" }, + { "hex.builtin.view.hex_editor.copy.go", "Go 配列" }, + { "hex.builtin.view.hex_editor.copy.crystal", "Crystal 配列" }, + { "hex.builtin.view.hex_editor.copy.swift", "Swift 配列" }, + { "hex.builtin.view.hex_editor.copy.pascal", "Pascal 配列" }, + { "hex.builtin.view.hex_editor.copy.base64", "Base64" }, + //{ "hex.builtin.view.hex_editor.copy.ascii", "Text Area" }, { "hex.builtin.view.hex_editor.copy.html", "HTML" }, { "hex.builtin.view.hex_editor.menu.edit.paste", "貼り付け" }, { "hex.builtin.view.hex_editor.menu.edit.select_all", "すべて選択" }, diff --git a/plugins/builtin/source/lang/ko_KR.cpp b/plugins/builtin/source/lang/ko_KR.cpp index c3c01223e..c9391fae6 100644 --- a/plugins/builtin/source/lang/ko_KR.cpp +++ b/plugins/builtin/source/lang/ko_KR.cpp @@ -296,7 +296,13 @@ namespace hex::plugin::builtin { { "hex.builtin.view.hex_editor.copy.python", "Python 배열" }, { "hex.builtin.view.hex_editor.copy.java", "Java 배열" }, { "hex.builtin.view.hex_editor.copy.js", "JavaScript 배열" }, - { "hex.builtin.view.hex_editor.copy.ascii", "ASCII 아트" }, + { "hex.builtin.view.hex_editor.copy.lua", "Lua 배열" }, + { "hex.builtin.view.hex_editor.copy.go", "Go 배열" }, + { "hex.builtin.view.hex_editor.copy.crystal", "Crystal 배열" }, + { "hex.builtin.view.hex_editor.copy.swift", "Swift 배열" }, + { "hex.builtin.view.hex_editor.copy.pascal", "Pascal 배열" }, + { "hex.builtin.view.hex_editor.copy.base64", "Base64" }, + //{ "hex.builtin.view.hex_editor.copy.ascii", "Text Area" }, { "hex.builtin.view.hex_editor.copy.html", "HTML" }, { "hex.builtin.view.hex_editor.menu.edit.paste", "붙여넣기" }, { "hex.builtin.view.hex_editor.menu.edit.select_all", "모두 선택하기" }, diff --git a/plugins/builtin/source/lang/pt_BR.cpp b/plugins/builtin/source/lang/pt_BR.cpp index c1ad584b8..92c580332 100644 --- a/plugins/builtin/source/lang/pt_BR.cpp +++ b/plugins/builtin/source/lang/pt_BR.cpp @@ -295,7 +295,13 @@ namespace hex::plugin::builtin { { "hex.builtin.view.hex_editor.copy.python", "Python Array" }, { "hex.builtin.view.hex_editor.copy.java", "Java Array" }, { "hex.builtin.view.hex_editor.copy.js", "JavaScript Array" }, - { "hex.builtin.view.hex_editor.copy.ascii", "ASCII Art" }, + { "hex.builtin.view.hex_editor.copy.lua", "Lua Array" }, + { "hex.builtin.view.hex_editor.copy.go", "Go Array" }, + { "hex.builtin.view.hex_editor.copy.crystal", "Crystal Array" }, + { "hex.builtin.view.hex_editor.copy.swift", "Swift Array" }, + { "hex.builtin.view.hex_editor.copy.pascal", "Pascal Array" }, + { "hex.builtin.view.hex_editor.copy.base64", "Base64" }, + //{ "hex.builtin.view.hex_editor.copy.ascii", "Text Area" }, { "hex.builtin.view.hex_editor.copy.html", "HTML" }, { "hex.builtin.view.hex_editor.menu.edit.paste", "Colar" }, { "hex.builtin.view.hex_editor.menu.edit.select_all", "Selecionar tudo" }, diff --git a/plugins/builtin/source/lang/zh_CN.cpp b/plugins/builtin/source/lang/zh_CN.cpp index 6f8d8cadb..16cb0afb4 100644 --- a/plugins/builtin/source/lang/zh_CN.cpp +++ b/plugins/builtin/source/lang/zh_CN.cpp @@ -298,7 +298,13 @@ namespace hex::plugin::builtin { { "hex.builtin.view.hex_editor.copy.python", "Python 数组" }, { "hex.builtin.view.hex_editor.copy.java", "Java 数组" }, { "hex.builtin.view.hex_editor.copy.js", "JavaScript 数组" }, - { "hex.builtin.view.hex_editor.copy.ascii", "Hex Dump(ASCII 艺术)" }, + { "hex.builtin.view.hex_editor.copy.lua", "Lua 数组" }, + { "hex.builtin.view.hex_editor.copy.go", "Go 数组" }, + { "hex.builtin.view.hex_editor.copy.crystal", "Crystal 数组" }, + { "hex.builtin.view.hex_editor.copy.swift", "Swift 数组" }, + { "hex.builtin.view.hex_editor.copy.pascal", "Pascal 数组" }, + { "hex.builtin.view.hex_editor.copy.base64", "Base64" }, + //{ "hex.builtin.view.hex_editor.copy.ascii", "Text Area" }, { "hex.builtin.view.hex_editor.copy.html", "HTML" }, { "hex.builtin.view.hex_editor.menu.edit.paste", "粘贴" }, { "hex.builtin.view.hex_editor.menu.edit.select_all", "全选" }, diff --git a/plugins/builtin/source/lang/zh_TW.cpp b/plugins/builtin/source/lang/zh_TW.cpp index b687f7f05..72b0e4ec4 100644 --- a/plugins/builtin/source/lang/zh_TW.cpp +++ b/plugins/builtin/source/lang/zh_TW.cpp @@ -295,7 +295,13 @@ namespace hex::plugin::builtin { { "hex.builtin.view.hex_editor.copy.python", "Python 陣列" }, { "hex.builtin.view.hex_editor.copy.java", "Java 陣列" }, { "hex.builtin.view.hex_editor.copy.js", "JavaScript 陣列" }, - { "hex.builtin.view.hex_editor.copy.ascii", "ASCII 畫" }, + { "hex.builtin.view.hex_editor.copy.lua", "Lua 陣列" }, + { "hex.builtin.view.hex_editor.copy.go", "Go 陣列" }, + { "hex.builtin.view.hex_editor.copy.crystal", "Crystal 陣列" }, + { "hex.builtin.view.hex_editor.copy.swift", "Swift 陣列" }, + { "hex.builtin.view.hex_editor.copy.pascal", "Pascal 陣列" }, + { "hex.builtin.view.hex_editor.copy.base64", "Base64" }, + // { "hex.builtin.view.hex_editor.copy.ascii", "Text Area" }, { "hex.builtin.view.hex_editor.copy.html", "HTML" }, { "hex.builtin.view.hex_editor.menu.edit.paste", "貼上" }, { "hex.builtin.view.hex_editor.menu.edit.select_all", "全選" },