축복의씨
2025년 11월 17일 13:57분
package com.jesusbornd.genesis;
/*
* Genesis_21_Chapter_Lv1_V2.java
* [KO] 새 스타일: 창세기 21장 — 대표 4절(KRV+ESV) + 요약 + 적용
* [EN] New style: Genesis 21 — 4 Key Verses (KRV+ESV) + Summary + Practice
*
* Variation (Java, V2):
* 1) 작은 템플릿 함수(template)로 출력 일관화
* 2) 하이라이터(이삭/Isaac, 웃게 하시니/laughter, 들으셨다/heard) 적용
* 3) POJO(일반 클래스)로 JDK 호환성 극대화
*/
import java.util.ArrayList;
import java.util.List;
import java.util.StringJoiner;
public class Genesis_21_Chapter_Lv1_V2 {
// ---- Domain ----
static final class Verse {
final String ref, krv, esv;
Verse(String ref, String krv, String esv) { this.ref = ref; this.krv = krv; this.esv = esv; }
}
// ---- Data (4 key verses): 21:1-2 / 21:6 / 21:12 / 21:17-18 ----
private static final List<Verse> VERSES = new ArrayList<>();
static {
VERSES.add(new Verse(
"창세기 21:1–2 / Genesis 21:1–2",
"여호와께서 말씀하신 대로 사라를 권고하사… 사라가 잉태하여 노년에 아브라함에게 아들 [이삭]을 낳으니라",
"The LORD visited Sarah as he had said… Sarah conceived and bore Abraham a son in his old age—[Isaac]."
));
VERSES.add(new Verse(
"창세기 21:6 / Genesis 21:6",
"사라가 이르되 하나님이 나로 [웃게 하시니] 듣는 자가 다 나와 함께 웃으리로다",
"And Sarah said, “God has made [laughter] for me; everyone who hears will laugh over me.”"
));
VERSES.add(new Verse(
"창세기 21:12 / Genesis 21:12",
"… [이삭]에게서 난 자라야 네 씨라 칭할 것임이라",
"… through [Isaac] shall your offspring be named."
));
VERSES.add(new Verse(
"창세기 21:17–18 / Genesis 21:17–18",
"하나님이 그 아이의 소리를 [들으셨으므로]… 두려워 말라… 내가 그로 큰 민족을 이루게 하리라",
"God [heard] the voice of the boy… Do not fear… I will make him into a great nation."
));
}
// ---- Labels & Texts ----
private static final String TITLE =
"[창세기 21장 | KRV & ESV]\n" +
"[Genesis 21 | KRV & ESV]\n" +
"Lv1: The Promised Son — Laughter of Joy — Through Isaac — God Hears (Hagar & Ishmael)";
private static final String SUMMARY_KO =
"하나님은 약속하신 대로 이삭을 주시고(21:1–2), 슬픔을 웃음으로 바꾸시며(21:6), “이삭을 통해 씨가 불릴 것”을 확증하신다(21:12). "
+ "또한 광야의 부르짖음을 들으시고 하갈과 이스마엘을 돌보신다(21:17–18).";
private static final String SUMMARY_EN =
"God gives Isaac as promised (21:1–2), turns sorrow into laughter (21:6), confirms ‘through Isaac’ the promised line (21:12), "
+ "and hears the cry in the wilderness, caring for Hagar and Ishmael (21:17–18).";
private static final String PRACTICE_KO =
"약속을 붙드는 고백 1문장 · 오늘의 ‘웃음 감사’ 1가지 · 들으시는 하나님을 신뢰하는 중보 1분.";
private static final String PRACTICE_EN =
"Speak one promise you hold; give thanks for one joy ‘of laughter’; pray one minute trusting the God who hears.";
// ---- Tiny highlighter (console) ----
private static String hi(String s) {
return s.replace("이삭", "[이삭]")
.replace("Isaac", "[Isaac]")
.replace("웃게 하시니", "[웃게 하시니]")
.replace("laughter", "[laughter]")
.replace("들으셨", "[들으셨]")
.replace("heard", "[heard]");
}
// ---- Template helpers ----
private static String renderVerse(Verse v, String nl) {
return String.join(nl,
v.ref,
"KRV: " + hi(v.krv),
"ESV: " + hi(v.esv),
"");
}
public static void main(String[] args) {
final String nl = System.lineSeparator();
StringJoiner out = new StringJoiner(nl);
// Title
out.add(TITLE).add("");
// Verses
for (Verse v : VERSES) out.add(renderVerse(v, nl));
// Summary
out.add("[요약 / Summary]");
out.add("KO: " + SUMMARY_KO);
out.add("EN: " + SUMMARY_EN).add("");
// Practice
out.add("[적용 / Practice]");
out.add("KO: " + PRACTICE_KO);
out.add("EN: " + PRACTICE_EN);
System.out.println(out);
}
}
#### Genesis_21_Chapter_Lv1_V2.py
#### [KO] Lv1 입문(변주): 제너레이터 + 하이라이트 + 섹션 나누기
#### [EN] Lv1 Beginner (variation): generators + highlight + sectioned layout
from dataclasses import dataclass
from typing import Iterable, List
def hi(s: str) -> str:
return (s.replace("이삭", "[이삭]")
.replace("Isaac", "[Isaac]")
.replace("웃게 하시니", "[웃게 하시니]")
.replace("laughter", "[laughter]")
.replace("들으셨", "[들으셨]")
.replace("heard", "[heard]"))
@dataclass(frozen=True)
class Verse:
ref: str
krv: str
esv: str
# 21:1–2 / 21:6 / 21:12 / 21:17–18
VERSES: List[Verse] = [
Verse("창세기 21:1–2 / Genesis 21:1–2",
"여호와께서 말씀하신 대로 사라를 권고하시고… 사라가 아들 [이삭]을 낳음",
"The LORD visited Sarah as he had said… she bore Abraham a son—[Isaac]."),
Verse("창세기 21:6 / Genesis 21:6",
"하나님이 나로 [웃게 하시니] 듣는 자가 다 나와 함께 웃으리로다",
"God has made [laughter] for me; everyone who hears will laugh over me."),
Verse("창세기 21:12 / Genesis 21:12",
"… [이삭]에게서 난 자라야 네 씨라 칭하리라",
"… through [Isaac] shall your offspring be named."),
Verse("창세기 21:17–18 / Genesis 21:17–18",
"하나님이 그 아이의 소리를 [들으셨으므로]… 두려워 말라… 내가 그로 큰 민족이 되게 하리라",
"God [heard] the voice of the boy… Do not fear… I will make him into a great nation."),
]
SUMMARY_KO = ("하나님은 약속대로 [이삭]을 주시고(21:1–2), 슬픔을 웃음으로 바꾸시며(21:6), "
"‘이삭을 통해’ 약속의 계보를 확증하신다(21:12). 또한 광야의 부르짖음을 들으신다(21:17–18).")
SUMMARY_EN = ("God gives [Isaac] as promised (21:1–2), turns sorrow into [laughter] (21:6), confirms the line ‘through Isaac’ (21:12), "
"and [heard] the wilderness cry (21:17–18).")
PRACTICE_KO = "붙드는 약속 1문장 · 오늘의 ‘웃음 감사’ 1가지 · 들으시는 하나님을 신뢰하며 1분 중보."
PRACTICE_EN = "Speak one promise; name one gratitude of laughter; intercede one minute trusting the God who hears."
def section_title() -> Iterable[str]:
yield "[창세기 21장 | KRV & ESV]"
yield "[Genesis 21 | KRV & ESV]"
yield "Lv1: The Promised Son — Laughter of Joy — Through Isaac — God Hears"
yield ""
def section_verses() -> Iterable[str]:
for v in VERSES:
yield v.ref
yield "KRV: " + hi(v.krv)
yield "ESV: " + hi(v.esv)
yield ""
def section_summary() -> Iterable[str]:
yield "[요약 / Summary]"
yield "KO: " + SUMMARY_KO
yield "EN: " + SUMMARY_EN
yield ""
def section_practice() -> Iterable[str]:
yield "[적용 / Practice]"
yield "KO: " + PRACTICE_KO
yield "EN: " + PRACTICE_EN
def main() -> None:
for sec in (section_title, section_verses, section_summary, section_practice):
for line in sec():
print(line)
if __name__ == "__main__":
main()
← 목록으로
Comments
“약속은 반드시 웃음으로 열매 맺고, 들으시는 하나님은 그 웃음의 근원이 되신다.”