{ "info": { "author": "kegeppa", "author_email": "", "bugtrack_url": null, "classifiers": [ "Programming Language :: Python :: 3" ], "description": "Simple Interactive Console Framework\n====================================\n\nFramework for interactive console application.\n\nSample of implementation\n------------------------\n\n::\n\n # -*- coding:utf-8 -*-\n import os\n from sicfw.sicfw import Mode, set_global, get_global, start\n\n MEMO = os.path.expanduser('~/.global_memo_v0_0_1')\n GLOBAL_INPUT = 'input_lines'\n GLOBAL_LINENUM = 'line_num'\n\n class InitialMode(Mode):\n\n def wait_command(self):\n return 'init'\n\n @Mode.command('init')\n def initialize(self):\n if os.path.exists(MEMO):\n lines = []\n with open(MEMO, 'r') as f:\n for line in f:\n lines.append(line.strip())\n set_global(GLOBAL_INPUT, lines)\n else:\n set_global(GLOBAL_INPUT, [])\n\n return MemoMode\n\n @Mode.after_command_message('init')\n def initial_message(self):\n return get_global(GLOBAL_INPUT)\n\n class MemoMode(Mode):\n\n @Mode.after_command_message('--help')\n def help(self):\n message = ['Commands:',\n '-q : Quit gmemo.',\n '-s --save : Save curret memo.',\n '--replace : Replace line.',\n '--reset : Initialize memo.',\n ]\n return message\n\n @Mode.command('-q')\n def quit_command(self):\n exit(0)\n\n @Mode.command('--read')\n def read_command(self):\n if os.path.exists(MEMO):\n lines = []\n with open(MEMO, 'r') as f:\n for line in f:\n lines.append(line.strip())\n set_global(GLOBAL_INPUT, lines)\n return MemoMode\n\n @Mode.after_command_message('--read')\n def after_read_message(self):\n message = ['----------------',\n 'read succeeded!!',\n '----------------'\n ]\n lines = get_global(GLOBAL_INPUT)\n message.extend(lines)\n return message\n\n @Mode.command(('-s', '--save'))\n def save_command(self):\n lines = get_global(GLOBAL_INPUT)\n with open(MEMO, 'w') as f:\n for l in lines:\n f.write(l + '\\n')\n return MemoMode\n\n @Mode.after_command_message(('-s', '--save'))\n def after_save_message(self):\n message = ['----------------',\n 'save succeeded!!',\n '----------------'\n ]\n return message\n\n @Mode.free_input\n def free(self, command):\n lines = get_global(GLOBAL_INPUT)\n if lines:\n lines.append(command)\n else:\n lines = [command]\n set_global(GLOBAL_INPUT, lines)\n return MemoMode\n\n @Mode.command('--replace')\n def change2replace_mode(self):\n return ReplaceMode1\n\n @Mode.command(('-r', '--reset'))\n def reset(self):\n set_global(GLOBAL_INPUT, [])\n return MemoMode\n\n class ReplaceMode1(Mode):\n\n def premessage(self):\n message = ['------------------------------',\n 'input line number for replace.',\n '------------------------------'\n ]\n lines = get_global(GLOBAL_INPUT)\n lines = ['{:>3}'.format(line_num + 1) + ' | ' + line\n for line_num, line in enumerate(lines)]\n message.extend(lines)\n return message\n\n @Mode.free_input\n def select_line(self, command):\n try:\n line_number = int(command)\n except:\n return ReplaceMode1\n\n lines = get_global(GLOBAL_INPUT)\n if line_number > 0 and line_number <= len(lines):\n set_global(GLOBAL_LINENUM, line_number)\n return ReplaceMode2\n else:\n return ReplaceMode1\n\n\n class ReplaceMode2(Mode):\n\n def premessage(self):\n lines = get_global(GLOBAL_INPUT)\n line_num = get_global(GLOBAL_LINENUM)\n message = ['-------------------',\n 'replace target line',\n '-------------------',\n lines[line_num - 1]\n ]\n return message\n\n @Mode.free_input\n def replace_line(self, command):\n lines = get_global(GLOBAL_INPUT)\n line_num = get_global(GLOBAL_LINENUM)\n lines[line_num - 1] = command\n set_global(GLOBAL_INPUT, lines)\n return MemoMode\n\n @Mode.after_free_input_message\n def after_message(self, command):\n lines = get_global(GLOBAL_INPUT)\n message = ['-------------------',\n 'replace succeeded!!',\n '-------------------'\n ]\n message.extend(lines)\n return message\n\n def main():\n start(InitialMode)\n\n if __name__ == '__main__':\n main()\n\n\n", "description_content_type": "", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://gitlab.com/kegeppa", "keywords": "", "license": "MIT", "maintainer": "kegeppa", "maintainer_email": "", "name": "sicfw", "package_url": "https://pypi.org/project/sicfw/", "platform": "", "project_url": "https://pypi.org/project/sicfw/", "project_urls": { "Homepage": "https://gitlab.com/kegeppa" }, "release_url": "https://pypi.org/project/sicfw/0.0.3/", "requires_dist": null, "requires_python": "", "summary": "Framework for simple interactive console.", "version": "0.0.3" }, "last_serial": 4993696, "releases": { "0.0.1": [ { "comment_text": "", "digests": { "md5": "203055d439ddcf4d1fd3f89f64013f28", "sha256": "a8132a078df9fd106fa9d615dd23e7bfa1f8f79424b035873f118e0ba12f06c1" }, "downloads": -1, "filename": "sicfw-0.0.1-py3-none-any.whl", "has_sig": false, "md5_digest": "203055d439ddcf4d1fd3f89f64013f28", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 2035, "upload_time": "2019-03-24T07:29:55", "url": "https://files.pythonhosted.org/packages/24/2c/c4b5a9c217276af39a88c59ab7556c166904d360fc717d77cb7f66959fcc/sicfw-0.0.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "540e22b51cc2f1798c5f8c25d244a760", "sha256": "3725872b083f1970d9f16b98ca2b57e4f54102b685420939ba0cc2c1a0b8a91d" }, "downloads": -1, "filename": "sicfw-0.0.1.tar.gz", "has_sig": false, "md5_digest": "540e22b51cc2f1798c5f8c25d244a760", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 1882, "upload_time": "2019-03-24T07:29:57", "url": "https://files.pythonhosted.org/packages/35/1d/b5e5ad4d62ee011a9b57e9b70f362ed47a7e2e042036f12550a5493563f3/sicfw-0.0.1.tar.gz" } ], "0.0.3": [ { "comment_text": "", "digests": { "md5": "2192a5ed8ea26a56d872bf67180d46b4", "sha256": "9bf411dce9e520462cfd5129294228f86fa95376d6a743971d1fe48e04ba0eab" }, "downloads": -1, "filename": "sicfw-0.0.3-py3-none-any.whl", "has_sig": false, "md5_digest": "2192a5ed8ea26a56d872bf67180d46b4", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 3264, "upload_time": "2019-03-27T16:26:44", "url": "https://files.pythonhosted.org/packages/bf/74/1266fae70b6851e246cb1f982aedecdb75d1864e48712588c83f2ee70397/sicfw-0.0.3-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "270d6fcbec2d9187485a0003c4084bd4", "sha256": "13bf504a17deb06d7a2231c3971f0a31e05588f7b07a4523fb125cb43659aa65" }, "downloads": -1, "filename": "sicfw-0.0.3.tar.gz", "has_sig": false, "md5_digest": "270d6fcbec2d9187485a0003c4084bd4", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3556, "upload_time": "2019-03-27T16:26:45", "url": "https://files.pythonhosted.org/packages/fa/4d/471001ae6c367868d49c7e2f9affed263024c2fff1965617da95ed28c674/sicfw-0.0.3.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "2192a5ed8ea26a56d872bf67180d46b4", "sha256": "9bf411dce9e520462cfd5129294228f86fa95376d6a743971d1fe48e04ba0eab" }, "downloads": -1, "filename": "sicfw-0.0.3-py3-none-any.whl", "has_sig": false, "md5_digest": "2192a5ed8ea26a56d872bf67180d46b4", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 3264, "upload_time": "2019-03-27T16:26:44", "url": "https://files.pythonhosted.org/packages/bf/74/1266fae70b6851e246cb1f982aedecdb75d1864e48712588c83f2ee70397/sicfw-0.0.3-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "270d6fcbec2d9187485a0003c4084bd4", "sha256": "13bf504a17deb06d7a2231c3971f0a31e05588f7b07a4523fb125cb43659aa65" }, "downloads": -1, "filename": "sicfw-0.0.3.tar.gz", "has_sig": false, "md5_digest": "270d6fcbec2d9187485a0003c4084bd4", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3556, "upload_time": "2019-03-27T16:26:45", "url": "https://files.pythonhosted.org/packages/fa/4d/471001ae6c367868d49c7e2f9affed263024c2fff1965617da95ed28c674/sicfw-0.0.3.tar.gz" } ] }