docu-craft 0.1.0__tar.gz
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.
- docu_craft-0.1.0/LICENSE +17 -0
- docu_craft-0.1.0/PKG-INFO +213 -0
- docu_craft-0.1.0/README.md +167 -0
- docu_craft-0.1.0/docu_craft/__init__.py +38 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/noto-minimal/1f310.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/noto-minimal/1f31f.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/noto-minimal/1f393.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/noto-minimal/1f3af.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/noto-minimal/1f3c6.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/noto-minimal/1f4a1.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/noto-minimal/1f4af.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/noto-minimal/1f4b0.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/noto-minimal/1f4bb.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/noto-minimal/1f4be.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/noto-minimal/1f4c1.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/noto-minimal/1f4c2.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/noto-minimal/1f4c4.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/noto-minimal/1f4c8.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/noto-minimal/1f4c9.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/noto-minimal/1f4ca.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/noto-minimal/1f4cb.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/noto-minimal/1f4cc.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/noto-minimal/1f4cf.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/noto-minimal/1f4d0.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/noto-minimal/1f4da.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/noto-minimal/1f4dd.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/noto-minimal/1f4e6.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/noto-minimal/1f4e7.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/noto-minimal/1f4f1.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/noto-minimal/1f504.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/noto-minimal/1f50d.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/noto-minimal/1f511.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/noto-minimal/1f512.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/noto-minimal/1f513.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/noto-minimal/1f514.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/noto-minimal/1f516.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/noto-minimal/1f517.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/noto-minimal/1f522.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/noto-minimal/1f52c.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/noto-minimal/1f52d.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/noto-minimal/1f53a.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/noto-minimal/1f53b.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/noto-minimal/1f5a5.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/noto-minimal/1f5d3.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/noto-minimal/1f680.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/noto-minimal/1f6e0.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/noto-minimal/1f91d.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/noto-minimal/1f9ea.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/noto-minimal/1f9ee.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/noto-minimal/2139.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/noto-minimal/23f0.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/noto-minimal/26a0.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/noto-minimal/2705.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/noto-minimal/270f.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/noto-minimal/2714.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/noto-minimal/274c.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/noto-minimal/2753.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/noto-minimal/2757.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/noto-minimal/2795.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/noto-minimal/2796.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/noto-minimal/27a1.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/noto-minimal/2b06.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/noto-minimal/2b07.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/noto-minimal/2b50.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/twemoji/1f170.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/twemoji/1f171.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/twemoji/1f17e.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/twemoji/1f17f.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/twemoji/1f18e.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/twemoji/1f191.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/twemoji/1f192.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/twemoji/1f193.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/twemoji/1f194.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/twemoji/1f195.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/twemoji/1f196.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/twemoji/1f197.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/twemoji/1f198.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/twemoji/1f199.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/twemoji/1f19a.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/twemoji/1f1e6-1f1e8.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/twemoji/1f1e6-1f1e9.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/twemoji/1f1e6-1f1ea.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/twemoji/1f1e6-1f1eb.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/twemoji/1f1e6-1f1ec.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/twemoji/1f1e6-1f1ee.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/twemoji/1f1e6-1f1f1.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/twemoji/1f1e6-1f1f2.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/twemoji/1f1e6-1f1f4.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/twemoji/1f1e6-1f1f6.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/twemoji/1f1e6-1f1f7.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/twemoji/1f1e6-1f1f8.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/twemoji/1f1e6-1f1f9.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/twemoji/1f1e6-1f1fa.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/twemoji/1f1e6-1f1fc.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/twemoji/1f1e6-1f1fd.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/twemoji/1f1e6-1f1ff.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/twemoji/1f1e6.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/twemoji/1f1e7-1f1e6.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/twemoji/1f1e7-1f1e7.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/twemoji/1f1e7-1f1e9.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/twemoji/1f1e7-1f1ea.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/twemoji/1f1e7-1f1eb.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/twemoji/1f1e7-1f1ec.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/twemoji/1f1e7-1f1ed.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/twemoji/1f1e7-1f1ee.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/twemoji/1f1e7-1f1ef.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/twemoji/1f1e7-1f1f1.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/twemoji/1f1e7-1f1f2.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/twemoji/1f1e7-1f1f3.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/twemoji/1f1e7-1f1f4.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/twemoji/1f1e7-1f1f6.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/twemoji/1f1e7-1f1f7.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/twemoji/1f1e7-1f1f8.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/twemoji/1f1e7-1f1f9.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/twemoji/1f1e7-1f1fb.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/twemoji/1f1e7-1f1fc.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/twemoji/1f1e7-1f1fe.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/twemoji/1f1e7-1f1ff.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/twemoji/1f1e7.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/twemoji/1f1e8-1f1e6.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/twemoji/1f1e8-1f1e8.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/twemoji/1f1e8-1f1e9.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/twemoji/1f1e8-1f1eb.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/twemoji/1f1e8-1f1ec.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/twemoji/1f1e8-1f1ed.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/twemoji/1f1e8-1f1ee.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/twemoji/1f1e8-1f1f0.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/twemoji/1f1e8-1f1f1.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/twemoji/1f1e8-1f1f2.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/twemoji/1f1e8-1f1f3.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/twemoji/1f1e8-1f1f4.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/twemoji/1f1e8-1f1f5.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/twemoji/1f1e8-1f1f7.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/twemoji/1f1e8-1f1fa.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/twemoji/1f1e8-1f1fb.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/twemoji/1f1e8-1f1fc.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/twemoji/1f1e8-1f1fd.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/twemoji/1f1e8-1f1fe.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/twemoji/1f1e8-1f1ff.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/twemoji/1f1e8.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/twemoji/1f1e9-1f1ea.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/twemoji/1f1e9-1f1ec.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/twemoji/1f1e9-1f1ef.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/twemoji/1f1e9-1f1f0.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/twemoji/1f1e9-1f1f2.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/twemoji/1f1e9-1f1f4.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/twemoji/1f1e9-1f1ff.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/twemoji/1f1e9.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/twemoji/1f1ea-1f1e6.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/twemoji/1f1ea-1f1e8.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/twemoji/1f1ea-1f1ea.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/twemoji/1f1ea-1f1ec.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/twemoji/1f1ea-1f1ed.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/twemoji/1f1ea-1f1f7.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/twemoji/1f1ea-1f1f8.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/twemoji/1f1ea-1f1f9.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/twemoji/1f1ea-1f1fa.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/twemoji/1f1ea.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/twemoji/1f1eb-1f1ee.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/twemoji/1f1eb-1f1ef.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/twemoji/1f1eb-1f1f0.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/twemoji/1f1eb-1f1f2.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/twemoji/1f1eb-1f1f4.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/twemoji/1f1eb-1f1f7.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/twemoji/1f1eb.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/twemoji/1f1ec-1f1e6.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/twemoji/1f1ec-1f1e7.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/twemoji/1f1ec-1f1e9.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/twemoji/1f1ec-1f1ea.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/twemoji/1f1ec-1f1eb.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/twemoji/1f1ec-1f1ec.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/twemoji/1f1ec-1f1ed.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/twemoji/1f1ec-1f1ee.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/twemoji/1f1ec-1f1f1.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/twemoji/1f1ec-1f1f2.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/twemoji/1f1ec-1f1f3.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/twemoji/1f1ec-1f1f5.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/twemoji/1f1ec-1f1f6.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/twemoji/1f1ec-1f1f7.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/twemoji/1f1ec-1f1f8.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/twemoji/1f1ec-1f1f9.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/twemoji/1f1ec-1f1fa.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/twemoji/1f1ec-1f1fc.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/twemoji/1f1ec-1f1fe.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/twemoji/1f1ec.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/twemoji/1f1ed-1f1f0.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/twemoji/1f1ed-1f1f2.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/twemoji/1f1ed-1f1f3.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/twemoji/1f1ed-1f1f7.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/twemoji/1f1ed-1f1f9.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/twemoji/1f1ed-1f1fa.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/twemoji/1f1ed.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/twemoji/1f1ee-1f1e8.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/twemoji/1f1ee-1f1e9.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/twemoji/1f1ee-1f1ea.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/twemoji/1f1ee-1f1f1.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/twemoji/1f1ee-1f1f2.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/twemoji/1f1ee-1f1f3.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/twemoji/1f1ee-1f1f4.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/twemoji/1f1ee-1f1f6.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/twemoji/1f1ee-1f1f7.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/twemoji/1f1ee-1f1f8.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/twemoji/1f1ee-1f1f9.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/twemoji/1f1ee.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/twemoji/1f1ef-1f1ea.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/twemoji/1f1ef-1f1f2.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/twemoji/1f1ef-1f1f4.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/twemoji/1f1ef-1f1f5.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/twemoji/1f1ef.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/twemoji/1f1f0-1f1ea.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/twemoji/1f1f0-1f1ec.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/twemoji/1f1f0-1f1ed.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/twemoji/1f1f0-1f1ee.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/twemoji/1f1f0-1f1f2.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/twemoji/1f1f0-1f1f3.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/twemoji/1f1f0-1f1f5.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/twemoji/1f1f0-1f1f7.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/twemoji/1f1f0-1f1fc.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/twemoji/1f1f0-1f1fe.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/twemoji/1f1f0-1f1ff.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/twemoji/1f1f0.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/twemoji/1f1f1-1f1e6.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/twemoji/1f1f1-1f1e7.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/twemoji/1f1f1-1f1e8.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/twemoji/1f1f1-1f1ee.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/twemoji/1f1f1-1f1f0.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/twemoji/1f1f1-1f1f7.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/twemoji/1f1f1-1f1f8.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/twemoji/1f1f1-1f1f9.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/twemoji/1f1f1-1f1fa.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/twemoji/1f1f1-1f1fb.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/twemoji/1f1f1-1f1fe.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/twemoji/1f1f1.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/twemoji/1f1f2-1f1e6.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/twemoji/1f1f2-1f1e8.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/twemoji/1f1f2-1f1e9.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/twemoji/1f1f2-1f1ea.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/twemoji/1f1f2-1f1eb.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/twemoji/1f1f2-1f1ec.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/twemoji/1f1f2-1f1ed.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/twemoji/1f1f2-1f1f0.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/twemoji/1f1f2-1f1f1.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/twemoji/1f1f2-1f1f2.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/twemoji/1f1f2-1f1f3.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/twemoji/1f1f2-1f1f4.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/twemoji/1f1f2-1f1f5.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/twemoji/1f1f2-1f1f6.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/twemoji/1f1f2-1f1f7.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/twemoji/1f1f2-1f1f8.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/twemoji/1f1f2-1f1f9.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/twemoji/1f1f2-1f1fa.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/twemoji/1f1f2-1f1fb.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/twemoji/1f1f2-1f1fc.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/twemoji/1f1f2-1f1fd.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/twemoji/1f1f2-1f1fe.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/twemoji/1f1f2-1f1ff.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/twemoji/1f1f2.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/twemoji/1f1f3-1f1e6.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/twemoji/1f1f3-1f1e8.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/twemoji/1f1f3-1f1ea.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/twemoji/1f1f3-1f1eb.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/twemoji/1f1f3-1f1ec.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/twemoji/1f1f3-1f1ee.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/twemoji/1f1f3-1f1f1.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/twemoji/1f1f3-1f1f4.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/twemoji/1f1f3-1f1f5.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/twemoji/1f1f3-1f1f7.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/twemoji/1f1f3-1f1fa.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/twemoji/1f1f3-1f1ff.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/twemoji/1f1f3.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/twemoji/1f1f4-1f1f2.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/twemoji/1f1f4.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/twemoji/1f1f5-1f1e6.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/twemoji/1f1f5-1f1ea.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/twemoji/1f1f5-1f1eb.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/twemoji/1f1f5-1f1ec.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/twemoji/1f1f5-1f1ed.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/twemoji/1f1f5-1f1f0.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/twemoji/1f1f5-1f1f1.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/twemoji/1f1f5-1f1f2.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/twemoji/1f1f5-1f1f3.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/twemoji/1f1f5-1f1f7.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/twemoji/1f1f5-1f1f8.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/twemoji/1f1f5-1f1f9.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/twemoji/1f1f5-1f1fc.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/twemoji/1f1f5-1f1fe.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/twemoji/1f1f5.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/twemoji/1f1f6-1f1e6.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/twemoji/1f1f6.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/twemoji/1f1f7-1f1ea.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/twemoji/1f1f7-1f1f4.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/twemoji/1f1f7-1f1f8.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/twemoji/1f1f7-1f1fa.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/twemoji/1f1f7-1f1fc.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/twemoji/1f1f7.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/twemoji/1f1f8-1f1e6.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/twemoji/1f1f8-1f1e7.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/twemoji/1f1f8-1f1e8.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/twemoji/1f1f8-1f1e9.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/twemoji/1f1f8-1f1ea.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/twemoji/1f1f8-1f1ec.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/twemoji/1f1f8-1f1ed.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/twemoji/1f1f8-1f1ee.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/twemoji/1f1f8-1f1ef.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/twemoji/1f1f8-1f1f0.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/twemoji/1f1f8-1f1f1.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/twemoji/1f1f8-1f1f2.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/twemoji/1f1f8-1f1f3.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/twemoji/1f1f8-1f1f4.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/twemoji/1f1f8-1f1f7.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/twemoji/1f1f8-1f1f8.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/twemoji/1f1f8-1f1f9.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/twemoji/1f1f8-1f1fb.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/twemoji/1f1f8-1f1fd.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/twemoji/1f1f8-1f1fe.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/twemoji/1f1f8-1f1ff.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/twemoji/1f1f8.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/twemoji/1f1f9-1f1e6.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/twemoji/1f1f9-1f1e8.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/twemoji/1f1f9-1f1e9.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/twemoji/1f1f9-1f1eb.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/twemoji/1f1f9-1f1ec.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/twemoji/1f1f9-1f1ed.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/twemoji/1f1f9-1f1ef.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/twemoji/1f1f9-1f1f0.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/twemoji/1f1f9-1f1f1.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/twemoji/1f1f9-1f1f2.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/twemoji/1f1f9-1f1f3.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/twemoji/1f1f9-1f1f4.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/twemoji/1f1f9-1f1f7.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/twemoji/1f1f9-1f1f9.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/twemoji/1f1f9-1f1fb.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/twemoji/1f1f9-1f1fc.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/twemoji/1f1f9-1f1ff.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/twemoji/1f1f9.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/twemoji/1f1fa-1f1e6.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/twemoji/1f1fa-1f1ec.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/twemoji/1f1fa-1f1f2.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/twemoji/1f1fa-1f1f3.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/twemoji/1f1fa-1f1f8.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/twemoji/1f1fa-1f1fe.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/twemoji/1f1fa-1f1ff.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/twemoji/1f1fa.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/twemoji/1f1fb-1f1e6.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/twemoji/1f1fb-1f1e8.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/twemoji/1f1fb-1f1ea.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/twemoji/1f1fb-1f1ec.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/twemoji/1f1fb-1f1ee.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/twemoji/1f1fb-1f1f3.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/twemoji/1f1fb-1f1fa.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/twemoji/1f1fb.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/twemoji/1f1fc-1f1eb.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/twemoji/1f1fc-1f1f8.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/twemoji/1f1fc.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/twemoji/1f1fd-1f1f0.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/twemoji/1f1fd.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/twemoji/1f1fe-1f1ea.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/twemoji/1f1fe-1f1f9.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/twemoji/1f1fe.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/twemoji/1f1ff-1f1e6.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/twemoji/1f1ff-1f1f2.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/twemoji/1f1ff-1f1fc.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/twemoji/1f1ff.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/twemoji/1f201.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/twemoji/1f202.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/twemoji/1f21a.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/twemoji/1f22f.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/twemoji/1f232.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/twemoji/1f233.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/twemoji/1f234.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/twemoji/1f235.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/twemoji/1f236.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/twemoji/1f237.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/twemoji/1f238.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/twemoji/1f239.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/twemoji/1f23a.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/twemoji/1f250.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/twemoji/1f251.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/twemoji/1f300.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/twemoji/1f301.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/twemoji/1f302.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/twemoji/1f303.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/twemoji/1f304.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/twemoji/1f305.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/twemoji/1f306.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/twemoji/1f307.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/twemoji/1f308.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/twemoji/1f309.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/twemoji/1f30a.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/twemoji/1f30b.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/twemoji/1f30c.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/twemoji/1f30d.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/twemoji/1f30e.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/twemoji/1f30f.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/twemoji/1f310.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/twemoji/1f311.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/twemoji/1f312.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/twemoji/1f313.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/twemoji/1f314.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/twemoji/1f315.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/twemoji/1f316.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/twemoji/1f317.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/twemoji/1f318.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/twemoji/1f319.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/twemoji/1f31a.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/twemoji/1f31b.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/twemoji/1f31c.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/twemoji/1f31d.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/twemoji/1f31e.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/twemoji/1f31f.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/twemoji/1f320.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/twemoji/1f321.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/twemoji/1f324.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/twemoji/1f325.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/twemoji/1f326.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/twemoji/1f327.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/twemoji/1f328.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/twemoji/1f329.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/twemoji/1f32a.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/twemoji/1f32b.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/twemoji/1f32c.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/twemoji/1f32d.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/twemoji/1f32e.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/twemoji/1f32f.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/twemoji/1f330.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/twemoji/1f331.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/twemoji/1f332.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/twemoji/1f333.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/twemoji/1f334.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/twemoji/1f335.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/twemoji/1f336.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/twemoji/1f337.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/twemoji/1f338.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/twemoji/1f339.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/twemoji/1f33a.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/twemoji/1f33b.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/twemoji/1f33c.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/twemoji/1f33d.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/twemoji/1f33e.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/twemoji/1f33f.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/twemoji/1f340.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/twemoji/1f341.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/twemoji/1f342.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/twemoji/1f343.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/twemoji/1f344-200d-1f7eb.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/twemoji/1f344.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/twemoji/1f345.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/twemoji/1f346.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/twemoji/1f347.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/twemoji/1f348.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/twemoji/1f349.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/twemoji/1f34a.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/emoji-sets/twemoji/1f34b-200d-1f7e9.png +0 -0
- docu_craft-0.1.0/docu_craft/assets/skeletons/academic_article.yaml +29 -0
- docu_craft-0.1.0/docu_craft/assets/skeletons/course_handout.yaml +23 -0
- docu_craft-0.1.0/docu_craft/assets/skeletons/official_letter.yaml +17 -0
- docu_craft-0.1.0/docu_craft/assets/skeletons/plan_trabajo.yaml +20 -0
- docu_craft-0.1.0/docu_craft/assets/skeletons/tech_doc.yaml +21 -0
- docu_craft-0.1.0/docu_craft/assets/themes/handout/style.css +114 -0
- docu_craft-0.1.0/docu_craft/assets/themes/handout/theme.yaml +5 -0
- docu_craft-0.1.0/docu_craft/assets/themes/official/style.css +122 -0
- docu_craft-0.1.0/docu_craft/assets/themes/official/theme.yaml +5 -0
- docu_craft-0.1.0/docu_craft/assets/themes/scholar/style.css +146 -0
- docu_craft-0.1.0/docu_craft/assets/themes/scholar/theme.yaml +5 -0
- docu_craft-0.1.0/docu_craft/assets/themes/tech-doc/style.css +130 -0
- docu_craft-0.1.0/docu_craft/assets/themes/tech-doc/theme.yaml +5 -0
- docu_craft-0.1.0/docu_craft/config.py +73 -0
- docu_craft-0.1.0/docu_craft/document.py +88 -0
- docu_craft-0.1.0/docu_craft/emoji/__init__.py +4 -0
- docu_craft-0.1.0/docu_craft/emoji/downloader.py +141 -0
- docu_craft-0.1.0/docu_craft/emoji/manager.py +28 -0
- docu_craft-0.1.0/docu_craft/emoji/processor.py +51 -0
- docu_craft-0.1.0/docu_craft/renderers/__init__.py +75 -0
- docu_craft-0.1.0/docu_craft/renderers/base.py +7 -0
- docu_craft-0.1.0/docu_craft/renderers/reportlab_pdf.py +24 -0
- docu_craft-0.1.0/docu_craft/renderers/weasyprint_pdf.py +39 -0
- docu_craft-0.1.0/docu_craft/skeletons/__init__.py +4 -0
- docu_craft-0.1.0/docu_craft/skeletons/base.py +34 -0
- docu_craft-0.1.0/docu_craft/skeletons/manager.py +58 -0
- docu_craft-0.1.0/docu_craft/storage.py +119 -0
- docu_craft-0.1.0/docu_craft/themes/__init__.py +4 -0
- docu_craft-0.1.0/docu_craft/themes/base.py +18 -0
- docu_craft-0.1.0/docu_craft/themes/manager.py +28 -0
- docu_craft-0.1.0/docu_craft.egg-info/PKG-INFO +213 -0
- docu_craft-0.1.0/docu_craft.egg-info/SOURCES.txt +494 -0
- docu_craft-0.1.0/docu_craft.egg-info/dependency_links.txt +1 -0
- docu_craft-0.1.0/docu_craft.egg-info/requires.txt +23 -0
- docu_craft-0.1.0/docu_craft.egg-info/top_level.txt +1 -0
- docu_craft-0.1.0/pyproject.toml +65 -0
- docu_craft-0.1.0/setup.cfg +4 -0
- docu_craft-0.1.0/tests/test_config.py +60 -0
- docu_craft-0.1.0/tests/test_document.py +78 -0
- docu_craft-0.1.0/tests/test_renderers.py +50 -0
- docu_craft-0.1.0/tests/test_skeletons.py +78 -0
- docu_craft-0.1.0/tests/test_storage.py +197 -0
- docu_craft-0.1.0/tests/test_themes.py +58 -0
docu_craft-0.1.0/LICENSE
ADDED
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
Apache License
|
|
2
|
+
Version 2.0, January 2004
|
|
3
|
+
http://www.apache.org/licenses/
|
|
4
|
+
|
|
5
|
+
Copyright 2026 Christian A. Servin Lozano
|
|
6
|
+
|
|
7
|
+
Licensed under the Apache License, Version 2.0 (the "License");
|
|
8
|
+
you may not use this file except in compliance with the License.
|
|
9
|
+
You may obtain a copy of the License at
|
|
10
|
+
|
|
11
|
+
http://www.apache.org/licenses/LICENSE-2.0
|
|
12
|
+
|
|
13
|
+
Unless required by applicable law or agreed to in writing, software
|
|
14
|
+
distributed under the License is distributed on an "AS IS" BASIS,
|
|
15
|
+
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
16
|
+
See the License for the specific language governing permissions and
|
|
17
|
+
limitations under the License.
|
|
@@ -0,0 +1,213 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: docu-craft
|
|
3
|
+
Version: 0.1.0
|
|
4
|
+
Summary: Convert Markdown to polished documents with reusable themes
|
|
5
|
+
Author-email: "Christian A. Servin Lozano" <cservinl@hotmail.com>
|
|
6
|
+
License-Expression: Apache-2.0
|
|
7
|
+
Project-URL: Homepage, https://github.com/CServinL/docu-craft
|
|
8
|
+
Project-URL: Repository, https://github.com/CServinL/docu-craft
|
|
9
|
+
Project-URL: Documentation, https://github.com/CServinL/docu-craft/tree/main/docs
|
|
10
|
+
Project-URL: Bug Tracker, https://github.com/CServinL/docu-craft/issues
|
|
11
|
+
Keywords: markdown,pdf,document,themes,latex,weasyprint,reportlab
|
|
12
|
+
Classifier: Development Status :: 3 - Alpha
|
|
13
|
+
Classifier: Intended Audience :: Developers
|
|
14
|
+
Classifier: Intended Audience :: Science/Research
|
|
15
|
+
Classifier: Intended Audience :: Education
|
|
16
|
+
Classifier: Programming Language :: Python :: 3
|
|
17
|
+
Classifier: Programming Language :: Python :: 3.10
|
|
18
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
19
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
20
|
+
Classifier: Programming Language :: Python :: 3.13
|
|
21
|
+
Classifier: Topic :: Text Processing :: Markup
|
|
22
|
+
Classifier: Topic :: Office/Business
|
|
23
|
+
Classifier: Topic :: Documentation
|
|
24
|
+
Requires-Python: >=3.10
|
|
25
|
+
Description-Content-Type: text/markdown
|
|
26
|
+
License-File: LICENSE
|
|
27
|
+
Requires-Dist: markdown>=3.5
|
|
28
|
+
Requires-Dist: weasyprint>=60
|
|
29
|
+
Requires-Dist: pyyaml>=6.0
|
|
30
|
+
Requires-Dist: jinja2>=3.1
|
|
31
|
+
Requires-Dist: Pygments>=2.16
|
|
32
|
+
Provides-Extra: reportlab
|
|
33
|
+
Requires-Dist: reportlab>=4.0; extra == "reportlab"
|
|
34
|
+
Provides-Extra: docx
|
|
35
|
+
Requires-Dist: python-docx>=1.1; extra == "docx"
|
|
36
|
+
Provides-Extra: emoji
|
|
37
|
+
Requires-Dist: emoji>=2.0; extra == "emoji"
|
|
38
|
+
Provides-Extra: all
|
|
39
|
+
Requires-Dist: docu_craft[docx,emoji,reportlab]; extra == "all"
|
|
40
|
+
Provides-Extra: dev
|
|
41
|
+
Requires-Dist: pytest>=8.0; extra == "dev"
|
|
42
|
+
Requires-Dist: pytest-cov>=5.0; extra == "dev"
|
|
43
|
+
Requires-Dist: mkdocs>=1.6; extra == "dev"
|
|
44
|
+
Requires-Dist: mkdocs-material>=9.0; extra == "dev"
|
|
45
|
+
Dynamic: license-file
|
|
46
|
+
|
|
47
|
+
# DocuCraft
|
|
48
|
+
|
|
49
|
+
Stop writing PDFs by hand. Write Markdown, get a polished document.
|
|
50
|
+
|
|
51
|
+
```python
|
|
52
|
+
import docu_craft
|
|
53
|
+
|
|
54
|
+
docu_craft.render("report.md", theme="scholar")
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
---
|
|
58
|
+
|
|
59
|
+
## What it does
|
|
60
|
+
|
|
61
|
+
You write content in Markdown. DocuCraft handles everything else:
|
|
62
|
+
|
|
63
|
+
- **Picks a theme** — fonts, colors, margins, tables, code blocks, all styled consistently
|
|
64
|
+
- **Validates structure** — checks that your document has the sections it needs before rendering
|
|
65
|
+
- **Handles emoji** — replaces emoji characters with proper PNG images in the PDF
|
|
66
|
+
- **Finds your assets** — themes, skeletons, and emoji sets from the package, your home folder, or any mounted path
|
|
67
|
+
|
|
68
|
+
No more pasting CSS into scripts. No more fighting with PDF libraries. No more `weasyprint.HTML(string=html, base_url='.').write_pdf(...)` every time.
|
|
69
|
+
|
|
70
|
+
---
|
|
71
|
+
|
|
72
|
+
## Install
|
|
73
|
+
|
|
74
|
+
```bash
|
|
75
|
+
pip install docu_craft
|
|
76
|
+
|
|
77
|
+
# with ReportLab support
|
|
78
|
+
pip install "docu_craft[reportlab]"
|
|
79
|
+
|
|
80
|
+
# everything
|
|
81
|
+
pip install "docu_craft[all]"
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
---
|
|
85
|
+
|
|
86
|
+
## Themes
|
|
87
|
+
|
|
88
|
+
Built-in themes, ready to use:
|
|
89
|
+
|
|
90
|
+
| Theme | Best for |
|
|
91
|
+
|-------|----------|
|
|
92
|
+
| `scholar` | Academic articles, PhD documents |
|
|
93
|
+
| `handout` | Course materials, workshops |
|
|
94
|
+
| `tech-doc` | API docs, technical references |
|
|
95
|
+
| `official` | Institutional letters, formal reports |
|
|
96
|
+
|
|
97
|
+
```python
|
|
98
|
+
docu_craft.render("thesis.md", theme="scholar")
|
|
99
|
+
docu_craft.render("class_notes.md", theme="handout")
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
Drop your own theme in `~/docu_craft/themes/mytheme/style.css` and use it the same way.
|
|
103
|
+
|
|
104
|
+
---
|
|
105
|
+
|
|
106
|
+
## Skeletons
|
|
107
|
+
|
|
108
|
+
Skeletons define what sections a document should have. DocuCraft tells you if something is missing before you render.
|
|
109
|
+
|
|
110
|
+
```python
|
|
111
|
+
doc = docu_craft.Document("thesis.md")
|
|
112
|
+
doc.apply_skeleton("academic_article").validate() # raises if Introducción or Conclusiones missing
|
|
113
|
+
doc.render()
|
|
114
|
+
```
|
|
115
|
+
|
|
116
|
+
Built-in skeletons: `academic_article`, `plan_trabajo`, `tech_doc`, `official_letter`, `course_handout`.
|
|
117
|
+
|
|
118
|
+
Write your own in YAML or as a Python class with custom validation logic.
|
|
119
|
+
|
|
120
|
+
---
|
|
121
|
+
|
|
122
|
+
## Emoji in PDFs
|
|
123
|
+
|
|
124
|
+
PDF fonts don't render emoji. DocuCraft swaps them for PNG images automatically.
|
|
125
|
+
|
|
126
|
+
```python
|
|
127
|
+
docu_craft.render("notes.md", theme="scholar", emoji_set="twemoji")
|
|
128
|
+
```
|
|
129
|
+
|
|
130
|
+
Two sets ship with the package: `noto-minimal` (60 common emoji, Apache 2.0) and `twemoji` (3800+ emoji, CC-BY 4.0). Download more:
|
|
131
|
+
|
|
132
|
+
```bash
|
|
133
|
+
python -m docu_craft.emoji.downloader twemoji
|
|
134
|
+
python -m docu_craft.emoji.downloader noto
|
|
135
|
+
```
|
|
136
|
+
|
|
137
|
+
---
|
|
138
|
+
|
|
139
|
+
## Config layers
|
|
140
|
+
|
|
141
|
+
Set defaults once, override whenever you need:
|
|
142
|
+
|
|
143
|
+
```yaml
|
|
144
|
+
# ~/docu_craft/config.yaml — your personal defaults
|
|
145
|
+
defaults:
|
|
146
|
+
theme: scholar
|
|
147
|
+
emoji_set: twemoji
|
|
148
|
+
```
|
|
149
|
+
|
|
150
|
+
```yaml
|
|
151
|
+
# .docu_craft.yaml — per-project overrides
|
|
152
|
+
defaults:
|
|
153
|
+
theme: handout
|
|
154
|
+
```
|
|
155
|
+
|
|
156
|
+
```markdown
|
|
157
|
+
---
|
|
158
|
+
theme: official
|
|
159
|
+
---
|
|
160
|
+
# Per-document frontmatter overrides everything above
|
|
161
|
+
```
|
|
162
|
+
|
|
163
|
+
```python
|
|
164
|
+
# Explicit argument wins over all of the above
|
|
165
|
+
docu_craft.render("file.md", theme="tech-doc")
|
|
166
|
+
```
|
|
167
|
+
|
|
168
|
+
---
|
|
169
|
+
|
|
170
|
+
## Extended storage
|
|
171
|
+
|
|
172
|
+
Point DocuCraft at any folder — a team share, a mounted drive, a network path. It searches all of them for themes, skeletons, and emoji sets.
|
|
173
|
+
|
|
174
|
+
```python
|
|
175
|
+
docu_craft.add_extended_store("/mnt/team/docu_craft-assets", name="team")
|
|
176
|
+
docu_craft.add_extended_store("G:/Shared/styles", name="gdrive")
|
|
177
|
+
```
|
|
178
|
+
|
|
179
|
+
Or declare it in `.docu_craft.yaml`:
|
|
180
|
+
|
|
181
|
+
```yaml
|
|
182
|
+
extended_stores:
|
|
183
|
+
- /mnt/team/docu_craft-assets
|
|
184
|
+
- path: G:/Shared/styles
|
|
185
|
+
name: gdrive
|
|
186
|
+
```
|
|
187
|
+
|
|
188
|
+
---
|
|
189
|
+
|
|
190
|
+
## Pluggable renderers
|
|
191
|
+
|
|
192
|
+
```python
|
|
193
|
+
docu_craft.register_renderer(
|
|
194
|
+
format="pdf",
|
|
195
|
+
module_path="mypackage.renderer:MyRenderer",
|
|
196
|
+
engine="myengine",
|
|
197
|
+
package="mypackage",
|
|
198
|
+
install="pip install mypackage",
|
|
199
|
+
)
|
|
200
|
+
|
|
201
|
+
doc.render(format="pdf", engine="myengine")
|
|
202
|
+
```
|
|
203
|
+
|
|
204
|
+
| Format | Engine | Status |
|
|
205
|
+
|--------|--------|--------|
|
|
206
|
+
| PDF | weasyprint | ✅ |
|
|
207
|
+
| PDF | reportlab | 🚧 WIP |
|
|
208
|
+
|
|
209
|
+
---
|
|
210
|
+
|
|
211
|
+
## License
|
|
212
|
+
|
|
213
|
+
Apache 2.0 © Christian A. Servin Lozano
|
|
@@ -0,0 +1,167 @@
|
|
|
1
|
+
# DocuCraft
|
|
2
|
+
|
|
3
|
+
Stop writing PDFs by hand. Write Markdown, get a polished document.
|
|
4
|
+
|
|
5
|
+
```python
|
|
6
|
+
import docu_craft
|
|
7
|
+
|
|
8
|
+
docu_craft.render("report.md", theme="scholar")
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
## What it does
|
|
14
|
+
|
|
15
|
+
You write content in Markdown. DocuCraft handles everything else:
|
|
16
|
+
|
|
17
|
+
- **Picks a theme** — fonts, colors, margins, tables, code blocks, all styled consistently
|
|
18
|
+
- **Validates structure** — checks that your document has the sections it needs before rendering
|
|
19
|
+
- **Handles emoji** — replaces emoji characters with proper PNG images in the PDF
|
|
20
|
+
- **Finds your assets** — themes, skeletons, and emoji sets from the package, your home folder, or any mounted path
|
|
21
|
+
|
|
22
|
+
No more pasting CSS into scripts. No more fighting with PDF libraries. No more `weasyprint.HTML(string=html, base_url='.').write_pdf(...)` every time.
|
|
23
|
+
|
|
24
|
+
---
|
|
25
|
+
|
|
26
|
+
## Install
|
|
27
|
+
|
|
28
|
+
```bash
|
|
29
|
+
pip install docu_craft
|
|
30
|
+
|
|
31
|
+
# with ReportLab support
|
|
32
|
+
pip install "docu_craft[reportlab]"
|
|
33
|
+
|
|
34
|
+
# everything
|
|
35
|
+
pip install "docu_craft[all]"
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
---
|
|
39
|
+
|
|
40
|
+
## Themes
|
|
41
|
+
|
|
42
|
+
Built-in themes, ready to use:
|
|
43
|
+
|
|
44
|
+
| Theme | Best for |
|
|
45
|
+
|-------|----------|
|
|
46
|
+
| `scholar` | Academic articles, PhD documents |
|
|
47
|
+
| `handout` | Course materials, workshops |
|
|
48
|
+
| `tech-doc` | API docs, technical references |
|
|
49
|
+
| `official` | Institutional letters, formal reports |
|
|
50
|
+
|
|
51
|
+
```python
|
|
52
|
+
docu_craft.render("thesis.md", theme="scholar")
|
|
53
|
+
docu_craft.render("class_notes.md", theme="handout")
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
Drop your own theme in `~/docu_craft/themes/mytheme/style.css` and use it the same way.
|
|
57
|
+
|
|
58
|
+
---
|
|
59
|
+
|
|
60
|
+
## Skeletons
|
|
61
|
+
|
|
62
|
+
Skeletons define what sections a document should have. DocuCraft tells you if something is missing before you render.
|
|
63
|
+
|
|
64
|
+
```python
|
|
65
|
+
doc = docu_craft.Document("thesis.md")
|
|
66
|
+
doc.apply_skeleton("academic_article").validate() # raises if Introducción or Conclusiones missing
|
|
67
|
+
doc.render()
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
Built-in skeletons: `academic_article`, `plan_trabajo`, `tech_doc`, `official_letter`, `course_handout`.
|
|
71
|
+
|
|
72
|
+
Write your own in YAML or as a Python class with custom validation logic.
|
|
73
|
+
|
|
74
|
+
---
|
|
75
|
+
|
|
76
|
+
## Emoji in PDFs
|
|
77
|
+
|
|
78
|
+
PDF fonts don't render emoji. DocuCraft swaps them for PNG images automatically.
|
|
79
|
+
|
|
80
|
+
```python
|
|
81
|
+
docu_craft.render("notes.md", theme="scholar", emoji_set="twemoji")
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
Two sets ship with the package: `noto-minimal` (60 common emoji, Apache 2.0) and `twemoji` (3800+ emoji, CC-BY 4.0). Download more:
|
|
85
|
+
|
|
86
|
+
```bash
|
|
87
|
+
python -m docu_craft.emoji.downloader twemoji
|
|
88
|
+
python -m docu_craft.emoji.downloader noto
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
---
|
|
92
|
+
|
|
93
|
+
## Config layers
|
|
94
|
+
|
|
95
|
+
Set defaults once, override whenever you need:
|
|
96
|
+
|
|
97
|
+
```yaml
|
|
98
|
+
# ~/docu_craft/config.yaml — your personal defaults
|
|
99
|
+
defaults:
|
|
100
|
+
theme: scholar
|
|
101
|
+
emoji_set: twemoji
|
|
102
|
+
```
|
|
103
|
+
|
|
104
|
+
```yaml
|
|
105
|
+
# .docu_craft.yaml — per-project overrides
|
|
106
|
+
defaults:
|
|
107
|
+
theme: handout
|
|
108
|
+
```
|
|
109
|
+
|
|
110
|
+
```markdown
|
|
111
|
+
---
|
|
112
|
+
theme: official
|
|
113
|
+
---
|
|
114
|
+
# Per-document frontmatter overrides everything above
|
|
115
|
+
```
|
|
116
|
+
|
|
117
|
+
```python
|
|
118
|
+
# Explicit argument wins over all of the above
|
|
119
|
+
docu_craft.render("file.md", theme="tech-doc")
|
|
120
|
+
```
|
|
121
|
+
|
|
122
|
+
---
|
|
123
|
+
|
|
124
|
+
## Extended storage
|
|
125
|
+
|
|
126
|
+
Point DocuCraft at any folder — a team share, a mounted drive, a network path. It searches all of them for themes, skeletons, and emoji sets.
|
|
127
|
+
|
|
128
|
+
```python
|
|
129
|
+
docu_craft.add_extended_store("/mnt/team/docu_craft-assets", name="team")
|
|
130
|
+
docu_craft.add_extended_store("G:/Shared/styles", name="gdrive")
|
|
131
|
+
```
|
|
132
|
+
|
|
133
|
+
Or declare it in `.docu_craft.yaml`:
|
|
134
|
+
|
|
135
|
+
```yaml
|
|
136
|
+
extended_stores:
|
|
137
|
+
- /mnt/team/docu_craft-assets
|
|
138
|
+
- path: G:/Shared/styles
|
|
139
|
+
name: gdrive
|
|
140
|
+
```
|
|
141
|
+
|
|
142
|
+
---
|
|
143
|
+
|
|
144
|
+
## Pluggable renderers
|
|
145
|
+
|
|
146
|
+
```python
|
|
147
|
+
docu_craft.register_renderer(
|
|
148
|
+
format="pdf",
|
|
149
|
+
module_path="mypackage.renderer:MyRenderer",
|
|
150
|
+
engine="myengine",
|
|
151
|
+
package="mypackage",
|
|
152
|
+
install="pip install mypackage",
|
|
153
|
+
)
|
|
154
|
+
|
|
155
|
+
doc.render(format="pdf", engine="myengine")
|
|
156
|
+
```
|
|
157
|
+
|
|
158
|
+
| Format | Engine | Status |
|
|
159
|
+
|--------|--------|--------|
|
|
160
|
+
| PDF | weasyprint | ✅ |
|
|
161
|
+
| PDF | reportlab | 🚧 WIP |
|
|
162
|
+
|
|
163
|
+
---
|
|
164
|
+
|
|
165
|
+
## License
|
|
166
|
+
|
|
167
|
+
Apache 2.0 © Christian A. Servin Lozano
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
from .document import Document
|
|
2
|
+
from .themes import ThemeManager
|
|
3
|
+
from .skeletons import SkeletonManager
|
|
4
|
+
from .skeletons.manager import register as register_skeleton
|
|
5
|
+
from .renderers import get_renderer
|
|
6
|
+
from .renderers import register as register_renderer
|
|
7
|
+
from .config import add_extended_store
|
|
8
|
+
from .storage import registry, StorageRegistry, Store, StoreKind
|
|
9
|
+
from pathlib import Path
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
def render(
|
|
13
|
+
source: str | Path,
|
|
14
|
+
theme: str = "scholar",
|
|
15
|
+
format: str = "pdf",
|
|
16
|
+
output: str | Path | None = None,
|
|
17
|
+
engine: str | None = None,
|
|
18
|
+
emoji_set: str | None = None,
|
|
19
|
+
) -> Path:
|
|
20
|
+
return Document(source).apply_theme(theme).render(
|
|
21
|
+
format=format, output=output, engine=engine, emoji_set=emoji_set
|
|
22
|
+
)
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
__all__ = [
|
|
26
|
+
"Document",
|
|
27
|
+
"ThemeManager",
|
|
28
|
+
"SkeletonManager",
|
|
29
|
+
"get_renderer",
|
|
30
|
+
"register_renderer",
|
|
31
|
+
"register_skeleton",
|
|
32
|
+
"add_extended_store",
|
|
33
|
+
"registry",
|
|
34
|
+
"StorageRegistry",
|
|
35
|
+
"Store",
|
|
36
|
+
"StoreKind",
|
|
37
|
+
"render",
|
|
38
|
+
]
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|