Packages
corex
0.1.0-alpha.33
0.1.2
0.1.1
0.1.0
0.1.0-rc.1
0.1.0-rc.0
0.1.0-beta.5
0.1.0-beta.4
0.1.0-beta.3
0.1.0-beta.2
0.1.0-beta.1
0.1.0-alpha.33
0.1.0-alpha.32
0.1.0-alpha.31
0.1.0-alpha.30
0.1.0-alpha.29
0.1.0-alpha.28
0.1.0-alpha.27
0.1.0-alpha.26
0.1.0-alpha.25
0.1.0-alpha.24
0.1.0-alpha.23
0.1.0-alpha.22
0.1.0-alpha.21
0.1.0-alpha.20
0.1.0-alpha.19
0.1.0-alpha.18
0.1.0-alpha.17
0.1.0-alpha.16
0.1.0-alpha.15
0.1.0-alpha.14
0.1.0-alpha.13
0.1.0-alpha.12
0.1.0-alpha.11
0.1.0-alpha.10
0.1.0-alpha.9
0.1.0-alpha.8
0.1.0-alpha.7
0.1.0-alpha.6
0.1.0-alpha.5
0.1.0-alpha.4
0.1.0-alpha.3
0.1.0-alpha.2
0.1.0-alpha.1
Accessible and unstyled UI components library written in Elixir and TypeScript that integrates Zag.js state machines into the Phoenix Framework.
Current section
Files
Jump to
Current section
Files
lib/mix/tasks/corex.code.ex
defmodule Mix.Tasks.Corex.Code do
use Mix.Task
@shortdoc "Generate and copy Makeup syntax highlighting stylesheet to your project"
@default_path "assets/css/code_highlight.css"
@moduledoc """
Generates the full Makeup syntax highlighting stylesheet and writes it to your project.
Run when you add or update Makeup language packages (e.g. makeup_elixir, makeup_html, makeup_css).
Requires `makeup` and `makeup_elixir` in your deps.
## Examples
# Default path (assets/css/code_highlight.css)
mix corex.code
# Custom path and filename
mix corex.code assets/styles/syntax.css
# Override if file already exists
mix corex.code --force
mix corex.code assets/css/code_highlight.css --force
## Import
Add the generated file to your CSS (e.g. assets/css/app.css):
@import "./code_highlight.css";
Works with or without Corex Design. For unstyled projects, import only the highlight file.
"""
@impl Mix.Task
def run(args) do
Mix.Task.run("app.start")
{opts, paths, _} =
OptionParser.parse(args, switches: [force: :boolean])
path = List.first(paths) || @default_path
force = Keyword.get(opts, :force, false)
full_path = Path.expand(path, File.cwd!())
validate_makeup!()
validate_path!(full_path, force)
generate!(full_path)
end
defp validate_makeup! do
makeup = Module.concat(["Elixir", "Makeup"])
unless Code.ensure_loaded?(makeup) do
Mix.raise("""
Makeup is not available. Add to your mix.exs:
defp deps do
[
{:makeup, "~> 1.2"},
{:makeup_elixir, "~> 1.0.1 or ~> 1.1"}
]
end
""")
end
end
defp validate_path!(full_path, force) do
if File.exists?(full_path) and not force do
Mix.raise("""
#{full_path} already exists.
Re-run with --force to overwrite.
""")
end
end
defp generate!(full_path) do
makeup = Module.concat(["Elixir", "Makeup"])
stylesheet = makeup.stylesheet(:default_style)
full_path
|> Path.dirname()
|> File.mkdir_p!()
File.write!(full_path, stylesheet)
end
end