From 2ddf743d18267b308d852b010f0a232b5f728354 Mon Sep 17 00:00:00 2001 From: "Paul R. Tagliamonte" Date: Sat, 9 Mar 2013 23:15:22 -0500 Subject: [PATCH] Meh. --- requirements-site.txt | 2 ++ site/app.hy | 43 +++++++++++++++++++++++++++++++++++++++++-- 2 files changed, 43 insertions(+), 2 deletions(-) diff --git a/requirements-site.txt b/requirements-site.txt index 7e10602..95d96c2 100644 --- a/requirements-site.txt +++ b/requirements-site.txt @@ -1 +1,3 @@ flask +pygments +codegen diff --git a/site/app.hy b/site/app.hy index 732dfbf..0fdb841 100644 --- a/site/app.hy +++ b/site/app.hy @@ -1,10 +1,49 @@ -; +; Copyright (c) Paul R. Tagliamonte , 2013 under the terms of +; hy. + + (import-from flask - Flask render-template request) + Flask render-template) + +(import-from pygments highlight) +(import-from pygments.lexers PythonLexer ClojureLexer) +(import-from pygments.formatters HtmlFormatter) +(import codegen) + + +(def lexers {"python" (PythonLexer) + "lisp" (ClojureLexer)}) (def app (Flask "__main__")) ; long story, needed hack (route "/" [] (render-template "index.html")) + + +(defn colorize-python [x] + (highlight x (index lexers "python") (HtmlFormatter))) + + +(defn hy-to-py [hython] + (.to_source codegen (forge-ast "stdin" (tokenize hython)))) + + +(decorate-with (kwapply (.route app "/format/") {"methods" ["POST"]}) + (defn format-code [language] + "Language HTML Formatter" + (highlight + (index request.form "code") (index lexers language) (HtmlFormatter)))) + + +(decorate-with (kwapply (.route app "/hy2py") {"methods" ["POST"]}) + (defn translate-code [] + "Pythonic converter" + (hy-to-py (index request.form "code")))) + + +(decorate-with (kwapply (.route app "/hy2pycol") {"methods" ["POST"]}) + (defn translate-code-with-color [] + "Pythonic converter" + (colorize-python (hy-to-py (index request.form "code")))))