Packages
fermo
0.12.1
0.20.1
0.20.0
0.19.2
0.19.1
0.19.0
0.18.1
0.18.0
0.17.1
0.17.0
0.16.7
0.16.6
0.16.5
0.16.4
0.16.3
0.16.2
0.16.1
0.16.0
0.15.0
0.14.9
0.14.8
0.14.7
0.14.6
0.14.5
0.14.4
0.14.3
0.14.2
0.14.1
0.14.0
0.13.9
0.13.8
0.13.7
0.13.6
0.13.5
0.13.4
0.13.2
0.13.1
0.13.0
0.12.1
0.12.0
0.11.1
0.11.0
0.10.0
0.9.1
0.9.0
0.8.4
0.8.3
0.8.2
0.8.1
0.8.0
0.7.1
0.7.0
0.6.4
0.6.3
0.6.2
0.6.1
0.6.0
0.5.1
0.5.0
0.4.0
0.3.0
0.2.4
0.2.2
0.2.1
0.2.0
0.1.8
0.1.7
0.1.6
0.1.5
0.1.4
0.1.3
0.1.2
0.1.1
0.1.0
A static site generator
Current section
Files
Jump to
Current section
Files
lib/fermo/assets.ex
defmodule Fermo.Assets do
@webpack_dev_server_port 8080
def start_link() do
Webpack.Assets.start_link()
end
def build() do
Webpack.Assets.build()
end
defmacro asset_path(name) do
quote do
context = var!(context)
if context[:page][:live] do
live_asset_path(unquote(name))
else
static_asset_path(unquote(name))
end
end
end
def static_asset_path("https://" <> _path = url) do
url
end
def static_asset_path(filename) do
Webpack.Assets.path!(filename)
end
def live_asset_path(filename) do
"//localhost:#{@webpack_dev_server_port}/#{filename}"
end
# TODO: make this a context aware macro
def font_path("https://" <> _path = url) do
url
end
def font_path(filename) do
Webpack.Assets.path!("fonts/#{filename}")
end
defmacro image_path(name) do
quote do
context = var!(context)
if context[:page][:live] do
live_image_path(unquote(name))
else
static_image_path(unquote(name))
end
end
end
defmacro image_tag(filename, attributes \\ []) do
quote do
context = var!(context)
url = if context[:page][:live] do
live_image_path(unquote(filename))
else
static_image_path(unquote(filename))
end
attribs = Enum.map(unquote(attributes), fn ({k, v}) ->
"#{k}=\"#{v}\""
end)
"<img src=\"#{url}\" #{Enum.join(attribs, " ")}/>"
end
end
def static_image_path("https://" <> _path = url) do
url
end
def static_image_path("/" <> filename) do
Webpack.Assets.path!("/images/#{filename}")
end
def static_image_path(filename) do
Webpack.Assets.path!("/images/#{filename}")
end
def live_image_path(filename) do
"//localhost:#{@webpack_dev_server_port}/images/#{filename}"
end
defmacro javascript_path(name) do
quote do
context = var!(context)
if context[:page][:live] do
live_javascript_path(unquote(name))
else
static_javascript_path(unquote(name))
end
end
end
defmacro javascript_include_tag(name) do
quote do
context = var!(context)
url = if context[:page][:live] do
live_javascript_path(unquote(name))
else
static_javascript_path(unquote(name))
end
"<script src=\"#{url}\" type=\"text/javascript\"></script>"
end
end
def static_javascript_path("https://" <> _path = url) do
url
end
def static_javascript_path(name) do
Webpack.Assets.path!("#{name}.js")
end
def live_javascript_path(name) do
"//localhost:#{@webpack_dev_server_port}/javascripts/#{name}.js"
end
defmacro stylesheet_link_tag(name) do
quote do
context = var!(context)
url = if context[:page][:live] do
live_stylesheet_path(unquote(name))
else
static_stylesheet_path(unquote(name))
end
"<link href=\"#{url}\" media=\"all\" rel=\"stylesheet\" />"
end
end
def static_stylesheet_path("https://" <> _path = url) do
url
end
def static_stylesheet_path(name) do
Webpack.Assets.path!("#{name}.css")
end
def live_stylesheet_path(name) do
"//localhost:#{@webpack_dev_server_port}/stylesheets/#{name}.css"
end
end