Skip to content

Commit 814d1ca

Browse files
committed
add makeup_syntect for highlighting non-elixir/erlang code
1 parent 7eaf7c1 commit 814d1ca

File tree

5 files changed

+36
-8
lines changed

5 files changed

+36
-8
lines changed

lib/preview/package/local_updater.ex

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ defmodule Preview.Package.LocalUpdater do
1010
Logger.debug("Skipping version updater")
1111

1212
Preview.Package.Store.fill([
13+
{"phoenix_live_view", ["1.0.0"]},
1314
{"decimal", ["2.0.0"]},
1415
{"ecto", ["0.2.0"]},
1516
{"telemetry", ["0.4.2"]}

lib/preview_web/live/preview_live.ex

Lines changed: 25 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -101,10 +101,10 @@ defmodule PreviewWeb.PreviewLive do
101101

102102
defp makeup_file_contents(package, version, filename, file_contents) do
103103
case makeup_lexer(filename) do
104-
{:ok, lexer} ->
104+
{:ok, {lexer, opts}} ->
105105
task =
106106
Task.Supervisor.async_nolink(Preview.Tasks, fn ->
107-
Makeup.highlight(file_contents, lexer: lexer)
107+
Makeup.highlight(file_contents, lexer: lexer, lexer_options: opts)
108108
end)
109109

110110
case Task.yield(task, @makeup_timeout) || Task.shutdown(task, @makeup_timeout) do
@@ -183,12 +183,29 @@ defmodule PreviewWeb.PreviewLive do
183183

184184
defp makeup_lexer(filename) do
185185
cond do
186-
Path.extname(filename) in [".ex", ".exs"] -> {:ok, ElixirLexer}
187-
Path.extname(filename) in [".eex", ".heex"] -> {:ok, EExLexer}
188-
Path.extname(filename) in [".erl", ".hrl", ".escript"] -> {:ok, ErlangLexer}
189-
filename in ["rebar.config", "rebar.config.script"] -> {:ok, ErlangLexer}
190-
String.ends_with?(filename, ".app.src") -> {:ok, ErlangLexer}
191-
true -> :error
186+
Path.extname(filename) in [".ex", ".exs"] ->
187+
{:ok, {ElixirLexer, []}}
188+
189+
Path.extname(filename) in [".eex", ".heex"] ->
190+
{:ok, {EExLexer, []}}
191+
192+
Path.extname(filename) in [".erl", ".hrl", ".escript"] ->
193+
{:ok, {ErlangLexer, []}}
194+
195+
filename in ["rebar.config", "rebar.config.script"] ->
196+
{:ok, {ErlangLexer, []}}
197+
198+
String.ends_with?(filename, ".app.src") ->
199+
{:ok, {ErlangLexer, []}}
200+
201+
true ->
202+
extension =
203+
case Path.extname(filename) do
204+
"." <> ext -> ext
205+
other -> other
206+
end
207+
208+
Makeup.Registry.fetch_lexer_by_extension(extension)
192209
end
193210
end
194211

mix.exs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@ defmodule Preview.MixProject do
4040
{:makeup_eex, "~> 1.0"},
4141
{:makeup_elixir, "~> 1.0"},
4242
{:makeup_erlang, "~> 1.0"},
43+
{:makeup_syntect, "~> 0.1"},
4344
{:makeup, "~> 1.0"},
4445
{:mint, "~> 1.1"},
4546
{:phoenix_html, "~> 4.0"},

mix.lock

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@
2828
"makeup_elixir": {:hex, :makeup_elixir, "1.0.1", "e928a4f984e795e41e3abd27bfc09f51db16ab8ba1aebdba2b3a575437efafc2", [:mix], [{:makeup, "~> 1.0", [hex: :makeup, repo: "hexpm", optional: false]}, {:nimble_parsec, "~> 1.2.3 or ~> 1.3", [hex: :nimble_parsec, repo: "hexpm", optional: false]}], "hexpm", "7284900d412a3e5cfd97fdaed4f5ed389b8f2b4cb49efc0eb3bd10e2febf9507"},
2929
"makeup_erlang": {:hex, :makeup_erlang, "1.0.1", "c7f58c120b2b5aa5fd80d540a89fdf866ed42f1f3994e4fe189abebeab610839", [:mix], [{:makeup, "~> 1.0", [hex: :makeup, repo: "hexpm", optional: false]}], "hexpm", "8a89a1eeccc2d798d6ea15496a6e4870b75e014d1af514b1b71fa33134f57814"},
3030
"makeup_html": {:hex, :makeup_html, "0.1.2", "19d4050c0978a4f1618ffe43054c0049f91fe5feeb9ae8d845b5dc79c6008ae5", [:mix], [{:makeup, "~> 1.2", [hex: :makeup, repo: "hexpm", optional: false]}], "hexpm", "b7fb9afedd617d167e6644a0430e49c1279764bfd3153da716d4d2459b0998c5"},
31+
"makeup_syntect": {:hex, :makeup_syntect, "0.1.3", "ae2c3437f479ea50d08d794acaf02a2f3a8c338dd1f757f6b237c42eb27fcde1", [:mix], [{:makeup, "~> 1.2", [hex: :makeup, repo: "hexpm", optional: false]}, {:rustler, "~> 0.36.1", [hex: :rustler, repo: "hexpm", optional: true]}, {:rustler_precompiled, "~> 0.8.2", [hex: :rustler_precompiled, repo: "hexpm", optional: false]}], "hexpm", "a27bd3bd8f7b87465d110295a33ed1022202bea78701bd2bbeadfb45d690cdbf"},
3132
"metrics": {:hex, :metrics, "1.0.1", "25f094dea2cda98213cecc3aeff09e940299d950904393b2a29d191c346a8486", [:rebar3], [], "hexpm", "69b09adddc4f74a40716ae54d140f93beb0fb8978d8636eaded0c31b6f099f16"},
3233
"mime": {:hex, :mime, "2.0.6", "8f18486773d9b15f95f4f4f1e39b710045fa1de891fada4516559967276e4dc2", [:mix], [], "hexpm", "c9945363a6b26d747389aac3643f8e0e09d30499a138ad64fe8fd1d13d9b153e"},
3334
"mimerl": {:hex, :mimerl, "1.3.0", "d0cd9fc04b9061f82490f6581e0128379830e78535e017f7780f37fea7545726", [:rebar3], [], "hexpm", "a1e15a50d1887217de95f0b9b0793e32853f7c258a5cd227650889b38839fe9d"},
@@ -51,6 +52,7 @@
5152
"plug_cowboy": {:hex, :plug_cowboy, "2.7.2", "fdadb973799ae691bf9ecad99125b16625b1c6039999da5fe544d99218e662e4", [:mix], [{:cowboy, "~> 2.7", [hex: :cowboy, repo: "hexpm", optional: false]}, {:cowboy_telemetry, "~> 0.3", [hex: :cowboy_telemetry, repo: "hexpm", optional: false]}, {:plug, "~> 1.14", [hex: :plug, repo: "hexpm", optional: false]}], "hexpm", "245d8a11ee2306094840c000e8816f0cbed69a23fc0ac2bcf8d7835ae019bb2f"},
5253
"plug_crypto": {:hex, :plug_crypto, "2.1.0", "f44309c2b06d249c27c8d3f65cfe08158ade08418cf540fd4f72d4d6863abb7b", [:mix], [], "hexpm", "131216a4b030b8f8ce0f26038bc4421ae60e4bb95c5cf5395e1421437824c4fa"},
5354
"ranch": {:hex, :ranch, "1.8.0", "8c7a100a139fd57f17327b6413e4167ac559fbc04ca7448e9be9057311597a1d", [:make, :rebar3], [], "hexpm", "49fbcfd3682fab1f5d109351b61257676da1a2fdbe295904176d5e521a2ddfe5"},
55+
"rustler_precompiled": {:hex, :rustler_precompiled, "0.8.3", "4e741024b0b097fe783add06e53ae9a6f23ddc78df1010f215df0c02915ef5a8", [:mix], [{:castore, "~> 0.1 or ~> 1.0", [hex: :castore, repo: "hexpm", optional: false]}, {:rustler, "~> 0.23", [hex: :rustler, repo: "hexpm", optional: true]}], "hexpm", "c23f5f33cb6608542de4d04faf0f0291458c352a4648e4d28d17ee1098cddcc4"},
5456
"saxy": {:hex, :saxy, "1.6.0", "02cb4e9bd045f25ac0c70fae8164754878327ee393c338a090288210b02317ee", [:mix], [], "hexpm", "ef42eb4ac983ca77d650fbdb68368b26570f6cc5895f0faa04d34a6f384abad3"},
5557
"sentry": {:hex, :sentry, "10.8.1", "aa45309785e1521416225adb16e0b4d8b957578804527f3c7babb6fefbc5e456", [:mix], [{:hackney, "~> 1.8", [hex: :hackney, repo: "hexpm", optional: true]}, {:jason, "~> 1.1", [hex: :jason, repo: "hexpm", optional: true]}, {:nimble_options, "~> 1.0", [hex: :nimble_options, repo: "hexpm", optional: false]}, {:nimble_ownership, "~> 0.3.0 or ~> 1.0", [hex: :nimble_ownership, repo: "hexpm", optional: false]}, {:phoenix, "~> 1.6", [hex: :phoenix, repo: "hexpm", optional: true]}, {:phoenix_live_view, "~> 0.20 or ~> 1.0", [hex: :phoenix_live_view, repo: "hexpm", optional: true]}, {:plug, "~> 1.6", [hex: :plug, repo: "hexpm", optional: true]}, {:telemetry, "~> 0.4 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: true]}], "hexpm", "495b3cdadad90ba72eef973aa3dec39b3b8b2a362fe87e2f4ef32133ac3b4097"},
5658
"ssl_verify_fun": {:hex, :ssl_verify_fun, "1.1.7", "354c321cf377240c7b8716899e182ce4890c5938111a1296add3ec74cf1715df", [:make, :mix, :rebar3], [], "hexpm", "fe4c190e8f37401d30167c8c405eda19469f34577987c76dde613e838bbc67f8"},

priv/seeds.exs

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,9 @@ Preview.Storage.put(repo_bucket, "tarballs/decimal-2.0.0.tar", data)
99
{:ok, {200, _, data}} = :hex_repo.get_tarball(:hex_core.default_config(), "ecto", "0.2.0")
1010
Preview.Storage.put(repo_bucket, "tarballs/ecto-0.2.0.tar", data)
1111

12+
{:ok, {200, _, data}} = :hex_repo.get_tarball(:hex_core.default_config(), "phoenix_live_view", "1.0.0")
13+
Preview.Storage.put(repo_bucket, "tarballs/phoenix_live_view-1.0.0.tar", data)
14+
1215
message = %{
1316
"Records" => [
1417
%{
@@ -22,6 +25,10 @@ message = %{
2225
%{
2326
"eventName" => "ObjectCreated:Put",
2427
"s3" => %{"object" => %{"key" => "tarballs/ecto-0.2.0.tar"}}
28+
},
29+
%{
30+
"eventName" => "ObjectCreated:Put",
31+
"s3" => %{"object" => %{"key" => "tarballs/phoenix_live_view-1.0.0.tar"}}
2532
}
2633
]
2734
}

0 commit comments

Comments
 (0)