{ "info": { "author": "David Betz", "author_email": "dfb@davidbetz.net", "bugtrack_url": null, "classifiers": [ "Intended Audience :: Developers", "License :: OSI Approved :: MIT License", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3.6", "Topic :: Software Development :: Build Tools" ], "description": "Extended Content Reader\n=======================\n\n**Copyright (c) 2016-2017 David Betz**\n\n|Build Status| |PyPI version|\n\nInstallation\n------------\n\n::\n\n pip install econtent\n\nCompatibility\n-------------\n\nPython 2 and 3\n\nPurpose\n-------\n\nFiles have content and metadata. Markdown has already helps us go from\nboring text files to rich text (without RTF or proprietary voodoo), but\nit's not enough. My content needs sections and it needs metadata. They\nalready have a create date and a modified date, but I often need to\noverwrite these. That's where this component comes in. It's been helping\nme for a few years now (well, this is the Python refactor/port of my\noriginal/production/more complex .NET version).\n\nIt's easier to following if you just look at the example...\n\nThe following example is ridiculous, but it's an example of the type of\nstuff you might store in a file:\n\n**item01.txt**\n\n::\n\n hollow unbraced needs mineral high fingerd strings red tragical having definement invisible@@footnote|78@@. flames grow pranks obey hearsed variable grandsire bodykins possessd worser oerthrown oerweigh healthful kingly wise faculty loggats best.\n\n unfortified chopine hill witchcraft countries toward nerve grief duty rivals.\n\n @@begin|format:javascript@@\n alert((function() {\n var item = 'item01';\n return item.split('').reverse()\n })());\n @@format:python@@\n print('item01'[::-1])\n @@end@@\n\n patience unhouseld pours lapsed would passion point blastments lady spectators.\n\n @author@ Billy Speareshakes\n @title@ Thy Wonderful Randomious\n @page@ 728\n @footnote|78@ nose thee something disclaiming wrung antiquity rend illume halt osric list\n @_created@ 2016-07-27T19:38:10Z\n @_modified@ 2016-07-27T19:38:10Z\n\nThere are two paragraphs, followed by a block of JavaScript, then a\nblock of Python, then another paragraph, then a bunch of metadata. It's\na rediclous example because it combines concepts from both research\nwebsite (citations and footnotes) and my\n`netfxharmonics.com `__ website (the javascript\nsection, which in that context in final rendering would be rendered with\nJavaScript colored syntax).\n\nThe current python project reads that file as the following object:\n\n::\n\n {\n '_': {\n 0: 'hollow unbraced needs mineral high fingerd strings red tragical having definement invisible@@footnote|78@@. flames grow pranks obey hearsed variable grandsire bodykins possessd worser oerthrown oerweigh healthful kingly wise faculty loggats best.\\nunfortified chopine hill witchcraft countries toward nerve grief duty rivals.',\n 1: {\n 0: {\n '_': \" alert((function() {\\n var item = 'item01';\\n return item.split('').reverse()\\n })());\",\n 'format': 'javascript'\n },\n 1: {\n '_': \" print('item01'[::-1])\",\n 'format': 'python'\n }\n },\n 2: 'patience unhouseld pours lapsed would passion point blastments lady spectators.',\n },\n 'author': 'Billy Speareshakes',\n 'title': 'Thy Wonderful Randomious',\n 'page': '728',\n 'footnote': {\n 78: 'nose thee something disclaiming wrung antiquity rend illume halt osric list', \n },\n '_created': '2016-07-27T19:38:10Z',\n '_modified': '2016-07-27T19:38:10Z',\n '_filename': 'item01.txt',\n '_extension': 'txt',\n '_basename': 'item01',\n }\n\nThat's really useful information without the needs to play around with\nparsing file internals.\n\nThe created, modified, filename, extension, and basename are read from\nthe file metadata, but created and modified can be overwritten using\n@\\_created@ and @\\_modified@ tokens.\n\nBut, it's not just metadata. On my technical website, I require color\nsyntax for various programming languages. Preformatting makes the code\nunreadable. So, I need sections(@@begin...@@/@@end@@. On my research\nwebsite, I require extensive citations and footnotes. So, I need\nlinkable content (@@XXXX@@).\n\nSee test\\_read.py for usage.\n\nUse Cases\n=========\n\n- one entry == blog entry\n- one entry == one quote (with citation data)\n- one entry == one podcast mp3; you would use something like @audio@\n which would tell your custom system that this entry is describing\n that particular mp3\n\n.. |Build Status| image:: https://travis-ci.org/davidbetz/pyecontent.svg?branch=master\n :target: https://travis-ci.org/davidbetz/pyecontent\n.. |PyPI version| image:: https://badge.fury.io/py/econtent.svg\n :target: https://badge.fury.io/py/econtent", "description_content_type": null, "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/davidbetz/econtent", "keywords": "metadata,content", "license": "MIT", "maintainer": "", "maintainer_email": "", "name": "econtent", "package_url": "https://pypi.org/project/econtent/", "platform": "", "project_url": "https://pypi.org/project/econtent/", "project_urls": { "Homepage": "https://github.com/davidbetz/econtent" }, "release_url": "https://pypi.org/project/econtent/1.4.6/", "requires_dist": null, "requires_python": "", "summary": "Python module to read extended file content and metadata", "version": "1.4.6" }, "last_serial": 3030278, "releases": { "1.4": [ { "comment_text": "", "digests": { "md5": "1553bc9e2a8ac198201128b035e694fc", "sha256": "ab8cf85c24e428cfb0b72594e800f597719256f6738cae84446bbfa80a01b4df" }, "downloads": -1, "filename": "econtent-1.4.tar.gz", "has_sig": false, "md5_digest": "1553bc9e2a8ac198201128b035e694fc", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6630, "upload_time": "2017-07-15T14:00:43", "url": "https://files.pythonhosted.org/packages/e4/ee/e60f2dd7ecea850eede0c873666854747c7370c2c6df8118ecf8845e7236/econtent-1.4.tar.gz" } ], "1.4.1": [ { "comment_text": "", "digests": { "md5": "5bc42a1663b061cdceac2599f759c62f", "sha256": "84fa5a9cf444b804767c25d7773c943f5dd6597b5b40cdd63893aada3565586e" }, "downloads": -1, "filename": "econtent-1.4.1.tar.gz", "has_sig": false, "md5_digest": "5bc42a1663b061cdceac2599f759c62f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6648, "upload_time": "2017-07-15T14:02:46", "url": "https://files.pythonhosted.org/packages/68/32/e2e11aaecffa839c245a74ec194c2bf84c845be283917baac63e755be456/econtent-1.4.1.tar.gz" } ], "1.4.2": [ { "comment_text": "", "digests": { "md5": "02b925bd67426b3b1de57626135645e6", "sha256": "c0ba7498412f032fd1af047d90fdd9e06dd71f693c22a221a1f5ec7b7e821e1f" }, "downloads": -1, "filename": "econtent-1.4.2.tar.gz", "has_sig": false, "md5_digest": "02b925bd67426b3b1de57626135645e6", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5857, "upload_time": "2017-07-15T14:23:11", "url": "https://files.pythonhosted.org/packages/ab/02/4144b88be77843caa323203723b9bb061a80fc31f57641b246c1e44f645a/econtent-1.4.2.tar.gz" } ], "1.4.3": [ { "comment_text": "", "digests": { "md5": "ca73fd59c45d65c75d36cc30d129d2e1", "sha256": "679a92d1c9d9b584eaa2323bde689f1043a6ec7f1f9587e1e9da613345268b8c" }, "downloads": -1, "filename": "econtent-1.4.3.tar.gz", "has_sig": false, "md5_digest": "ca73fd59c45d65c75d36cc30d129d2e1", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7312, "upload_time": "2017-07-15T14:27:56", "url": "https://files.pythonhosted.org/packages/8a/69/d3a6402e82d9639061c9da5d2b4235deee06f957be68182725eaab16658b/econtent-1.4.3.tar.gz" } ], "1.4.4": [ { "comment_text": "", "digests": { "md5": "1b3e5a24ff170021b788bf1c0c0fc317", "sha256": "3de73e3e300cfd7ef858b6d648852b5a9eace5a0b57731e985b2174263e711d6" }, "downloads": -1, "filename": "econtent-1.4.4.tar.gz", "has_sig": false, "md5_digest": "1b3e5a24ff170021b788bf1c0c0fc317", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7335, "upload_time": "2017-07-18T00:56:42", "url": "https://files.pythonhosted.org/packages/c7/6c/0415734b1668369d0a6c2d8915edcc96a28ffa02a4cff1f1f8089433c24d/econtent-1.4.4.tar.gz" } ], "1.4.5": [ { "comment_text": "", "digests": { "md5": "d41b926847c65d48e0c686cd22984ccc", "sha256": "ea39c5019726d11ea672b32590ad765fafef4dd3899c1a4b6ae7d26addba6502" }, "downloads": -1, "filename": "econtent-1.4.5.tar.gz", "has_sig": false, "md5_digest": "d41b926847c65d48e0c686cd22984ccc", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6723, "upload_time": "2017-07-18T01:29:32", "url": "https://files.pythonhosted.org/packages/53/b1/4adaa7f19a37895a646234fb9fcaa0947778b75e906f56545599d75fe1d8/econtent-1.4.5.tar.gz" } ], "1.4.6": [ { "comment_text": "", "digests": { "md5": "fb9660e06b6e90e7e65902a93a12d8fb", "sha256": "b2b7cdaa9a956ab25b54be6867ec75ccde22d022c80441ee42a38acbdfda4bbe" }, "downloads": -1, "filename": "econtent-1.4.6.tar.gz", "has_sig": false, "md5_digest": "fb9660e06b6e90e7e65902a93a12d8fb", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6724, "upload_time": "2017-07-18T01:33:46", "url": "https://files.pythonhosted.org/packages/98/14/ce641d424a010eceba949ed9d08f36a4c13d01d2e2bb3e091ae84d696068/econtent-1.4.6.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "fb9660e06b6e90e7e65902a93a12d8fb", "sha256": "b2b7cdaa9a956ab25b54be6867ec75ccde22d022c80441ee42a38acbdfda4bbe" }, "downloads": -1, "filename": "econtent-1.4.6.tar.gz", "has_sig": false, "md5_digest": "fb9660e06b6e90e7e65902a93a12d8fb", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6724, "upload_time": "2017-07-18T01:33:46", "url": "https://files.pythonhosted.org/packages/98/14/ce641d424a010eceba949ed9d08f36a4c13d01d2e2bb3e091ae84d696068/econtent-1.4.6.tar.gz" } ] }