Skip to content

Commit 25fd192

Browse files
Merge pull request #320 from nimblehq/feature/incorporate-verified-routes
Change use of Router.Helpers to VerifiedRoutes
2 parents 87b59ce + 47bdea3 commit 25fd192

File tree

4 files changed

+240
-249
lines changed

4 files changed

+240
-249
lines changed

lib/nimble_template/addons/variants/phoenix/web/svg_sprite.ex

Lines changed: 102 additions & 108 deletions
Original file line numberDiff line numberDiff line change
@@ -5,115 +5,109 @@ defmodule NimbleTemplate.Addons.Phoenix.Web.SvgSprite do
55

66
@impl true
77
def do_apply!(%Project{} = project, _opts) do
8-
# TODO: Revisit on the next PR
98
project
9+
|> edit_files!()
10+
|> copy_files!()
1011
end
1112

12-
# @impl true
13-
# def do_apply!(%Project{} = project, _opts) do
14-
# project
15-
# |> edit_files!()
16-
# |> copy_files!()
17-
# end
18-
19-
# defp edit_files!(%Project{} = project) do
20-
# project
21-
# |> edit_assets_package!()
22-
# |> edit_web_entry_point!()
23-
# |> edit_wiki_sidebar!()
24-
# end
25-
26-
# defp copy_files!(%Project{} = project) do
27-
# project
28-
# |> copy_icon_helper!()
29-
# |> copy_wiki_documentation!()
30-
# end
31-
32-
# defp edit_assets_package!(%Project{} = project) do
33-
# Generator.replace_content!(
34-
# "assets/package.json",
35-
# """
36-
# "scripts": {
37-
# """,
38-
# """
39-
# "scripts": {
40-
# "svg-sprite.generate-icon": "svg-sprite --shape-id-generator \\"icon-%s\\" --symbol --symbol-dest ../priv/static/images --symbol-sprite icon-sprite.svg ../priv/static/images/icons/*.svg",
41-
# """
42-
# )
43-
44-
# Generator.replace_content!(
45-
# "assets/package.json",
46-
# """
47-
# "devDependencies": {
48-
# """,
49-
# """
50-
# "devDependencies": {
51-
# "svg-sprite": "1.5.4",
52-
# """
53-
# )
54-
55-
# project
56-
# end
57-
58-
# defp edit_web_entry_point!(%Project{web_module: web_module, web_path: web_path} = project) do
59-
# Generator.replace_content!(
60-
# "#{web_path}.ex",
61-
# """
62-
# # HTML escaping functionality
63-
# import Phoenix.HTML
64-
# """,
65-
# """
66-
# # HTML escaping functionality
67-
# import Phoenix.HTML
68-
69-
# import #{web_module}.IconHelper
70-
# """
71-
# )
72-
73-
# project
74-
# end
75-
76-
# defp edit_wiki_sidebar!(project) do
77-
# if has_github_wiki_directory?() do
78-
# Generator.replace_content!(
79-
# ".github/wiki/_Sidebar.md",
80-
# """
81-
# - [[Getting Started]]
82-
# """,
83-
# """
84-
# - [[Getting Started]]
85-
86-
# ## Operations
87-
88-
# - [[Icon Sprite]]
89-
# """
90-
# )
91-
# end
92-
93-
# project
94-
# end
95-
96-
# defp copy_icon_helper!(
97-
# %Project{web_module: web_module, web_path: web_path, web_test_path: web_test_path} =
98-
# project
99-
# ) do
100-
# Generator.copy_file!(
101-
# [
102-
# {:eex, "lib/otp_app_web/helpers/icon_helper.ex.eex", "#{web_path}/helpers/icon_helper.ex"},
103-
# {:eex, "test/otp_app_web/helpers/icon_helper_test.exs.eex",
104-
# "#{web_test_path}/helpers/icon_helper_test.exs"}
105-
# ],
106-
# web_module: web_module
107-
# )
108-
109-
# project
110-
# end
111-
112-
# defp copy_wiki_documentation!(%Project{} = project) do
113-
# if has_github_wiki_directory?() do
114-
# Generator.copy_file!([{:text, ".github/wiki/Icon-Sprite.md", ".github/wiki/Icon-Sprite.md"}])
115-
# end
116-
117-
# project
118-
# end
13+
defp edit_files!(%Project{} = project) do
14+
project
15+
|> edit_assets_package!()
16+
|> edit_web_entry_point!()
17+
|> edit_wiki_sidebar!()
18+
end
19+
20+
defp copy_files!(%Project{} = project) do
21+
project
22+
|> copy_icon_helper!()
23+
|> copy_wiki_documentation!()
24+
end
25+
26+
defp edit_assets_package!(%Project{} = project) do
27+
Generator.replace_content!(
28+
"assets/package.json",
29+
"""
30+
"scripts": {
31+
""",
32+
"""
33+
"scripts": {
34+
"svg-sprite.generate-icon": "svg-sprite --shape-id-generator \\"icon-%s\\" --symbol --symbol-dest ../priv/static/images --symbol-sprite icon-sprite.svg ../priv/static/images/icons/*.svg",
35+
"""
36+
)
37+
38+
Generator.replace_content!(
39+
"assets/package.json",
40+
"""
41+
"devDependencies": {
42+
""",
43+
"""
44+
"devDependencies": {
45+
"svg-sprite": "1.5.4",
46+
"""
47+
)
48+
49+
project
50+
end
51+
52+
defp edit_web_entry_point!(%Project{web_module: web_module, web_path: web_path} = project) do
53+
Generator.replace_content!(
54+
"#{web_path}.ex",
55+
"""
56+
# HTML escaping functionality
57+
import Phoenix.HTML
58+
""",
59+
"""
60+
# HTML escaping functionality
61+
import Phoenix.HTML
62+
63+
import #{web_module}.IconHelper
64+
"""
65+
)
66+
67+
project
68+
end
69+
70+
defp edit_wiki_sidebar!(project) do
71+
if has_github_wiki_directory?() do
72+
Generator.replace_content!(
73+
".github/wiki/_Sidebar.md",
74+
"""
75+
- [[Getting Started]]
76+
""",
77+
"""
78+
- [[Getting Started]]
79+
80+
## Operations
81+
82+
- [[Icon Sprite]]
83+
"""
84+
)
85+
end
86+
87+
project
88+
end
89+
90+
defp copy_icon_helper!(
91+
%Project{web_module: web_module, web_path: web_path, web_test_path: web_test_path} =
92+
project
93+
) do
94+
Generator.copy_file!(
95+
[
96+
{:eex, "lib/otp_app_web/helpers/icon_helper.ex.eex", "#{web_path}/helpers/icon_helper.ex"},
97+
{:eex, "test/otp_app_web/helpers/icon_helper_test.exs.eex",
98+
"#{web_test_path}/helpers/icon_helper_test.exs"}
99+
],
100+
web_module: web_module
101+
)
102+
103+
project
104+
end
105+
106+
defp copy_wiki_documentation!(%Project{} = project) do
107+
if has_github_wiki_directory?() do
108+
Generator.copy_file!([{:text, ".github/wiki/Icon-Sprite.md", ".github/wiki/Icon-Sprite.md"}])
109+
end
110+
111+
project
112+
end
119113
end

