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")))))