소스 검색

Switch to live_view to be able to use Phoenix.Component

theenglishway (time) 2 년 전
부모
커밋
27dd81a19e
6개의 변경된 파일32개의 추가작업 그리고 7개의 파일을 삭제
  1. 1 1
      cv_gen/lib/cv_gen.ex
  2. 11 0
      cv_gen/lib/cv_gen_view.ex
  3. 4 4
      cv_gen/lib/templates/cv.html.eex
  4. 1 1
      cv_gen/lib/watchdog.ex
  5. 3 1
      cv_gen/mix.exs
  6. 12 0
      cv_gen/mix.lock

+ 1 - 1
cv_gen/lib/cv_gen.ex

@@ -9,7 +9,7 @@ defmodule CvGen do
   def generate do
     with raw_data <- File.read!(@data_file),
          {:ok, assigns} <- Jason.decode(raw_data, keys: :atoms),
-         res <- EEx.eval_file(@template_file, assigns: assigns),
+         res <- CvGenView.cv(assigns) |> Phoenix.HTML.Safe.to_iodata |> List.to_string(),
          do: File.write!(@output_file, res)
   end
 end

+ 11 - 0
cv_gen/lib/cv_gen_view.ex

@@ -0,0 +1,11 @@
+defmodule CvGenView do
+  use Phoenix.Component
+
+  embed_templates "templates/*"
+
+  def date(assigns) do
+    ~H"""
+    <time class="start_date" datetime={@date}>date</time>
+    """
+  end
+end

+ 4 - 4
cv_gen/lib/templates/cv.html.eex

@@ -160,10 +160,10 @@
             <dt class="position" lang="fr">Poste</dt>
             <dd lang="fr"><%= work.position %></dd>
             <dt class="start_date">Date début</dt>
-            <dd><time class="start_date" datetime="<%= work.startDate %>"></time></dd>
+            <dd><.date date={work.startDate}/></dd>
             <%= unless is_nil(work[:endDate]) do %>
               <dt class="end_date">Date fin</dt>
-              <dd><time class="end_date" datetime="<%= work.endDate %>"></time></dd>
+              <dd><time class="end_date" datetime={work.endDate}></time></dd>
               <% end %>
             <dt class="work_location"></dt>
             <dd>Paris</dd>
@@ -211,9 +211,9 @@
             <dt class="location"></dt>
             <dd><%= educ[:location] %></dd>
             <dt class="start_date">Date début</dt>
-            <dd><time class="start_date" datetime="<%= educ.startDate %>"></time></dd>
+            <dd><time class="start_date" datetime={educ.startDate}></time></dd>
             <dt class="end_date">Date fin</dt>
-            <dd><time class="end_date" datetime="<%= educ.endDate %>"></time></dd>
+            <dd><time class="end_date" datetime={educ.endDate}></time></dd>
           </dl>
         </li>
       <% end %>

+ 1 - 1
cv_gen/lib/watchdog.ex

@@ -14,7 +14,7 @@ defmodule CvGen.Watchdog do
   @impl true
   def handle_info(:timer_expired, state) do
     state =
-      with tpl_hash <- hash("lib/templates/cv.html.eex"),
+      with tpl_hash <- hash("lib/templates/cv.html.heex"),
            json_hash <- hash("lib/templates/cv.json") do
         if tpl_hash != state.tpl_hash or json_hash != state.json_hash do
           Logger.info("Content has changed, reloading")

+ 3 - 1
cv_gen/mix.exs

@@ -22,7 +22,9 @@ defmodule CvGen.MixProject do
   # Run "mix help deps" to learn about dependencies.
   defp deps do
     [
-      {:jason, "~> 1.4"}
+      {:jason, "~> 1.4"},
+      {:phoenix_html, "~> 3.3"},
+      {:phoenix_live_view, "~> 0.18.18"}
     ]
   end
 end

파일 크기가 너무 크기때문에 변경 상태를 표시하지 않습니다.
+ 12 - 0
cv_gen/mix.lock