{ "info": { "author": "Tobias Bengfort", "author_email": "tobias.bengfort@gmx.net", "bugtrack_url": null, "classifiers": [ "Development Status :: 3 - Alpha", "Environment :: Console", "Framework :: Flask", "Intended Audience :: Developers", "License :: OSI Approved :: GNU General Public License v3 or later (GPLv3+)", "Natural Language :: English", "Operating System :: OS Independent", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3.4", "Programming Language :: Python :: Implementation :: PyPy", "Topic :: Internet", "Topic :: Internet :: WWW/HTTP", "Topic :: Internet :: WWW/HTTP :: Site Management", "Topic :: Text Processing", "Topic :: Text Processing :: Filters", "Topic :: Text Processing :: Markup", "Topic :: Text Processing :: Markup :: HTML" ], "description": "About\n=====\n\nFlekky is a static website generator inspired by `Jekyll`_ but written\nin python and based on `Flask`_. It is basically a wrapper around the\nexcellent `Frozen Flask`_ and `Flask FlatPages`_ as described in `this\narticle`_ by Nicolas Perriault.\n\nSo what does it do? It allows you to write templates, assets and\ncontents for your website and bake all that into static HTML. You can\nthan deploy that HTML on any webserver and do not have to worry about\nanything. `Jinja2`_ is used for templating. `Markdown`_ is used for\ncreating content.\n\nThere are many static website generators out there of which Jekyll is\narguably the most popular. You are probably better of with that. But if\nyou like Flask and have fun experimenting with things you might give\nFlekky a try.\n\nQuickstart\n==========\n\n::\n\n $ pip install flekky\n $ flekky init\n $ flekky build\n\nBasic Usage\n===========\n\nTo start a new project, run the ``init`` command::\n\n $ flekky init\n\nYou can generate static HTML by using the ``build`` command::\n\n $ flekky build\n\nFlekky also comes with a built-in development server that will allow you\nto preview what the generated site will look like in your browser\nlocally::\n\n $ flekky serve\n\nFile structure\n==============\n\nA basic Flekky site usually looks like this::\n\n _source\n \u251c\u2500\u2500 pages\n \u2502\u00a0\u00a0 \u251c\u2500\u2500 index.md\n \u2502\u00a0\u00a0 \u2514\u2500\u2500 test.md\n \u251c\u2500\u2500 static\n \u2502\u00a0\u00a0 \u251c\u2500\u2500 css\n \u2502\u00a0\u00a0 \u2502\u00a0\u00a0 \u2514\u2500\u2500 style.css\n \u2502\u00a0\u00a0 \u2514\u2500\u2500 js\n \u2514\u2500\u2500 templates\n \u251c\u2500\u2500 base.html\n \u251c\u2500\u2500 layout\n \u2502\u00a0\u00a0 \u251c\u2500\u2500 category.html\n \u2502\u00a0\u00a0 \u251c\u2500\u2500 default.html\n \u2502\u00a0\u00a0 \u251c\u2500\u2500 post.html\n \u2502\u00a0\u00a0 \u2514\u2500\u2500 tag.html\n \u2514\u2500\u2500 partial.html\n\nAn overview of what each of them does:\n\n- ``pages``: Your dynamic content, so to speak. These are Markdown\n files, but they also contain some `YAML`_ data at the top.\n ``index.md`` is special because all its metadata is added to ``site``\n , so you can use it to set the title of the complete website.\n\n- ``static``: Static files like CSS, JavaScript and images.\n\n- ``templates``: Each page can select a layout that is used to render that\n page. But you will probably also want to include a ``base.html`` that\n these layouts can extend and maybe some partials that can be included.\n\n- Any additional files from the root folder that do not begin with\n an underscore (``_``) or dot (``.``) will be copied verbatim.\n\nCommand-line options\n====================\n\nFlekky has several command-line options:\n\n- general\n\n - ``--source``: directory where Flekky will read files (default:\n ``_source``)\n - ``--future``: include pages with dates in the future (default:\n ``false``)\n - ``--unpublished``: include unpublished pages (default: ``false``)\n\n- build\n\n - ``--destination``: directory where Flekky will write files\n (default: ``_build``)\n\n- serve\n\n - ``--port``: port to run at (default: ``8000``)\n\nVariables\n=========\n\nFlekky makes a variety of data available to the templating system. The\nfollowing is a reference of the available data.\n\npage\n----\n\nA page is a Markdown file in the ``pages`` folder. However, at the top\nof the file you can (and should) set some meta data using `YAML`_\nsyntax. All key-value pairs defined here will be available in the\ntemplates. But some fields also have a special meaning:\n\n- ``title``: Title for this page.\n\n- ``layout``: Select a template from the ``layout`` folder for\n rendering (default: ``default``).\n\n- ``published``: Unpublished pages will not be included in the website.\n This can be disabled using the ``--unpublished`` command-line option.\n\n- ``date``: Pages with dates in the future are not included in the\n website. This can be disabled using the ``--future`` command-line\n option.\n\nThe content of a page can be accessed via its ``html`` attribute. However,\nin many cases you may want to shift all headings by one or two levels in order\nto fit the content into the document outline. This can be done by using\n``fix_outline(baseheading_level)``.\n\nsite\n----\n\nThe site object stores all data that applies to the whole project. This\nalso includes any metadata from ``index.md``.\n\n- ``title``: Title of the website.\n\n- ``time``: Current time. This can be used to display the time of the\n last build.\n\n- ``pages``: A list of all pages.\n\n- ``config``: The complete configuration.\n\nTags and Categories\n===================\n\nTags and categories are commonly used on websites. The ``site.pages`` object\navailable in templates containes the functions ``by_key`` and ``values`` that\ncan be used to implement them.\n\n``by_key`` will return only those pages that match the given key/value pair.\nSo ``by_key('category', 'greeting')`` will return a list of all pages in\ncategory 'greeting'. ``by_key('tags', 'example', is_list=True)`` will return\nall pages that have the 'example' tag. Note that ``tags`` should be a list,\nso the ``is_list`` argument is needed here.\n\n``values`` will return a list of all values that have been used with a given\nkey. So ``values('category')`` will return a list with all categories and\n``values('tags', is_list=True)`` will return a list with all tags.\n\nThese functions can be used to create a template for tag or category pages\nrespectively. Note that tag and category pages will not be created\nautomatically.\n\nBut these functions can not only be used for tags and categories. You can\nbasically define any structure you want. Or you can filter by existing field,\ne.g. by layout.\n\nDifferences from Jekyll\n=======================\n\nFlekky aims at being very similar to Jekyll. However it is far from\nbeing a drop-in replacement. Some of the missing features might be added\nin the future. For now, these are some of the most important\ndifferences:\n\n- written in python and based on Flask\n\n- Markdown only (though it should be easy to extend)\n\n- slightly different directory structure\n\n - no configuration file like ``_config.yml``\n - ``templates`` instead of ``_includes`` and ``_layouts``\n - ``pages`` instead of top level files and ``_posts``\n - no drafts\n - no data files\n - date is not encoded in file name\n\n- only pages that are linked to are included in the build\n\n- no build-in SCSS or CoffeeScript support\n\n- different (but similar) templating syntax\n\n- no separators before and after YAML data in page files\n\n- no build-in pagination\n\n- no build-in plugin system but the rich Flask ecosystem\n\nLicense\n=======\n\nCopyright (C) 2014 Tobias Bengfort tobias.bengfort@gmx.net\n\nThis program is free software: you can redistribute it and/or modify it\nunder the terms of the GNU General Public License as published by the\nFree Software Foundation, either version 3 of the License, or (at your\noption) any later version.\n\nThis program is distributed in the hope that it will be useful, but\nWITHOUT ANY WARRANTY; without even the implied warranty of\nMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General\nPublic License for more details.\n\nYou should have received a copy of the GNU General Public License along\nwith this program. If not, see http://www.gnu.org/licenses/.\n\n.. _Jekyll: http://jekyllrb.com/\n.. _Flask: http://flask.pocoo.org/\n.. _Frozen Flask: http://packages.python.org/Frozen-Flask/\n.. _Flask FlatPages: http://packages.python.org/Flask-FlatPages/\n.. _this article: https://nicolas.perriault.net/code/2012/dead-easy-yet-powerful-static-website-generator-with-flask/\n.. _Jinja2: http://jinja.pocoo.org/\n.. _Markdown: http://daringfireball.net/projects/markdown/\n.. _YAML: http://yaml.org/\n", "description_content_type": null, "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/xi/flekky", "keywords": "", "license": "GPLv3+", "maintainer": "", "maintainer_email": "", "name": "flekky", "package_url": "https://pypi.org/project/flekky/", "platform": "any", "project_url": "https://pypi.org/project/flekky/", "project_urls": { "Homepage": "https://github.com/xi/flekky" }, "release_url": "https://pypi.org/project/flekky/0.4.1/", "requires_dist": null, "requires_python": "", "summary": "Static website generator inspired by jekyll based on flask.", "version": "0.4.1" }, "last_serial": 2534426, "releases": { "0.0.0": [ { "comment_text": "", "digests": { "md5": "8808a673c8ee53b36848deb9bc4d9bcc", "sha256": "d641b1f1f2097c186b2472294fdc9a0d2f8ae3f81ccf7c655453ae6d8be7daca" }, "downloads": -1, "filename": "flekky-0.0.0-py2.7.egg", "has_sig": false, "md5_digest": "8808a673c8ee53b36848deb9bc4d9bcc", "packagetype": "bdist_egg", "python_version": "2.7", "requires_python": null, "size": 16195, "upload_time": "2014-05-14T23:46:56", "url": "https://files.pythonhosted.org/packages/69/2b/f80d8d2c2e4a18720945324a353f45ec52a3affde2ee06131f4f854feba4/flekky-0.0.0-py2.7.egg" }, { "comment_text": "", "digests": { "md5": "7d9aefc65ba20756d616d820cacccf0e", "sha256": "a8f52c96f431de7b67f1cecf084229a5153221de6cd99a5f296367944a57f1d7" }, "downloads": -1, "filename": "flekky-0.0.0.tar.gz", "has_sig": false, "md5_digest": "7d9aefc65ba20756d616d820cacccf0e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8572, "upload_time": "2014-05-14T23:46:52", "url": "https://files.pythonhosted.org/packages/18/8f/782b7d0375590993c5e5f288a48077910fa15994202c469b6fde63f6ddf1/flekky-0.0.0.tar.gz" } ], "0.0.1": [ { "comment_text": "", "digests": { "md5": "f55f8a6e5712c51b87c0b00057109442", "sha256": "23ccde1e07b15d1936568921f33c84f7fab5c1f1531a3d2b50a3a82576574f53" }, "downloads": -1, "filename": "flekky-0.0.1.tar.gz", "has_sig": false, "md5_digest": "f55f8a6e5712c51b87c0b00057109442", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8854, "upload_time": "2014-06-14T07:08:22", "url": "https://files.pythonhosted.org/packages/f7/89/af7fa80a8344ce23064f577006db29aca465684a388cdb78bc976f6c7a5b/flekky-0.0.1.tar.gz" } ], "0.0.2": [ { "comment_text": "", "digests": { "md5": "c7d5ff705da3fb8b96437bdd1d838a48", "sha256": "5211cc068e18d2eb5e76c3ca9c7f52336d9040e933f3e06ec03c4a7d480aee38" }, "downloads": -1, "filename": "flekky-0.0.2.tar.gz", "has_sig": false, "md5_digest": "c7d5ff705da3fb8b96437bdd1d838a48", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8969, "upload_time": "2014-06-14T08:34:56", "url": "https://files.pythonhosted.org/packages/af/ec/eb7c979dc68b81d45f59c67ee36388ed0f5c0033ec1a4d7bd9e34d369fab/flekky-0.0.2.tar.gz" } ], "0.1.0": [], "0.1.0-1": [ { "comment_text": "", "digests": { "md5": "de11bdb21a47e0d79c8cfc2bcdf961a1", "sha256": "1c036c2e517e52e078563a12306b88983321d38cda555a80f7a4eef570b531f2" }, "downloads": -1, "filename": "flekky-0.1.0-1.tar.gz", "has_sig": false, "md5_digest": "de11bdb21a47e0d79c8cfc2bcdf961a1", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9365, "upload_time": "2015-02-06T19:11:52", "url": "https://files.pythonhosted.org/packages/39/9c/3c1362a64527f2bfef3695c82d8bc17e4f8f1b3559d2cf390da40485e406/flekky-0.1.0-1.tar.gz" } ], "0.1.1": [ { "comment_text": "", "digests": { "md5": "c48943e80788e3b947fc980eaf8ff1b3", "sha256": "355cdec1be06edadffa8864e2f7ec4afaeb93666df989ab133f254e1bf718cd1" }, "downloads": -1, "filename": "flekky-0.1.1.tar.gz", "has_sig": false, "md5_digest": "c48943e80788e3b947fc980eaf8ff1b3", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9383, "upload_time": "2015-02-06T19:31:11", "url": "https://files.pythonhosted.org/packages/f1/b8/df71f3433582f69194406985195a16923192cee18732c971fa08a46970bd/flekky-0.1.1.tar.gz" } ], "0.2.0": [ { "comment_text": "", "digests": { "md5": "a6e5decb365463a69b9944312bc50af0", "sha256": "dd92babeab95d80fc5027836de506deed8573dfc243856bd947302e9a0fe5998" }, "downloads": -1, "filename": "flekky-0.2.0.tar.gz", "has_sig": false, "md5_digest": "a6e5decb365463a69b9944312bc50af0", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 12945, "upload_time": "2016-01-04T13:08:29", "url": "https://files.pythonhosted.org/packages/b8/80/87c33e1ba162e3c2d5485122c4318f4dbbf43e7d15c8572543003982c771/flekky-0.2.0.tar.gz" } ], "0.3.0": [ { "comment_text": "", "digests": { "md5": "73cfd2fe18e78d6bb67d57b2da77f1e6", "sha256": "284ba15609b8d7ea6a795a9efd317cbfc00b0f4285914dff73c5fbf7e26cbeff" }, "downloads": -1, "filename": "flekky-0.3.0.tar.gz", "has_sig": false, "md5_digest": "73cfd2fe18e78d6bb67d57b2da77f1e6", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 13981, "upload_time": "2016-02-29T21:34:16", "url": "https://files.pythonhosted.org/packages/5a/1c/97a094f0e2005253403f1fd9ce82a3c1cd3ae59ebca899c84a36bc35a780/flekky-0.3.0.tar.gz" } ], "0.4.0": [ { "comment_text": "", "digests": { "md5": "89693426ee4a0f6992a51c1ee687c573", "sha256": "2c592d5b1c4094a711aa2978f706895fe72e4b61db7b4c0577f5e4c5ae13c80a" }, "downloads": -1, "filename": "flekky-0.4.0.tar.gz", "has_sig": false, "md5_digest": "89693426ee4a0f6992a51c1ee687c573", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 15022, "upload_time": "2016-06-16T17:35:31", "url": "https://files.pythonhosted.org/packages/5d/e9/ef163719049f97aa3149098be8253cf80fd75190e4bab62c435fd2479f25/flekky-0.4.0.tar.gz" } ], "0.4.1": [ { "comment_text": "", "digests": { "md5": "d39f4a645f7a7da0d09141261d161139", "sha256": "ae5666de7d331e0148b8793bde110401270aa235ceb487d6a182560b2df9019b" }, "downloads": -1, "filename": "flekky-0.4.1.tar.gz", "has_sig": false, "md5_digest": "d39f4a645f7a7da0d09141261d161139", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 15049, "upload_time": "2016-12-22T09:41:04", "url": "https://files.pythonhosted.org/packages/30/7c/320f4905de2f1641ffa45fd6aafa551731a0684620f87c51e051ed2615e3/flekky-0.4.1.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "d39f4a645f7a7da0d09141261d161139", "sha256": "ae5666de7d331e0148b8793bde110401270aa235ceb487d6a182560b2df9019b" }, "downloads": -1, "filename": "flekky-0.4.1.tar.gz", "has_sig": false, "md5_digest": "d39f4a645f7a7da0d09141261d161139", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 15049, "upload_time": "2016-12-22T09:41:04", "url": "https://files.pythonhosted.org/packages/30/7c/320f4905de2f1641ffa45fd6aafa551731a0684620f87c51e051ed2615e3/flekky-0.4.1.tar.gz" } ] }