summary refs log tree commit diff stats
path: root/ganarchy/templating
diff options
context:
space:
mode:
authorSoniEx2 <endermoneymod@gmail.com>2021-06-14 22:49:07 -0300
committerSoniEx2 <endermoneymod@gmail.com>2021-06-14 22:58:05 -0300
commita67b0812659d1481f4c5be77ce2cf448b0b37b8c (patch)
treef0ce4f55d5af77b2a76a98d77a8ddfca60a61bc3 /ganarchy/templating
parent993a8ca85db1564e64550276d61d9723423605aa (diff)
Start rewriting in Rust
Diffstat (limited to 'ganarchy/templating')
-rw-r--r--ganarchy/templating/__init__.py21
-rw-r--r--ganarchy/templating/environment.py31
-rw-r--r--ganarchy/templating/templates.py128
-rw-r--r--ganarchy/templating/toml.py33
4 files changed, 0 insertions, 213 deletions
diff --git a/ganarchy/templating/__init__.py b/ganarchy/templating/__init__.py
deleted file mode 100644
index d6f6d0c..0000000
--- a/ganarchy/templating/__init__.py
+++ /dev/null
@@ -1,21 +0,0 @@
-# This file is part of GAnarchy - decentralized project hub
-# Copyright (C) 2020  Soni L.
-#
-# This program is free software: you can redistribute it and/or modify
-# it under the terms of the GNU Affero General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU Affero General Public License for more details.
-#
-# You should have received a copy of the GNU Affero General Public License
-# along with this program.  If not, see <https://www.gnu.org/licenses/>.
-
-"""Templates.
-
-"""
-
-# TODO write me
diff --git a/ganarchy/templating/environment.py b/ganarchy/templating/environment.py
deleted file mode 100644
index 0258f4d..0000000
--- a/ganarchy/templating/environment.py
+++ /dev/null
@@ -1,31 +0,0 @@
-# This file is part of GAnarchy - decentralized project hub
-# Copyright (C) 2020  Soni L.
-#
-# This program is free software: you can redistribute it and/or modify
-# it under the terms of the GNU Affero General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU Affero General Public License for more details.
-#
-# You should have received a copy of the GNU Affero General Public License
-# along with this program.  If not, see <https://www.gnu.org/licenses/>.
-
-import jinja2
-
-import ganarchy.templating.templates
-import ganarchy.templating.toml
-
-def get_env():
-    env = jinja2.Environment(
-        loader=ganarchy.templating.templates.get_template_loader(),
-        autoescape=False,
-        # aka please_stop_mangling_my_templates=True
-        keep_trailing_newline=True
-    )
-    env.filters['tomlescape'] = ganarchy.templating.toml.tomlescape
-    env.filters['tomle'] = env.filters['tomlescape']
-    return env
diff --git a/ganarchy/templating/templates.py b/ganarchy/templating/templates.py
deleted file mode 100644
index 1e9c074..0000000
--- a/ganarchy/templating/templates.py
+++ /dev/null
@@ -1,128 +0,0 @@
-# This file is part of GAnarchy - decentralized project hub
-# Copyright (C) 2020  Soni L.
-#
-# This program is free software: you can redistribute it and/or modify
-# it under the terms of the GNU Affero General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU Affero General Public License for more details.
-#
-# You should have received a copy of the GNU Affero General Public License
-# along with this program.  If not, see <https://www.gnu.org/licenses/>.
-
-import jinja2
-
-import ganarchy.dirs
-
-def get_template_loader():
-    return jinja2.ChoiceLoader([
-        jinja2.FileSystemLoader([ganarchy.dirs.CONFIG_HOME + "/templates"] + [config_dir + "/templates" for config_dir in ganarchy.dirs.CONFIG_DIRS]),
-        jinja2.DictLoader({
-            ## index.html
-            'index.html': """<!DOCTYPE html>
-<html lang="en">
-    <head>
-        <meta charset="utf-8" />
-        <!--
-        GAnarchy - project homepage generator
-        Copyright (C) 2019  Soni L.
-
-        This program is free software: you can redistribute it and/or modify
-        it under the terms of the GNU General Public License as published by
-        the Free Software Foundation, either version 3 of the License, or
-        (at your option) any later version.
-
-        This program is distributed in the hope that it will be useful,
-        but WITHOUT ANY WARRANTY; without even the implied warranty of
-        MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-        GNU General Public License for more details.
-
-        You should have received a copy of the GNU General Public License
-        along with this program.  If not, see <https://www.gnu.org/licenses/>.
-        -->
-        <title>{{ ganarchy.title|e }}</title>
-        <meta name="description" content="{{ ganarchy.title|e }}" />
-        <!--if your browser doesn't like the following, use a different browser.-->
-        <script type="application/javascript" src="/index.js"></script>
-    </head>
-    <body>
-        <h1>{{ ganarchy.title|e }}</h1>
-        <p>This is {{ ganarchy.title|e }}. Currently tracking the following projects:</p>
-        <ul>
-        {% for project in ganarchy.projects -%}{% if project.exists -%}
-            <li><a href="{{ (ganarchy.base_url[:-1] + ganarchy.base_url[-1:].rsplit('/',1)[0])|e }}/project/{{ project.commit|e }}">{{ project.title|e }}</a>: {{ project.description|e }}</li>
-        {% endif -%}{% endfor -%}
-        </ul>
-        <p>Powered by <a href="https://ganarchy.autistic.space/">GAnarchy</a>. AGPLv3-licensed. <a href="https://cybre.tech/SoniEx2/ganarchy">Source Code</a>.</p>
-        <p>
-            <a href="{{ ganarchy.base_url|e }}" onclick="event.preventDefault(); navigator.registerProtocolHandler('web+ganarchy', this.href + '?url=%s', 'GAnarchy');">Register web+ganarchy: URI handler</a>
-            (Makes navigating between GAnarchy instances easier).
-        </p>
-    </body>
-</html>
-""",
-            ## index.toml
-            'index.toml': """# Generated by GAnarchy
-
-{%- for project in database.list_projects() %}
-[projects.{{project}}]
-{%- for repo_url, branch, _head_commit in database.list_repobranches(project) %}
-{%- if database.should_repo_federate(project, repo_url, branch) %}
-"{{repo_url|tomle}}".{% if not branch %}HEAD{% else %}"{{branch|tomle}}"{% endif %} = { active=true }
-{%- endif %}
-{%- endfor %}
-{% endfor -%}
-""",
-            ## project.html
-            # FIXME convert to project.title/etc instead of project_title/etc.
-            'project.html': """<!DOCTYPE html>
-<html lang="en">
-    <head>
-        <meta charset="utf-8" />
-        <!--
-        GAnarchy - project homepage generator
-        Copyright (C) 2019  Soni L.
-
-        This program is free software: you can redistribute it and/or modify
-        it under the terms of the GNU General Public License as published by
-        the Free Software Foundation, either version 3 of the License, or
-        (at your option) any later version.
-
-        This program is distributed in the hope that it will be useful,
-        but WITHOUT ANY WARRANTY; without even the implied warranty of
-        MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-        GNU General Public License for more details.
-
-        You should have received a copy of the GNU General Public License
-        along with this program.  If not, see <https://www.gnu.org/licenses/>.
-        -->
-        <title>{{ project_title|e }}</title>
-        {% if project_desc %}<meta name="description" content="{{ project_desc|e }}" />{% endif %}
-        <style type="text/css">.branchname { color: #808080; font-style: italic; }</style>
-    </head>
-    <body>
-        <h1>{{ project_title|e }}</h1>
-        <p>Tracking <span id="project_commit"><a href="web+ganarchy:{{ project_commit }}">{{ project_commit }}</a></span></p>
-        <div id="project_body"><p>{{ project_body|e|replace("\n\n", "</p><p>") }}</p></div>
-        <ul>
-        {% for url, msg, img, branch in repos -%}
-            <li><a href="{{ url|e }}">{{ url|e }}</a>{% if branch %} <span class="branchname">[{{ branch|e }}]</span>{% endif %}: {{ msg|e }}</li>
-        {% endfor -%}
-        </ul>
-        <p>Powered by <a href="https://ganarchy.autistic.space/">GAnarchy</a>. AGPLv3-licensed. <a href="https://cybre.tech/SoniEx2/ganarchy">Source Code</a>.</p>
-        <p>
-            <a href="{{ base_url|e }}">Main page</a>.
-            <a href="{{ base_url|e }}" onclick="event.preventDefault(); navigator.registerProtocolHandler('web+ganarchy', this.href + '?url=%s', 'GAnarchy');">Register web+ganarchy: URI handler</a>
-            (Makes navigating between GAnarchy instances easier).
-        </p>
-    </body>
-</html>
-""",
-            ## history.svg FIXME
-            'history.svg': """""",
-        })
-    ])
diff --git a/ganarchy/templating/toml.py b/ganarchy/templating/toml.py
deleted file mode 100644
index 431125d..0000000
--- a/ganarchy/templating/toml.py
+++ /dev/null
@@ -1,33 +0,0 @@
-# This file is part of GAnarchy - decentralized project hub
-# Copyright (C) 2020  Soni L.
-#
-# This program is free software: you can redistribute it and/or modify
-# it under the terms of the GNU Affero General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU Affero General Public License for more details.
-#
-# You should have received a copy of the GNU Affero General Public License
-# along with this program.  If not, see <https://www.gnu.org/licenses/>.
-
-_tomletrans = str.maketrans({
-    0: '\\u0000', 1: '\\u0001', 2: '\\u0002', 3: '\\u0003', 4: '\\u0004',
-    5: '\\u0005', 6: '\\u0006', 7: '\\u0007', 8: '\\b', 9: '\\t', 10: '\\n',
-    11: '\\u000B', 12: '\\f', 13: '\\r', 14: '\\u000E', 15: '\\u000F',
-    16: '\\u0010', 17: '\\u0011', 18: '\\u0012', 19: '\\u0013', 20: '\\u0014',
-    21: '\\u0015', 22: '\\u0016', 23: '\\u0017', 24: '\\u0018', 25: '\\u0019',
-    26: '\\u001A', 27: '\\u001B', 28: '\\u001C', 29: '\\u001D', 30: '\\u001E',
-    31: '\\u001F', '"': '\\"', '\\': '\\\\'
-    })
-
-def tomlescape(value):
-    """Escapes a string for use in a TOML string.
-
-    Returns:
-        str: The escaped string.
-    """
-    return value.translate(_tomletrans)