priv/templates/nimble_template/lib/otp_app_web/helpers/icon_helper.ex.eex

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -5,20 +5,17 @@ defmodule <%= web_module %>.IconHelper do
55

66
use Phoenix.HTML
77

8-
alias <%= web_module %>.Router.Helpers, as: Routes
8+
use <%= web_module %>, :verified_routes
99

1010
@svg_shape_id_prefix "icon-priv--static--images--icons--"
1111

12-
def icon_tag(conn, icon_file_name, opts \\ []) do
12+
def icon_tag(icon_file_name, opts \\ []) do
1313
classes = "icon " <> Keyword.get(opts, :class, "")
1414

1515
content_tag(:svg, class: classes) do
1616
tag(:use,
1717
"xlink:href":
18-
Routes.static_path(
19-
conn,
20-
"/images/icon-sprite.svg#" <> @svg_shape_id_prefix <> icon_file_name
21-
)
18+
~p"/images/icon-sprite.svg#" <> "#{@svg_shape_id_prefix}#{icon_file_name}"
2219
)
2320
end
2421
end

priv/templates/nimble_template/test/otp_app_web/helpers/icon_helper_test.exs.eex

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -5,16 +5,16 @@ defmodule <%= web_module %>.IconHelperTest do
55

66
alias <%= web_module %>.IconHelper
77

8-
describe "icon_tag/3" do
8+
describe "icon_tag/2" do
99
test "renders a svg icon" do
1010
first_svg_icon =
11-
<%= web_module %>.Endpoint
12-
|> IconHelper.icon_tag("active", class: "customize-icon-class")
11+
"active"
12+
|> IconHelper.icon_tag(class: "customize-icon-class")
1313
|> safe_to_string()
1414

1515
second_svg_icon =
16-
<%= web_module %>.Endpoint
17-
|> IconHelper.icon_tag("icon-lock")
16+
"icon-lock"
17+
|> IconHelper.icon_tag()
1818
|> safe_to_string()
1919

2020
assert first_svg_icon ==

0 commit comments

Comments
 (0)