루비를 통해 hia 문서에서 조건부 분기 및 반복 처리하는 방법
개시하다
여러 줄 문자열을 생성하고 싶을 때 하이아 문서는 편리하지만 하이아 문서에서 조건 구분과 순환 처리를 할 때 좀 힘들기 때문에 총괄해 보겠습니다.
설치 방법
예를 들어 다음 규격의 명령행 스크립트를 실현해 보십시오.
@options
변수를 이용하여 각 매개 변수의 값을 얻을 수 있다require 'erb'
header = <<~'HEADER'
---
layout: post
title: "<%= @options[:title] %>"
image: "<%= @options[:image] %>"
date: "<%= Time.now.strftime('%Y-%m-%d') %>"
tags:
<%- @options[:tags]&.each do |tag| -%>
- <%= tag %>
<%- end -%>
---
HEADER
puts ERB.new(header, nil, '-').result(binding)
\n
를 실제 줄로 바꾼 결과는 다음과 같다.---
layout: post
title: "Hello world!"
image: "/images/2021/09/hello_world.png"
date: "2021-09-06 22:37:34"
tags:
- greeting
- first-post
---
해설
Hia 문서에서 조건부 분기 또는 순환 처리를 하려면 ERB를 사용합니다.
<%-
및 -%>
포위된 곳에서 Ruby<%=
와 %>
에 둘러싸인 곳에서 Ruby를 실행할 때의 반환값이들 두 곳 모두 Rubby가 포위된 곳에서 실행되고 있지만 출력 결과가 그대로 표시되는지 여부가 다릅니다.
@options[:tags]&.each do |tag|
와 end
의 부분은 출력 결과가 아니라 루비<%-
와 -%>
를 실행하기를 희망할 뿐이다.trim_mode 정보
<%-
와 -%>
의 설명은 '-'
를 ERB 실례를 생성할 때의 세 번째 매개 변수로 지정하여 사용할 수 있음을 주의하십시오.이것은trim_mode
이라고 불린다.# 第 3 引数に '-' を指定
ERB.new(header, nil, '-').result(binding)
trim_mode
만 사용하지 않고hia 문서의 출력만 매개 변수로 지정하면 다음과 같이 설명할 수 있습니다.require 'erb'
erb = ERB.new <<~'HEADER'
---
layout: post
title: "<%= @options[:title] %>"
image: "<%= @options[:image] %>"
date: "<%= Time.now.strftime('%Y-%m-%d') %>"
tags:
<% @options[:tags]&.each do |tag| %>
- <%= tag %>
<% end %>
---
HEADER
puts erb.result(binding)
ERB 실례를 생성할 때 첫 번째 파라미터에hia 문서의 쓰기 방법을 직접 제출한다.사용하지 않기 때문trim_mode
,<%-
과-%>
,<%
가 아니라 %>
를 사용합니다.이 경우 출력은 다음과 같습니다.
---
layout: post
title: "Hello world!"
image: "/images/2021/09/hello_world.png"
date: "2021-09-06 22:43:28"
tags:
- greeting
- first-post
---
여분의 빈 줄을 출력했습니다.<% @options[:tags]&.each do |tag| %>
의 부분과<% end %>
의 부분이 줄로 존재하지만 아무것도 출력하지 않기 때문이다.이렇게 하면 Ruby 코드만 실행하려는 행이라도 존재하면 출력 결과에 반영됩니다.
이 문제를 해결한 것은
trim_mode
이다.이번 예에서 제3인자-
가 지정되었기 때문에 <%
와 %>
로 대체<%-
하면 여분의 줄 바꾸기가 없을 것이다.-%>
에 대한 자세한 내용은 ERB 참조 안내서를 참조하십시오.약점
ERB를 사용하면 hia 문서에서 조건부 분기와 순환 처리를 할 수 있지만 다음과 같은 단점이 있다.
그래서 몇 줄에 문법이 틀렸는지 한눈에 알 수 없다.하이아 문서가 너무 길면 문법 오류가 발생할 때 추적이 어려워질 수 있으니 주의하세요.
참고 자료
Reference
이 문제에 관하여(루비를 통해 hia 문서에서 조건부 분기 및 반복 처리하는 방법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://zenn.dev/noraworld/articles/here-document-condition-loop텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)