축복의씨

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

Avatar
 2025년 11월 17일 14:00분

“약속은 반드시 웃음으로 열매 맺고, 들으시는 하나님은 그 웃음의 근원이 되신다.”



Search

← 목록으로