xmp_toolkit_ruby 0.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/.idea/.gitignore +8 -0
- data/.rspec +3 -0
- data/.rubocop.yml +88 -0
- data/.ruby-gemset +1 -0
- data/.ruby-version +1 -0
- data/AGENTS.md +72 -0
- data/CHANGELOG.md +45 -0
- data/LICENSE.txt +21 -0
- data/README.md +287 -0
- data/Rakefile +25 -0
- data/cliff.toml +138 -0
- data/docker/Dockerfile +87 -0
- data/docker/ProductConfig.cmake.patch +11 -0
- data/docker/ToolchainGCC.cmake.patch +11 -0
- data/exe/xmp_toolkit_ruby +8 -0
- data/ext/xmp_toolkit_ruby/XMP-Toolkit-SDK/LICENSE +31 -0
- data/ext/xmp_toolkit_ruby/XMP-Toolkit-SDK/build/XMP_BuildInfo.h +17 -0
- data/ext/xmp_toolkit_ruby/XMP-Toolkit-SDK/public/include/TXMPFiles.hpp +853 -0
- data/ext/xmp_toolkit_ruby/XMP-Toolkit-SDK/public/include/TXMPIterator.hpp +234 -0
- data/ext/xmp_toolkit_ruby/XMP-Toolkit-SDK/public/include/TXMPMeta.hpp +1753 -0
- data/ext/xmp_toolkit_ruby/XMP-Toolkit-SDK/public/include/TXMPUtils.hpp +967 -0
- data/ext/xmp_toolkit_ruby/XMP-Toolkit-SDK/public/include/XMP.hpp +98 -0
- data/ext/xmp_toolkit_ruby/XMP-Toolkit-SDK/public/include/XMP.incl_cpp +69 -0
- data/ext/xmp_toolkit_ruby/XMP-Toolkit-SDK/public/include/XMPCommon/Interfaces/BaseInterfaces/IConfigurable.h +225 -0
- data/ext/xmp_toolkit_ruby/XMP-Toolkit-SDK/public/include/XMPCommon/Interfaces/BaseInterfaces/ISharedObject.h +71 -0
- data/ext/xmp_toolkit_ruby/XMP-Toolkit-SDK/public/include/XMPCommon/Interfaces/BaseInterfaces/IThreadSafe.h +76 -0
- data/ext/xmp_toolkit_ruby/XMP-Toolkit-SDK/public/include/XMPCommon/Interfaces/BaseInterfaces/IVersionable.h +71 -0
- data/ext/xmp_toolkit_ruby/XMP-Toolkit-SDK/public/include/XMPCommon/Interfaces/IConfigurationManager.h +167 -0
- data/ext/xmp_toolkit_ruby/XMP-Toolkit-SDK/public/include/XMPCommon/Interfaces/IError.h +377 -0
- data/ext/xmp_toolkit_ruby/XMP-Toolkit-SDK/public/include/XMPCommon/Interfaces/IErrorNotifier.h +52 -0
- data/ext/xmp_toolkit_ruby/XMP-Toolkit-SDK/public/include/XMPCommon/Interfaces/IMemoryAllocator.h +65 -0
- data/ext/xmp_toolkit_ruby/XMP-Toolkit-SDK/public/include/XMPCommon/Interfaces/IObjectFactory.h +90 -0
- data/ext/xmp_toolkit_ruby/XMP-Toolkit-SDK/public/include/XMPCommon/Interfaces/IUTF8String.h +504 -0
- data/ext/xmp_toolkit_ruby/XMP-Toolkit-SDK/public/include/XMPCommon/Utilities/TWrapperFunctions.h +252 -0
- data/ext/xmp_toolkit_ruby/XMP-Toolkit-SDK/public/include/XMPCommon/Utilities/TWrapperFunctions2.h +564 -0
- data/ext/xmp_toolkit_ruby/XMP-Toolkit-SDK/public/include/XMPCommon/XMPCommonDefines.h +194 -0
- data/ext/xmp_toolkit_ruby/XMP-Toolkit-SDK/public/include/XMPCommon/XMPCommonErrorCodes.h +114 -0
- data/ext/xmp_toolkit_ruby/XMP-Toolkit-SDK/public/include/XMPCommon/XMPCommonFwdDeclarations.h +158 -0
- data/ext/xmp_toolkit_ruby/XMP-Toolkit-SDK/public/include/XMPCommon/XMPCommonLatestInterfaceVersions.h +51 -0
- data/ext/xmp_toolkit_ruby/XMP-Toolkit-SDK/public/include/XMPCommon/source/IConfigurable.cpp +204 -0
- data/ext/xmp_toolkit_ruby/XMP-Toolkit-SDK/public/include/XMPCommon/source/IConfigurationManager.cpp +92 -0
- data/ext/xmp_toolkit_ruby/XMP-Toolkit-SDK/public/include/XMPCommon/source/IError.cpp +207 -0
- data/ext/xmp_toolkit_ruby/XMP-Toolkit-SDK/public/include/XMPCommon/source/IErrorNotifier.cpp +26 -0
- data/ext/xmp_toolkit_ruby/XMP-Toolkit-SDK/public/include/XMPCommon/source/IUTF8String.cpp +299 -0
- data/ext/xmp_toolkit_ruby/XMP-Toolkit-SDK/public/include/XMPCore/Interfaces/IArrayNode.h +303 -0
- data/ext/xmp_toolkit_ruby/XMP-Toolkit-SDK/public/include/XMPCore/Interfaces/IClientDOMParser.h +88 -0
- data/ext/xmp_toolkit_ruby/XMP-Toolkit-SDK/public/include/XMPCore/Interfaces/IClientDOMSerializer.h +94 -0
- data/ext/xmp_toolkit_ruby/XMP-Toolkit-SDK/public/include/XMPCore/Interfaces/ICompositeNode.h +331 -0
- data/ext/xmp_toolkit_ruby/XMP-Toolkit-SDK/public/include/XMPCore/Interfaces/ICoreConfigurationManager.h +107 -0
- data/ext/xmp_toolkit_ruby/XMP-Toolkit-SDK/public/include/XMPCore/Interfaces/ICoreObjectFactory.h +279 -0
- data/ext/xmp_toolkit_ruby/XMP-Toolkit-SDK/public/include/XMPCore/Interfaces/IDOMImplementationRegistry.h +150 -0
- data/ext/xmp_toolkit_ruby/XMP-Toolkit-SDK/public/include/XMPCore/Interfaces/IDOMParser.h +181 -0
- data/ext/xmp_toolkit_ruby/XMP-Toolkit-SDK/public/include/XMPCore/Interfaces/IDOMSerializer.h +120 -0
- data/ext/xmp_toolkit_ruby/XMP-Toolkit-SDK/public/include/XMPCore/Interfaces/IMetadata.h +145 -0
- data/ext/xmp_toolkit_ruby/XMP-Toolkit-SDK/public/include/XMPCore/Interfaces/IMetadataConverterUtils.h +116 -0
- data/ext/xmp_toolkit_ruby/XMP-Toolkit-SDK/public/include/XMPCore/Interfaces/INameSpacePrefixMap.h +236 -0
- data/ext/xmp_toolkit_ruby/XMP-Toolkit-SDK/public/include/XMPCore/Interfaces/INode.h +582 -0
- data/ext/xmp_toolkit_ruby/XMP-Toolkit-SDK/public/include/XMPCore/Interfaces/INodeIterator.h +193 -0
- data/ext/xmp_toolkit_ruby/XMP-Toolkit-SDK/public/include/XMPCore/Interfaces/IPath.h +212 -0
- data/ext/xmp_toolkit_ruby/XMP-Toolkit-SDK/public/include/XMPCore/Interfaces/IPathSegment.h +225 -0
- data/ext/xmp_toolkit_ruby/XMP-Toolkit-SDK/public/include/XMPCore/Interfaces/ISimpleNode.h +150 -0
- data/ext/xmp_toolkit_ruby/XMP-Toolkit-SDK/public/include/XMPCore/Interfaces/IStructureNode.h +306 -0
- data/ext/xmp_toolkit_ruby/XMP-Toolkit-SDK/public/include/XMPCore/XMPCoreDefines.h +94 -0
- data/ext/xmp_toolkit_ruby/XMP-Toolkit-SDK/public/include/XMPCore/XMPCoreErrorCodes.h +116 -0
- data/ext/xmp_toolkit_ruby/XMP-Toolkit-SDK/public/include/XMPCore/XMPCoreFwdDeclarations.h +325 -0
- data/ext/xmp_toolkit_ruby/XMP-Toolkit-SDK/public/include/XMPCore/XMPCoreLatestInterfaceVersions.h +97 -0
- data/ext/xmp_toolkit_ruby/XMP-Toolkit-SDK/public/include/XMPCore/source/IArrayNode.cpp +163 -0
- data/ext/xmp_toolkit_ruby/XMP-Toolkit-SDK/public/include/XMPCore/source/IClientDOMParser.cpp +76 -0
- data/ext/xmp_toolkit_ruby/XMP-Toolkit-SDK/public/include/XMPCore/source/IClientDOMSerializer.cpp +73 -0
- data/ext/xmp_toolkit_ruby/XMP-Toolkit-SDK/public/include/XMPCore/source/ICompositeNode.cpp +121 -0
- data/ext/xmp_toolkit_ruby/XMP-Toolkit-SDK/public/include/XMPCore/source/ICoreConfigurationManager.cpp +88 -0
- data/ext/xmp_toolkit_ruby/XMP-Toolkit-SDK/public/include/XMPCore/source/ICoreObjectFactory.cpp +83 -0
- data/ext/xmp_toolkit_ruby/XMP-Toolkit-SDK/public/include/XMPCore/source/IDOMImplementationRegistry.cpp +122 -0
- data/ext/xmp_toolkit_ruby/XMP-Toolkit-SDK/public/include/XMPCore/source/IDOMParser.cpp +116 -0
- data/ext/xmp_toolkit_ruby/XMP-Toolkit-SDK/public/include/XMPCore/source/IDOMSerializer.cpp +109 -0
- data/ext/xmp_toolkit_ruby/XMP-Toolkit-SDK/public/include/XMPCore/source/IMetadata.cpp +113 -0
- data/ext/xmp_toolkit_ruby/XMP-Toolkit-SDK/public/include/XMPCore/source/IMetadataConverterUtils.cpp +92 -0
- data/ext/xmp_toolkit_ruby/XMP-Toolkit-SDK/public/include/XMPCore/source/INameSpacePrefixMap.cpp +187 -0
- data/ext/xmp_toolkit_ruby/XMP-Toolkit-SDK/public/include/XMPCore/source/INode.cpp +377 -0
- data/ext/xmp_toolkit_ruby/XMP-Toolkit-SDK/public/include/XMPCore/source/INodeIterator.cpp +105 -0
- data/ext/xmp_toolkit_ruby/XMP-Toolkit-SDK/public/include/XMPCore/source/IPath.cpp +157 -0
- data/ext/xmp_toolkit_ruby/XMP-Toolkit-SDK/public/include/XMPCore/source/IPathSegment.cpp +146 -0
- data/ext/xmp_toolkit_ruby/XMP-Toolkit-SDK/public/include/XMPCore/source/ISimpleNode.cpp +111 -0
- data/ext/xmp_toolkit_ruby/XMP-Toolkit-SDK/public/include/XMPCore/source/IStructureNode.cpp +104 -0
- data/ext/xmp_toolkit_ruby/XMP-Toolkit-SDK/public/include/XMP_Const.h +1590 -0
- data/ext/xmp_toolkit_ruby/XMP-Toolkit-SDK/public/include/XMP_Environment.h +223 -0
- data/ext/xmp_toolkit_ruby/XMP-Toolkit-SDK/public/include/XMP_IO.hpp +169 -0
- data/ext/xmp_toolkit_ruby/XMP-Toolkit-SDK/public/include/XMP_Version.h +52 -0
- data/ext/xmp_toolkit_ruby/XMP-Toolkit-SDK/public/include/client-glue/TXMPFiles.incl_cpp +484 -0
- data/ext/xmp_toolkit_ruby/XMP-Toolkit-SDK/public/include/client-glue/TXMPIterator.incl_cpp +223 -0
- data/ext/xmp_toolkit_ruby/XMP-Toolkit-SDK/public/include/client-glue/TXMPMeta.incl_cpp +917 -0
- data/ext/xmp_toolkit_ruby/XMP-Toolkit-SDK/public/include/client-glue/TXMPUtils.incl_cpp +445 -0
- data/ext/xmp_toolkit_ruby/XMP-Toolkit-SDK/public/include/client-glue/WXMPFiles.hpp +281 -0
- data/ext/xmp_toolkit_ruby/XMP-Toolkit-SDK/public/include/client-glue/WXMPIterator.hpp +74 -0
- data/ext/xmp_toolkit_ruby/XMP-Toolkit-SDK/public/include/client-glue/WXMPMeta.hpp +635 -0
- data/ext/xmp_toolkit_ruby/XMP-Toolkit-SDK/public/include/client-glue/WXMPUtils.hpp +314 -0
- data/ext/xmp_toolkit_ruby/XMP-Toolkit-SDK/public/include/client-glue/WXMP_Common.hpp +132 -0
- data/ext/xmp_toolkit_ruby/XMP-Toolkit-SDK/public/libraries/i80386linux_x64/debug/libXMPCore.so +0 -0
- data/ext/xmp_toolkit_ruby/XMP-Toolkit-SDK/public/libraries/i80386linux_x64/debug/libXMPCoreStatic.a +0 -0
- data/ext/xmp_toolkit_ruby/XMP-Toolkit-SDK/public/libraries/i80386linux_x64/debug/libXMPFiles.so +0 -0
- data/ext/xmp_toolkit_ruby/XMP-Toolkit-SDK/public/libraries/i80386linux_x64/debug/libXMPFilesStatic.a +0 -0
- data/ext/xmp_toolkit_ruby/XMP-Toolkit-SDK/public/libraries/macintosh/universal/Debug/libXMPCoreStatic.a +0 -0
- data/ext/xmp_toolkit_ruby/XMP-Toolkit-SDK/public/libraries/macintosh/universal/Debug/libXMPFilesStatic.a +0 -0
- data/ext/xmp_toolkit_ruby/extconf.rb +101 -0
- data/ext/xmp_toolkit_ruby/xmp_toolkit.cpp +321 -0
- data/ext/xmp_toolkit_ruby/xmp_toolkit.hpp +69 -0
- data/ext/xmp_toolkit_ruby/xmp_toolkit_ruby.cpp +44 -0
- data/lib/xmp_toolkit_ruby/cli.rb +95 -0
- data/lib/xmp_toolkit_ruby/namespaces.rb +77 -0
- data/lib/xmp_toolkit_ruby/plugins/LICENSE +31 -0
- data/lib/xmp_toolkit_ruby/plugins/PDF_Handler/i80386linux/i80386linux/PDF_Handler.resources/MODULE_IDENTIFIER.txt +1 -0
- data/lib/xmp_toolkit_ruby/plugins/PDF_Handler/i80386linux/i80386linux/PDF_Handler.resources/XMPPLUGINUIDS.txt +31 -0
- data/lib/xmp_toolkit_ruby/plugins/PDF_Handler/i80386linux/i80386linux/PDF_Handler.xpi +0 -0
- data/lib/xmp_toolkit_ruby/plugins/PDF_Handler/i80386linux/i80386linux/libMiniPDFL.so +0 -0
- data/lib/xmp_toolkit_ruby/plugins/PDF_Handler/i80386linux/i80386linux_x64/PDF_Handler.resources/MODULE_IDENTIFIER.txt +1 -0
- data/lib/xmp_toolkit_ruby/plugins/PDF_Handler/i80386linux/i80386linux_x64/PDF_Handler.resources/XMPPLUGINUIDS.txt +31 -0
- data/lib/xmp_toolkit_ruby/plugins/PDF_Handler/i80386linux/i80386linux_x64/PDF_Handler.xpi +0 -0
- data/lib/xmp_toolkit_ruby/plugins/PDF_Handler/i80386linux/i80386linux_x64/libMiniPDFL.so +0 -0
- data/lib/xmp_toolkit_ruby/plugins/PDF_Handler/macintosh/universal/PDF_Handler.xpi/PDF_Handler +0 -0
- data/lib/xmp_toolkit_ruby/plugins/PDF_Handler/macintosh/universal/PDF_Handler.xpi/Resources/Info.plist +52 -0
- data/lib/xmp_toolkit_ruby/plugins/PDF_Handler/macintosh/universal/PDF_Handler.xpi/Resources/MODULE_IDENTIFIER.txt +1 -0
- data/lib/xmp_toolkit_ruby/plugins/PDF_Handler/macintosh/universal/PDF_Handler.xpi/Resources/MiniPDFL.framework/MiniPDFL +0 -0
- data/lib/xmp_toolkit_ruby/plugins/PDF_Handler/macintosh/universal/PDF_Handler.xpi/Resources/MiniPDFL.framework/Resources/English.lproj/InfoPlist.strings +0 -0
- data/lib/xmp_toolkit_ruby/plugins/PDF_Handler/macintosh/universal/PDF_Handler.xpi/Resources/MiniPDFL.framework/Resources/Info.plist +35 -0
- data/lib/xmp_toolkit_ruby/plugins/PDF_Handler/macintosh/universal/PDF_Handler.xpi/Resources/MiniPDFL.framework/Versions/A/MiniPDFL +0 -0
- data/lib/xmp_toolkit_ruby/plugins/PDF_Handler/macintosh/universal/PDF_Handler.xpi/Resources/MiniPDFL.framework/Versions/A/Resources/English.lproj/InfoPlist.strings +0 -0
- data/lib/xmp_toolkit_ruby/plugins/PDF_Handler/macintosh/universal/PDF_Handler.xpi/Resources/MiniPDFL.framework/Versions/A/Resources/Info.plist +35 -0
- data/lib/xmp_toolkit_ruby/plugins/PDF_Handler/macintosh/universal/PDF_Handler.xpi/Resources/MiniPDFL.framework/Versions/A/_CodeSignature/CodeResources +146 -0
- data/lib/xmp_toolkit_ruby/plugins/PDF_Handler/macintosh/universal/PDF_Handler.xpi/Resources/MiniPDFL.framework/Versions/Current/MiniPDFL +0 -0
- data/lib/xmp_toolkit_ruby/plugins/PDF_Handler/macintosh/universal/PDF_Handler.xpi/Resources/MiniPDFL.framework/Versions/Current/Resources/English.lproj/InfoPlist.strings +0 -0
- data/lib/xmp_toolkit_ruby/plugins/PDF_Handler/macintosh/universal/PDF_Handler.xpi/Resources/MiniPDFL.framework/Versions/Current/Resources/Info.plist +35 -0
- data/lib/xmp_toolkit_ruby/plugins/PDF_Handler/macintosh/universal/PDF_Handler.xpi/Resources/MiniPDFL.framework/Versions/Current/_CodeSignature/CodeResources +146 -0
- data/lib/xmp_toolkit_ruby/plugins/PDF_Handler/macintosh/universal/PDF_Handler.xpi/Resources/XMPPLUGINUIDS.txt +31 -0
- data/lib/xmp_toolkit_ruby/plugins/PDF_Handler/macintosh/universal/PDF_Handler.xpi/Versions/A/PDF_Handler +0 -0
- data/lib/xmp_toolkit_ruby/plugins/PDF_Handler/macintosh/universal/PDF_Handler.xpi/Versions/A/Resources/Info.plist +52 -0
- data/lib/xmp_toolkit_ruby/plugins/PDF_Handler/macintosh/universal/PDF_Handler.xpi/Versions/A/Resources/MODULE_IDENTIFIER.txt +1 -0
- data/lib/xmp_toolkit_ruby/plugins/PDF_Handler/macintosh/universal/PDF_Handler.xpi/Versions/A/Resources/MiniPDFL.framework/MiniPDFL +0 -0
- data/lib/xmp_toolkit_ruby/plugins/PDF_Handler/macintosh/universal/PDF_Handler.xpi/Versions/A/Resources/MiniPDFL.framework/Resources/English.lproj/InfoPlist.strings +0 -0
- data/lib/xmp_toolkit_ruby/plugins/PDF_Handler/macintosh/universal/PDF_Handler.xpi/Versions/A/Resources/MiniPDFL.framework/Resources/Info.plist +35 -0
- data/lib/xmp_toolkit_ruby/plugins/PDF_Handler/macintosh/universal/PDF_Handler.xpi/Versions/A/Resources/MiniPDFL.framework/Versions/A/MiniPDFL +0 -0
- data/lib/xmp_toolkit_ruby/plugins/PDF_Handler/macintosh/universal/PDF_Handler.xpi/Versions/A/Resources/MiniPDFL.framework/Versions/A/Resources/English.lproj/InfoPlist.strings +0 -0
- data/lib/xmp_toolkit_ruby/plugins/PDF_Handler/macintosh/universal/PDF_Handler.xpi/Versions/A/Resources/MiniPDFL.framework/Versions/A/Resources/Info.plist +35 -0
- data/lib/xmp_toolkit_ruby/plugins/PDF_Handler/macintosh/universal/PDF_Handler.xpi/Versions/A/Resources/MiniPDFL.framework/Versions/A/_CodeSignature/CodeResources +146 -0
- data/lib/xmp_toolkit_ruby/plugins/PDF_Handler/macintosh/universal/PDF_Handler.xpi/Versions/A/Resources/MiniPDFL.framework/Versions/Current/MiniPDFL +0 -0
- data/lib/xmp_toolkit_ruby/plugins/PDF_Handler/macintosh/universal/PDF_Handler.xpi/Versions/A/Resources/MiniPDFL.framework/Versions/Current/Resources/English.lproj/InfoPlist.strings +0 -0
- data/lib/xmp_toolkit_ruby/plugins/PDF_Handler/macintosh/universal/PDF_Handler.xpi/Versions/A/Resources/MiniPDFL.framework/Versions/Current/Resources/Info.plist +35 -0
- data/lib/xmp_toolkit_ruby/plugins/PDF_Handler/macintosh/universal/PDF_Handler.xpi/Versions/A/Resources/MiniPDFL.framework/Versions/Current/_CodeSignature/CodeResources +146 -0
- data/lib/xmp_toolkit_ruby/plugins/PDF_Handler/macintosh/universal/PDF_Handler.xpi/Versions/A/Resources/XMPPLUGINUIDS.txt +31 -0
- data/lib/xmp_toolkit_ruby/plugins/PDF_Handler/macintosh/universal/PDF_Handler.xpi/Versions/A/_CodeSignature/CodeResources +216 -0
- data/lib/xmp_toolkit_ruby/plugins/PDF_Handler/macintosh/universal/PDF_Handler.xpi/Versions/Current/PDF_Handler +0 -0
- data/lib/xmp_toolkit_ruby/plugins/PDF_Handler/macintosh/universal/PDF_Handler.xpi/Versions/Current/Resources/Info.plist +52 -0
- data/lib/xmp_toolkit_ruby/plugins/PDF_Handler/macintosh/universal/PDF_Handler.xpi/Versions/Current/Resources/MODULE_IDENTIFIER.txt +1 -0
- data/lib/xmp_toolkit_ruby/plugins/PDF_Handler/macintosh/universal/PDF_Handler.xpi/Versions/Current/Resources/MiniPDFL.framework/MiniPDFL +0 -0
- data/lib/xmp_toolkit_ruby/plugins/PDF_Handler/macintosh/universal/PDF_Handler.xpi/Versions/Current/Resources/MiniPDFL.framework/Resources/English.lproj/InfoPlist.strings +0 -0
- data/lib/xmp_toolkit_ruby/plugins/PDF_Handler/macintosh/universal/PDF_Handler.xpi/Versions/Current/Resources/MiniPDFL.framework/Resources/Info.plist +35 -0
- data/lib/xmp_toolkit_ruby/plugins/PDF_Handler/macintosh/universal/PDF_Handler.xpi/Versions/Current/Resources/MiniPDFL.framework/Versions/A/MiniPDFL +0 -0
- data/lib/xmp_toolkit_ruby/plugins/PDF_Handler/macintosh/universal/PDF_Handler.xpi/Versions/Current/Resources/MiniPDFL.framework/Versions/A/Resources/English.lproj/InfoPlist.strings +0 -0
- data/lib/xmp_toolkit_ruby/plugins/PDF_Handler/macintosh/universal/PDF_Handler.xpi/Versions/Current/Resources/MiniPDFL.framework/Versions/A/Resources/Info.plist +35 -0
- data/lib/xmp_toolkit_ruby/plugins/PDF_Handler/macintosh/universal/PDF_Handler.xpi/Versions/Current/Resources/MiniPDFL.framework/Versions/A/_CodeSignature/CodeResources +146 -0
- data/lib/xmp_toolkit_ruby/plugins/PDF_Handler/macintosh/universal/PDF_Handler.xpi/Versions/Current/Resources/MiniPDFL.framework/Versions/Current/MiniPDFL +0 -0
- data/lib/xmp_toolkit_ruby/plugins/PDF_Handler/macintosh/universal/PDF_Handler.xpi/Versions/Current/Resources/MiniPDFL.framework/Versions/Current/Resources/English.lproj/InfoPlist.strings +0 -0
- data/lib/xmp_toolkit_ruby/plugins/PDF_Handler/macintosh/universal/PDF_Handler.xpi/Versions/Current/Resources/MiniPDFL.framework/Versions/Current/Resources/Info.plist +35 -0
- data/lib/xmp_toolkit_ruby/plugins/PDF_Handler/macintosh/universal/PDF_Handler.xpi/Versions/Current/Resources/MiniPDFL.framework/Versions/Current/_CodeSignature/CodeResources +146 -0
- data/lib/xmp_toolkit_ruby/plugins/PDF_Handler/macintosh/universal/PDF_Handler.xpi/Versions/Current/Resources/XMPPLUGINUIDS.txt +31 -0
- data/lib/xmp_toolkit_ruby/plugins/PDF_Handler/macintosh/universal/PDF_Handler.xpi/Versions/Current/_CodeSignature/CodeResources +216 -0
- data/lib/xmp_toolkit_ruby/plugins/PDF_Handler/resource/linux/PDF_Handler.exp +11 -0
- data/lib/xmp_toolkit_ruby/plugins/PDF_Handler/resource/mac/PDF_Handler.exp +2 -0
- data/lib/xmp_toolkit_ruby/plugins/PDF_Handler/resource/mac/PDF_Handler.plist +28 -0
- data/lib/xmp_toolkit_ruby/plugins/PDF_Handler/resource/mac/PDF_HandlerPList.h +12 -0
- data/lib/xmp_toolkit_ruby/plugins/PDF_Handler/resource/win/CopyPDFL.bat +14 -0
- data/lib/xmp_toolkit_ruby/plugins/PDF_Handler/resource/win/PDF_Handler-32.rc +8 -0
- data/lib/xmp_toolkit_ruby/plugins/PDF_Handler/resource/win/PDF_Handler-64.rc +8 -0
- data/lib/xmp_toolkit_ruby/plugins/PDF_Handler/resource/win/PDF_Handler.def +9 -0
- data/lib/xmp_toolkit_ruby/plugins/PDF_Handler/windows/windows_x64/MiniPDFL.dll +0 -0
- data/lib/xmp_toolkit_ruby/plugins/PDF_Handler/windows/windows_x64/PDF_Handler.xpi +0 -0
- data/lib/xmp_toolkit_ruby/version.rb +5 -0
- data/lib/xmp_toolkit_ruby/xmp_file_format.rb +87 -0
- data/lib/xmp_toolkit_ruby/xmp_file_handler_flags.rb +49 -0
- data/lib/xmp_toolkit_ruby.rb +237 -0
- data/sig/xmp_toolkit_ruby.rbs +4 -0
- data/tasks/changelog.rake +29 -0
- metadata +357 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: b7aee0acc492647a8dba0533d35958329a0a3778b46d57788c351de5aeadfaa6
|
4
|
+
data.tar.gz: 17a5b39e71708f9d4a6ce25a24e03451fe65bf929f2a46c8d57ac4c320c9c7ff
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: cdc48bafd443561d8e7b920dfa8a0c50b47f7704ec4e6bcf20c8a7258f65cb8329f8e66956e1aa38099646d26407369a78b18355b0af7b848885090168e67303
|
7
|
+
data.tar.gz: 88658e87bbae1cf9e2f2d43a4a3c73772994c44ee847c3b5523b99e8568630e1b321976d2f8e67088c557231e586ceb88ca20fa7cce88c4f9b32430bdd7a3c84
|
data/.idea/.gitignore
ADDED
data/.rspec
ADDED
data/.rubocop.yml
ADDED
@@ -0,0 +1,88 @@
|
|
1
|
+
AllCops:
|
2
|
+
NewCops: enable
|
3
|
+
TargetRubyVersion: 3.3
|
4
|
+
Exclude:
|
5
|
+
- 'ext/xmp_toolkit_ruby/extconf.rb'
|
6
|
+
- 'tmp/**/*'
|
7
|
+
- 'vendor/**/*'
|
8
|
+
|
9
|
+
Style/StringLiterals:
|
10
|
+
EnforcedStyle: double_quotes
|
11
|
+
|
12
|
+
Style/StringLiteralsInInterpolation:
|
13
|
+
EnforcedStyle: double_quotes
|
14
|
+
|
15
|
+
Style/Documentation:
|
16
|
+
Enabled: false
|
17
|
+
|
18
|
+
RSpec/SubjectStub:
|
19
|
+
Enabled: false
|
20
|
+
|
21
|
+
RSpec/ExampleLength:
|
22
|
+
Enabled: false
|
23
|
+
|
24
|
+
Layout/MultilineMethodCallIndentation:
|
25
|
+
Enabled: false
|
26
|
+
|
27
|
+
Layout/FirstArgumentIndentation:
|
28
|
+
Enabled: false
|
29
|
+
|
30
|
+
Layout/ClosingParenthesisIndentation:
|
31
|
+
Enabled: false
|
32
|
+
|
33
|
+
Layout/FirstHashElementIndentation:
|
34
|
+
EnforcedStyle: consistent
|
35
|
+
|
36
|
+
Layout/FirstArrayElementIndentation:
|
37
|
+
Enabled: false
|
38
|
+
|
39
|
+
Layout/MultilineOperationIndentation:
|
40
|
+
Enabled: false
|
41
|
+
|
42
|
+
Layout/BeginEndAlignment:
|
43
|
+
Enabled: false
|
44
|
+
|
45
|
+
Layout/ArrayAlignment:
|
46
|
+
Enabled: false
|
47
|
+
|
48
|
+
Layout/LineLength:
|
49
|
+
Enabled: false
|
50
|
+
|
51
|
+
Layout/LineEndStringConcatenationIndentation:
|
52
|
+
Enabled: false
|
53
|
+
|
54
|
+
RSpec/MultipleMemoizedHelpers:
|
55
|
+
Max: 10
|
56
|
+
|
57
|
+
Metrics/MethodLength:
|
58
|
+
Enabled: false
|
59
|
+
|
60
|
+
Metrics/ClassLength:
|
61
|
+
Enabled: false
|
62
|
+
|
63
|
+
Metrics/ParameterLists:
|
64
|
+
Max: 10
|
65
|
+
|
66
|
+
|
67
|
+
Gemspec/DevelopmentDependencies:
|
68
|
+
EnforcedStyle: gemspec
|
69
|
+
|
70
|
+
RSpec/InstanceVariable:
|
71
|
+
Enabled: false
|
72
|
+
|
73
|
+
RSpec/BeforeAfterAll:
|
74
|
+
Enabled: false
|
75
|
+
|
76
|
+
RSpec/SpecFilePathFormat:
|
77
|
+
Enabled: true
|
78
|
+
Exclude:
|
79
|
+
- 'spec/acceptance/**/*_spec.rb'
|
80
|
+
|
81
|
+
RSpec/DescribeClass:
|
82
|
+
Enabled: true
|
83
|
+
Exclude:
|
84
|
+
- 'spec/acceptance/**/*_spec.rb'
|
85
|
+
|
86
|
+
plugins:
|
87
|
+
- rubocop-rake
|
88
|
+
- rubocop-rspec
|
data/.ruby-gemset
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
xmp-toolkit-ruby
|
data/.ruby-version
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
ruby-3.3.4
|
data/AGENTS.md
ADDED
@@ -0,0 +1,72 @@
|
|
1
|
+
# Project Agents.md Guide for OpenAI Codex
|
2
|
+
|
3
|
+
This Agents.md file provides comprehensive guidance for OpenAI Codex and other AI agents working with this codebase.
|
4
|
+
|
5
|
+
## Project Structure for OpenAI Codex Navigation
|
6
|
+
|
7
|
+
- `/ext` - C++ extension code
|
8
|
+
- `/lib` - Ruby wrapper code
|
9
|
+
- `/spec` - Test suite
|
10
|
+
- `/bin` - CLI tools
|
11
|
+
- `/docker` - Docker configuration
|
12
|
+
|
13
|
+
## Coding Conventions for OpenAI Codex
|
14
|
+
|
15
|
+
### Ruby Conventions
|
16
|
+
|
17
|
+
- Follow standard Ruby style guidelines
|
18
|
+
- Use meaningful variable and method names
|
19
|
+
- Add comments for complex logic
|
20
|
+
- Use frozen_string_literal comments
|
21
|
+
|
22
|
+
### C++ Extension Conventions
|
23
|
+
|
24
|
+
- Follow C++11 style guidelines
|
25
|
+
- Properly handle memory allocation and deallocation
|
26
|
+
- Use RAII principles for resource management
|
27
|
+
- Add error handling for SDK operations
|
28
|
+
|
29
|
+
### General Conventions for Agents.md Implementation
|
30
|
+
|
31
|
+
- OpenAI Codex should follow the existing code style in each file
|
32
|
+
- Agents.md requires meaningful variable and function names in OpenAI Codex output
|
33
|
+
- OpenAI Codex should add comments for complex logic as guided by Agents.md
|
34
|
+
|
35
|
+
## Testing Requirements for OpenAI Codex
|
36
|
+
|
37
|
+
- Each test file should focus on a specific module/feature
|
38
|
+
- Each `it` block should contain only one expectation
|
39
|
+
- Run tests with: `bundle exec rake clobber compile spec rubocop`
|
40
|
+
|
41
|
+
OpenAI Codex should run tests with the following commands:
|
42
|
+
|
43
|
+
```bash
|
44
|
+
bundle exec rake clobber compile spec rubocop
|
45
|
+
```
|
46
|
+
|
47
|
+
## Pull Request Guidelines for OpenAI Codex
|
48
|
+
|
49
|
+
When OpenAI Codex helps create a PR, please ensure it:
|
50
|
+
|
51
|
+
1. Includes a clear description of the changes as guided by Agents.md
|
52
|
+
2. References any related issues that OpenAI Codex is addressing
|
53
|
+
3. Ensures all tests pass for code generated by OpenAI Codex
|
54
|
+
4. Includes screenshots for UI changes implemented with OpenAI Codex
|
55
|
+
5. Keeps PRs focused on a single concern as specified in Agents.md
|
56
|
+
6. Use conventional commit messages according to `.github/git-commit-instructions.md`.
|
57
|
+
7. Primary Language: All commit messages, code comments, pull request descriptions, and branch names must be written in
|
58
|
+
English.
|
59
|
+
|
60
|
+
## Programmatic Checks for OpenAI Codex
|
61
|
+
|
62
|
+
Before submitting changes generated by OpenAI Codex, run:
|
63
|
+
|
64
|
+
```bash
|
65
|
+
bundle exec rake clobber
|
66
|
+
bundle exec rake rubocop
|
67
|
+
bundle exec rake compile
|
68
|
+
bundle exec rake spec
|
69
|
+
```
|
70
|
+
|
71
|
+
All checks must pass before OpenAI Codex generated code can be merged. Agents.md helps ensure OpenAI Codex follows these
|
72
|
+
requirements.
|
data/CHANGELOG.md
ADDED
@@ -0,0 +1,45 @@
|
|
1
|
+
<!-- generated by git-cliff start -->
|
2
|
+
|
3
|
+
# Changelog
|
4
|
+
|
5
|
+
All notable changes to this project will be documented in this file.
|
6
|
+
|
7
|
+
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
8
|
+
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
9
|
+
|
10
|
+
[unreleased]: https://github.com///compare/v0.0.1..HEAD
|
11
|
+
|
12
|
+
<!-- generated by git-cliff end -->
|
13
|
+
|
14
|
+
## [0.0.2] - 2025-06-06
|
15
|
+
|
16
|
+
### 🐛 Fixed
|
17
|
+
|
18
|
+
- Correct typo in XMP data override test
|
19
|
+
|
20
|
+
### 📝 Docs
|
21
|
+
|
22
|
+
- Add macOS setup instructions for XMP Toolkit
|
23
|
+
- Document plugin path env var
|
24
|
+
- Update AGENTS.md to specify English for commits
|
25
|
+
- Add Agents.md for OpenAI Codex guidance
|
26
|
+
|
27
|
+
### 🔄 Changed
|
28
|
+
|
29
|
+
- Merge pull request #7 from dieter-medium/enhance-changelog
|
30
|
+
- Merge pull request #6 from dieter-medium/enhance-osx-docs
|
31
|
+
- Merge pull request #4 from dieter-medium/codex/update-readme-with-xmp_toolkit_plugins_path-usage
|
32
|
+
- Merge pull request #1 from dieter-medium/codex/append-newline-to-.ruby-gemset
|
33
|
+
|
34
|
+
### 🚀 Added
|
35
|
+
|
36
|
+
- Update permissions in main.yml
|
37
|
+
- Enhance override_xmp command functionality
|
38
|
+
- Add Dependabot configuration for Ruby dependencies
|
39
|
+
|
40
|
+
## [0.0.1] - 2025-06-05
|
41
|
+
|
42
|
+
- Initial release
|
43
|
+
|
44
|
+
- [unreleased](https://github.com/dieter-medium/bidi2pdf/compare/v0.0.2..HEAD)
|
45
|
+
- [0.0.2](https://github.com/dieter-medium/bidi2pdf/compare/v0.0.1..v0.0.2)
|
data/LICENSE.txt
ADDED
@@ -0,0 +1,21 @@
|
|
1
|
+
The MIT License (MIT)
|
2
|
+
|
3
|
+
Copyright (c) 2025 Dieter S.
|
4
|
+
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
7
|
+
in the Software without restriction, including without limitation the rights
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
10
|
+
furnished to do so, subject to the following conditions:
|
11
|
+
|
12
|
+
The above copyright notice and this permission notice shall be included in
|
13
|
+
all copies or substantial portions of the Software.
|
14
|
+
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
21
|
+
THE SOFTWARE.
|
data/README.md
ADDED
@@ -0,0 +1,287 @@
|
|
1
|
+
# XmpToolkitRuby
|
2
|
+
|
3
|
+
[](https://badge.fury.io/rb/xmp_toolkit_ruby)
|
4
|
+
|
5
|
+
**XmpToolkitRuby** is a Ruby gem that provides fast, native bindings to
|
6
|
+
the [Adobe XMP Toolkit](https://github.com/adobe/XMP-Toolkit-SDK), enabling Ruby applications to **read and write XMP
|
7
|
+
metadata** in various file formats (images, PDFs, etc.).
|
8
|
+
|
9
|
+
---
|
10
|
+
|
11
|
+
- **Full XMP read/write support**
|
12
|
+
- **Works with PNG, JPEG, TIFF, PDF, and more**
|
13
|
+
- **Command-line interface & Ruby API**
|
14
|
+
- **Works on Linux, macOS, and via Docker**
|
15
|
+
|
16
|
+
---
|
17
|
+
|
18
|
+
## Installation
|
19
|
+
|
20
|
+
**Recommended:** Compile natively on your target system for best performance and compatibility.
|
21
|
+
A precompiled extension may be available for some platforms.
|
22
|
+
|
23
|
+
### 1. Get the Adobe XMP Toolkit
|
24
|
+
|
25
|
+
First, clone and prepare the Adobe XMP Toolkit SDK.
|
26
|
+
|
27
|
+
#### Linux example (adjust paths/versions as needed)
|
28
|
+
|
29
|
+
```bash
|
30
|
+
export XMP_TOOLKIT_SDK_VERSION=2025.03
|
31
|
+
|
32
|
+
# Prerequisites
|
33
|
+
sudo apt update && sudo apt install cmake build-essential curl
|
34
|
+
|
35
|
+
# Download and extract the SDK
|
36
|
+
mkdir XMP-Toolkit-SDK
|
37
|
+
cd XMP-Toolkit-SDK
|
38
|
+
curl -LO https://github.com/adobe/XMP-Toolkit-SDK/archive/refs/tags/v${XMP_TOOLKIT_SDK_VERSION}.tar.gz
|
39
|
+
tar -xzf v${XMP_TOOLKIT_SDK_VERSION}.tar.gz --strip-components=1
|
40
|
+
|
41
|
+
# Prepare required third-party libraries
|
42
|
+
cd third-party
|
43
|
+
|
44
|
+
# zlib
|
45
|
+
cd zlib
|
46
|
+
curl -O https://zlib.net/zlib.tar.gz
|
47
|
+
tar --strip-components=1 -xzf zlib.tar.gz
|
48
|
+
cd ..
|
49
|
+
|
50
|
+
# expat
|
51
|
+
cd expat
|
52
|
+
curl -LO https://github.com/libexpat/libexpat/releases/download/R_2_5_0/expat-2.5.0.tar.gz
|
53
|
+
tar --strip-components=1 -xzf expat-2.5.0.tar.gz
|
54
|
+
cd ../..
|
55
|
+
|
56
|
+
# Build instructions
|
57
|
+
cd build
|
58
|
+
# ⚠️ Patch required: Remove `${XMP_GCC_LIBPATH}/libssp.a` from `ProductConfig.cmake` (see [this issue](https://github.com/adobe/XMP-Toolkit-SDK/issues/8))
|
59
|
+
# Optionally, disable secure settings in `shared/ToolchainGCC.cmake`:
|
60
|
+
# -set(XMP_ENABLE_SECURE_SETTINGS "ON")
|
61
|
+
# +set(XMP_ENABLE_SECURE_SETTINGS "OFF")
|
62
|
+
make
|
63
|
+
```
|
64
|
+
|
65
|
+
#### macOS example
|
66
|
+
|
67
|
+
When you copy and paste the following commands, make sure that during the paste nothing got escaped (e.g. `{` becomes
|
68
|
+
`\{`).
|
69
|
+
|
70
|
+
```bash
|
71
|
+
export XMP_TOOLKIT_SDK_VERSION=2025.03
|
72
|
+
|
73
|
+
xcode-select --install # Ensure Xcode command line tools are selected
|
74
|
+
|
75
|
+
# within a directory of your choice
|
76
|
+
|
77
|
+
mkdir XMP-Toolkit-SDK
|
78
|
+
|
79
|
+
cd XMP-Toolkit-SDK
|
80
|
+
curl -LO https://github.com/adobe/XMP-Toolkit-SDK/archive/refs/tags/v${XMP_TOOLKIT_SDK_VERSION}.tar.gz
|
81
|
+
tar -xzf v${XMP_TOOLKIT_SDK_VERSION}.tar.gz --strip-components=1
|
82
|
+
|
83
|
+
# Prepare required third-party libraries
|
84
|
+
cd third-party
|
85
|
+
|
86
|
+
# zlib
|
87
|
+
cd zlib
|
88
|
+
curl -O https://zlib.net/zlib.tar.gz
|
89
|
+
tar --strip-components=1 -xzf zlib.tar.gz
|
90
|
+
cd ..
|
91
|
+
|
92
|
+
# expat
|
93
|
+
cd expat
|
94
|
+
curl -LO https://github.com/libexpat/libexpat/releases/download/R_2_5_0/expat-2.5.0.tar.gz
|
95
|
+
tar --strip-components=1 -xzf expat-2.5.0.tar.gz
|
96
|
+
cd ../..
|
97
|
+
|
98
|
+
# cmake
|
99
|
+
cd tools/cmake
|
100
|
+
mkdir bin
|
101
|
+
cd bin
|
102
|
+
curl -LO https://cmake.org/files/v3.15/cmake-3.15.5-Darwin-x86_64.tar.gz
|
103
|
+
tar --strip-components=1 -xzf cmake-3.15.5-Darwin-x86_64.tar.gz
|
104
|
+
cd ../../..
|
105
|
+
|
106
|
+
cd build
|
107
|
+
./GenerateXMPToolkitSDK_mac.sh
|
108
|
+
|
109
|
+
# choose 3 => Generate XMPToolkitSDK Static 64
|
110
|
+
|
111
|
+
|
112
|
+
cd xcode/static/universal/
|
113
|
+
|
114
|
+
# I needed to patch SDKROOT from macOS 13.1 SDK to 15.1 SDK in two places inside the Xcode project file:
|
115
|
+
#
|
116
|
+
# From:
|
117
|
+
# SDKROOT = /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX13.1.sdk;
|
118
|
+
#
|
119
|
+
# To:
|
120
|
+
# SDKROOT = /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX15.1.sdk;
|
121
|
+
#
|
122
|
+
# The following sed script replaces both occurrences in-place, backing up the original file with a .bak extension:
|
123
|
+
#
|
124
|
+
# Usage:
|
125
|
+
# sed -i.bak -E 's|(SDKROOT = /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX)13\.1(\.sdk;)|\115.1\2|g' ./XMPToolkitSDK64.xcodeproj/project.pbxproj
|
126
|
+
#
|
127
|
+
# Explanation:
|
128
|
+
# - The regex captures the prefix and suffix around "13.1" to ensure only the SDK version number is replaced.
|
129
|
+
# - The 'g' flag ensures all matching lines (both places) are updated.
|
130
|
+
|
131
|
+
|
132
|
+
# Build Debug configuration
|
133
|
+
xcodebuild -scheme ALL_BUILD -configuration Debug build
|
134
|
+
|
135
|
+
# Build Release configuration
|
136
|
+
xcodebuild -scheme ALL_BUILD -configuration Release build
|
137
|
+
|
138
|
+
```
|
139
|
+
|
140
|
+
**See [Adobe’s docs](https://github.com/adobe/XMP-Toolkit-SDK) for details on other platforms.**
|
141
|
+
|
142
|
+
---
|
143
|
+
|
144
|
+
### 2. Install the Gem
|
145
|
+
|
146
|
+
**Bundler:**
|
147
|
+
|
148
|
+
```bash
|
149
|
+
# for linux
|
150
|
+
bundle config set --local build.xmp_toolkit_ruby "--with-xmp-lib=/path/to/XMP-Toolkit-SDK/public/libraries/i80386linux_x64/debug --with-xmp-include=/path/to/XMP-Toolkit-SDK/public/include"
|
151
|
+
# for macOS
|
152
|
+
bundle config set --local build.xmp_toolkit_ruby "--with-xmp-lib=/path/to/XMP-Toolkit-SDK/public/libraries/macintosh/universal/Debug --with-xmp-include=/path/to/XMP-Toolkit-SDK/public/include"
|
153
|
+
|
154
|
+
bundle add xmp_toolkit_ruby
|
155
|
+
```
|
156
|
+
|
157
|
+
**Or, with plain RubyGems:**
|
158
|
+
|
159
|
+
```bash
|
160
|
+
# for linux
|
161
|
+
gem install xmp_toolkit_ruby -- --with-xmp-lib /path/to/XMP-Toolkit-SDK/public/libraries/i80386linux_x64/debug --with-xmp-include /path/to/XMP-Toolkit-SDK/public/include
|
162
|
+
# for macOS
|
163
|
+
gem install xmp_toolkit_ruby -- --with-xmp-lib /path/to/XMP-Toolkit-SDK/public/libraries/macintosh/universal/Debug --with-xmp-include /path/to/XMP-Toolkit-SDK/public/include
|
164
|
+
```
|
165
|
+
|
166
|
+
_Replace paths as needed for your environment._
|
167
|
+
|
168
|
+
---
|
169
|
+
|
170
|
+
## Precompiled Binaries and Platform Support
|
171
|
+
|
172
|
+
This gem **ships with precompiled binaries** for the native libraries `libxmpcore` and `libxmpfile` for common
|
173
|
+
platforms.
|
174
|
+
|
175
|
+
> ⚠️ **Note:**
|
176
|
+
> These precompiled binaries may **not work on your system**, especially if your OS, architecture, or C++ standard
|
177
|
+
> library differs from those used to build the binaries.
|
178
|
+
> For maximum compatibility, **it is strongly recommended to compile the native libraries yourself** on your target
|
179
|
+
> machine.
|
180
|
+
|
181
|
+
If you encounter issues or want maximum portability, please build the SDK from source using the instructions above.
|
182
|
+
|
183
|
+
**Tip:**
|
184
|
+
Check out [`docker/Dockerfile`](docker/Dockerfile) in this repository for a full working example of a native build
|
185
|
+
setup, including all dependencies and configuration flags.
|
186
|
+
|
187
|
+
---
|
188
|
+
|
189
|
+
## Usage
|
190
|
+
|
191
|
+
### In Ruby
|
192
|
+
|
193
|
+
```ruby
|
194
|
+
require "xmp_toolkit_ruby"
|
195
|
+
|
196
|
+
xmp = XmpToolkitRuby.xmp_from_file("BlueSquare.png")
|
197
|
+
|
198
|
+
pp xmp.keys
|
199
|
+
puts xmp["xmp_data"]
|
200
|
+
|
201
|
+
new_xmp = <<~XMP
|
202
|
+
<x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="XMP Core 6.0.0">
|
203
|
+
<rdf:RDF xmlns:rdf="#{XmpToolkitRuby::Namespaces::XMP_NS_RDF}">
|
204
|
+
<rdf:Description xmlns:xmp="#{XmpToolkitRuby::Namespaces::XMP_NS_XMP}" rdf:about="">
|
205
|
+
<xmp:CreateDate>2025-06-04T20:20:40+02:00</xmp:CreateDate>
|
206
|
+
<xmp:ModifyDate>2025-06-04T20:20:40+02:00</xmp:ModifyDate>
|
207
|
+
</rdf:Description>
|
208
|
+
</rdf:RDF>
|
209
|
+
</x:xmpmeta>
|
210
|
+
XMP
|
211
|
+
|
212
|
+
XmpToolkitRuby.xmp_to_file(
|
213
|
+
"BlueSquare.png",
|
214
|
+
new_xmp,
|
215
|
+
override: true # Set to false to upsert/merge instead of replacing
|
216
|
+
)
|
217
|
+
```
|
218
|
+
|
219
|
+
If you built the XMP Toolkit yourself or store the plugins elsewhere,
|
220
|
+
set the `XMP_TOOLKIT_PLUGINS_PATH` environment variable so the gem can
|
221
|
+
locate the PDF handler:
|
222
|
+
|
223
|
+
```bash
|
224
|
+
export XMP_TOOLKIT_PLUGINS_PATH=/path/to/XMP-Toolkit-SDK/XMPFilesPlugins/PDF_Handler/<platform>
|
225
|
+
```
|
226
|
+
|
227
|
+
Run your Ruby code or CLI commands in the same shell so this variable is
|
228
|
+
visible.
|
229
|
+
|
230
|
+
---
|
231
|
+
|
232
|
+
### CLI
|
233
|
+
|
234
|
+
The gem ships with a `xmp_toolkit_ruby` command for basic operations:
|
235
|
+
|
236
|
+
```bash
|
237
|
+
# Print XMP metadata to stdout
|
238
|
+
xmp_toolkit_ruby print_xmp BlueSquare.png
|
239
|
+
|
240
|
+
# Print XMP metadata and save to a file
|
241
|
+
xmp_toolkit_ruby print_xmp BlueSquare.png xmp_metadata.xml
|
242
|
+
|
243
|
+
# Update XMP metadata (replace/merge)
|
244
|
+
xmp_toolkit_ruby override_xmp --override BlueSquare.png xmp_metadata.xml
|
245
|
+
```
|
246
|
+
|
247
|
+
---
|
248
|
+
|
249
|
+
### Docker
|
250
|
+
|
251
|
+
You can run the CLI tool via Docker without installing any build tools:
|
252
|
+
|
253
|
+
```bash
|
254
|
+
docker run -it --rm -v $(pwd):/workspace dieters877565/xmp-toolkit-ruby:main xmp_toolkit_ruby print_xmp /workspace/BlueSquare.png
|
255
|
+
```
|
256
|
+
|
257
|
+
---
|
258
|
+
|
259
|
+
## Development
|
260
|
+
|
261
|
+
1. **Clone the repo**
|
262
|
+
2. `bin/setup` to install dependencies
|
263
|
+
3. `rake spec` to run tests
|
264
|
+
4. `bin/console` for an interactive shell
|
265
|
+
|
266
|
+
Build & install locally with:
|
267
|
+
|
268
|
+
```bash
|
269
|
+
bundle exec rake install
|
270
|
+
```
|
271
|
+
|
272
|
+
Release process:
|
273
|
+
|
274
|
+
- Bump the version in `lib/xmp_toolkit_ruby/version.rb`
|
275
|
+
- `bundle exec rake release` to tag, push, and publish to [rubygems.org](https://rubygems.org)
|
276
|
+
|
277
|
+
---
|
278
|
+
|
279
|
+
## Contributing
|
280
|
+
|
281
|
+
Bug reports and pull requests are welcome on [GitHub](https://github.com/DieterS/xmp_toolkit_ruby).
|
282
|
+
|
283
|
+
---
|
284
|
+
|
285
|
+
## License
|
286
|
+
|
287
|
+
This project is open source, licensed under the [MIT License](https://opensource.org/licenses/MIT).
|
data/Rakefile
ADDED
@@ -0,0 +1,25 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require "bundler/gem_tasks"
|
4
|
+
require "rspec/core/rake_task"
|
5
|
+
|
6
|
+
RSpec::Core::RakeTask.new(:spec)
|
7
|
+
|
8
|
+
require "rubocop/rake_task"
|
9
|
+
|
10
|
+
RuboCop::RakeTask.new
|
11
|
+
|
12
|
+
require "rake/extensiontask"
|
13
|
+
|
14
|
+
desc "Build the gem including native extensions"
|
15
|
+
task build: :compile
|
16
|
+
|
17
|
+
GEMSPEC = Gem::Specification.load("xmp_toolkit_ruby.gemspec")
|
18
|
+
|
19
|
+
Rake::ExtensionTask.new("xmp_toolkit_ruby", GEMSPEC) do |ext|
|
20
|
+
ext.lib_dir = "lib/xmp_toolkit_ruby"
|
21
|
+
end
|
22
|
+
|
23
|
+
Dir.glob("tasks/*.rake").each { |r| load r }
|
24
|
+
|
25
|
+
task default: %i[clobber compile spec rubocop]
|