{ "info": { "author": "Marc Brinkmann", "author_email": "git@marcbrinkmann.de", "bugtrack_url": null, "classifiers": [ "Programming Language :: Python :: 2", "Programming Language :: Python :: 3" ], "description": "visitor\n=======\n\nA tiny library to facilitate `visitor\n`_ implementation in Python\n(which are slightly peculiar due to dynamic typing). In fact, it is so small,\nyou may just be better off copy & pasting the source straight into your\nproject...\n\n\nExample use\n-----------\n\nA simple JSON-encoder:\n\n.. code-block:: python\n\n from visitor import Visitor\n\n\n class JSONEncoder(Visitor):\n def __init__(self):\n self.indent = 0\n\n def escape_str(self, s):\n # note: this is not a good escape function, do not use this in\n # production!\n s = s.replace('\\\\', '\\\\\\\\')\n s = s.replace('\"', '\\\\\"')\n return '\"' + s + '\"'\n\n def visit_list(self, node):\n self.indent += 1\n s = '[\\n' + ' ' * self.indent\n s += (',\\n' + ' ' * self.indent).join(self.visit(item)\n for item in node)\n self.indent -= 1\n s += '\\n' + ' ' * self.indent + ']'\n return s\n\n def visit_str(self, node):\n return self.escape_str(node)\n\n def visit_int(self, node):\n return str(node)\n\n def visit_bool(self, node):\n return 'true' if node else 'false'\n\n def visit_dict(self, node):\n self.indent += 1\n s = '{\\n' + ' ' * self.indent\n s += (',\\n' + ' ' * self.indent).join(\n '{}: {}'.format(self.escape_str(key), self.visit(value))\n for key, value in sorted(node.items())\n )\n self.indent -= 1\n s += '\\n' + ' ' * self.indent + '}'\n return s\n\n\n data = [\n 'List', 'of', 42, 'items', True, {\n 'sub1': 'some string',\n 'sub2': {\n 'sub2sub1': False,\n 'sub2sub2': 123,\n }\n }\n ]\n\n print(JSONEncoder().visit(data))\n\n\n\nOutput::\n\n [\n \"List\",\n \"of\",\n 42,\n \"items\",\n true,\n {\n \"sub1\": \"some string\",\n \"sub2\": {\n \"sub2sub1\": false,\n \"sub2sub2\": 123\n }\n }\n ]", "description_content_type": null, "docs_url": null, "download_url": "UNKNOWN", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "http://github.com/mbr/visitor", "keywords": null, "license": "MIT", "maintainer": null, "maintainer_email": null, "name": "visitor", "package_url": "https://pypi.org/project/visitor/", "platform": "UNKNOWN", "project_url": "https://pypi.org/project/visitor/", "project_urls": { "Download": "UNKNOWN", "Homepage": "http://github.com/mbr/visitor" }, "release_url": "https://pypi.org/project/visitor/0.1.3/", "requires_dist": null, "requires_python": null, "summary": "A tiny pythonic visitor implementation.", "version": "0.1.3" }, "last_serial": 2122337, "releases": { "0.1": [ { "comment_text": "", "digests": { "md5": "f70b47d75ceeb0a983d433a6d92de517", "sha256": "ad60c5bcc8ed62c1cef08d8d211a3e94accbb3adb2d0fbf87c67557d91fc0282" }, "downloads": -1, "filename": "visitor-0.1.tar.gz", "has_sig": true, "md5_digest": "f70b47d75ceeb0a983d433a6d92de517", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3097, "upload_time": "2015-07-02T15:32:22", "url": "https://files.pythonhosted.org/packages/cf/0d/3fe1d840a856497a07942b1ac224df60b440cf9cd7b6ecaedf03b0cddb5d/visitor-0.1.tar.gz" } ], "0.1.1": [ { "comment_text": "", "digests": { "md5": "f3fab0ffc63a29470d80b0511626b456", "sha256": "8cc3a246b8e35cee727b91c191fdfcbf669743b2025fe8283006e4cf925627a9" }, "downloads": -1, "filename": "visitor-0.1.1.tar.gz", "has_sig": true, "md5_digest": "f3fab0ffc63a29470d80b0511626b456", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3096, "upload_time": "2015-07-26T10:05:57", "url": "https://files.pythonhosted.org/packages/79/ea/b4840de2dfc09949679460f74c51f268bd294535e3560d8de6f32a3e5aaf/visitor-0.1.1.tar.gz" } ], "0.1.2": [ { "comment_text": "", "digests": { "md5": "e9471b44e5d426b0adf5d27694598be0", "sha256": "d9444ffca56a46a920719460d4952f8c88f8fef97f1ea7d2b1f7c50f675022bd" }, "downloads": -1, "filename": "visitor-0.1.2.tar.gz", "has_sig": true, "md5_digest": "e9471b44e5d426b0adf5d27694598be0", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3226, "upload_time": "2015-07-26T11:09:52", "url": "https://files.pythonhosted.org/packages/6c/40/2f823fdd931e2932c618b678e0ef4340f61a49b8facb7af46873fd97dd47/visitor-0.1.2.tar.gz" } ], "0.1.3": [ { "comment_text": "", "digests": { "md5": "94a024ed0ec1b02b4497c15267d319ca", "sha256": "2c737903b2b6864ebc6167eef7cf3b997126f1aa94bdf590f90f1436d23e480a" }, "downloads": -1, "filename": "visitor-0.1.3.tar.gz", "has_sig": true, "md5_digest": "94a024ed0ec1b02b4497c15267d319ca", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3260, "upload_time": "2016-05-18T19:27:53", "url": "https://files.pythonhosted.org/packages/d7/58/785fcd6de4210049da5fafe62301b197f044f3835393594be368547142b0/visitor-0.1.3.tar.gz" } ], "0.1.dev1": [] }, "urls": [ { "comment_text": "", "digests": { "md5": "94a024ed0ec1b02b4497c15267d319ca", "sha256": "2c737903b2b6864ebc6167eef7cf3b997126f1aa94bdf590f90f1436d23e480a" }, "downloads": -1, "filename": "visitor-0.1.3.tar.gz", "has_sig": true, "md5_digest": "94a024ed0ec1b02b4497c15267d319ca", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3260, "upload_time": "2016-05-18T19:27:53", "url": "https://files.pythonhosted.org/packages/d7/58/785fcd6de4210049da5fafe62301b197f044f3835393594be368547142b0/visitor-0.1.3.tar.gz" } ] }