Skip to content

Commit

Permalink
Merge ffc3619 into 6b4960e
Browse files Browse the repository at this point in the history
  • Loading branch information
mthl committed Nov 6, 2020
2 parents 6b4960e + ffc3619 commit b01c7f6
Show file tree
Hide file tree
Showing 2 changed files with 14 additions and 15 deletions.
5 changes: 3 additions & 2 deletions project.clj
Expand Up @@ -3,8 +3,9 @@
:url "https://github.com/bfontaine/clygments"
:license {:name "Eclipse Public License"
:url "http://www.eclipse.org/legal/epl-v10.html"}
:dependencies [[org.clojure/clojure "1.8.0"]
[org.python/jython-standalone "2.7.1"]
:dependencies [[org.python/jython-standalone "2.7.1"]
;; Pygments 2.6+ doesn't support Python2 anymore, so we'll have to ditch Jython in favor of GraalVM
[org.pygments/pygments "2.5.2"]]
:profiles {:dev {:dependencies [[org.clojure/clojure "1.10.1"]]}}
:global-vars {*warn-on-reflection* true}
:plugins [[lein-cloverage "1.0.9"]])
24 changes: 11 additions & 13 deletions src/clygments/core.clj
Expand Up @@ -6,7 +6,7 @@
[java.util HashMap]
[clojure.lang Keyword PersistentArrayMap PersistentHashMap]))

(def ^:private python
(def ^:private ^PythonInterpreter python
(doto (PythonInterpreter.)
(.exec "
from pygments import highlight
Expand Down Expand Up @@ -40,12 +40,11 @@ def run(code, lexer_name, formatter_name, opts):
if lexer and formatter:
return highlight(code, lexer, formatter)")))

(def ^:private
py-run-fn
(def ^:private ^PyObject py-run-fn
(.eval python "run"))

(def ^:private
py-none (.eval ^PythonInterpreter python "None"))
(def ^:private ^PyObject py-none
(.eval python "None"))

(defmulti ^:private clj->jy type)

Expand All @@ -66,7 +65,7 @@ def run(code, lexer_name, formatter_name, opts):
(defmethod clj->jy Character [c] (PyUnicode. (str c)))
(defmethod clj->jy Keyword [k] (PyUnicode. (name k)))

(defn- map->jy
(defn- ^PyObject map->jy
([m]
(map->jy m identity))
([m keyfn]
Expand All @@ -78,7 +77,7 @@ def run(code, lexer_name, formatter_name, opts):
(defmethod clj->jy PersistentHashMap [m] (map->jy m))
(defmethod clj->jy PersistentArrayMap [m] (map->jy m))

(defn- keyword->lowercase-pystring
(defn- ^PyUnicode keyword->lowercase-pystring
[kw]
(-> kw name str/lower-case (PyUnicode.)))

Expand All @@ -89,19 +88,18 @@ def run(code, lexer_name, formatter_name, opts):
{:pre [(string? code)]}
(let [py-code (PyUnicode. ^String code)
py-lexer-name (if (some? lang)
(keyword->lowercase-pystring lang)
^PyObject (keyword->lowercase-pystring lang)
py-none)
py-formatter-name (keyword->lowercase-pystring output)

py-opts (map->jy opts
(fn [k]
(-> k name (str/replace #"-" "") str/lower-case)))

res (.__call__ py-run-fn
(into-array PyObject [py-code
py-lexer-name
py-formatter-name
py-opts]))]
py-code
py-lexer-name
py-formatter-name
py-opts)]

(when (and res (.__nonzero__ res))
;; This won't work with non-text formatters such as :gif, but it's
Expand Down

0 comments on commit b01c7f6

Please sign in to comment.