File size: 2,414 Bytes
b07cee2
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
"""
Minimal usage example for hv-mode.

    python example.py

Writes seven files to ./hv_mode_output/ plus an interactive mode menu,
then opens the menu in your browser.
"""

import os
import webbrowser

from hv_mode import HVMode


TEXT = """A black hole is a region of spacetime where gravity is so strong \
that nothing - no particles or even electromagnetic radiation such as light - \
can escape from it. The theory of general relativity predicts that a \
sufficiently compact mass can deform spacetime to form a black hole. The \
boundary of the region from which no escape is possible is called the event \
horizon. Although the event horizon has profound effects on the fate of an \
object that crosses it, it has no locally detectable features. A black hole \
acts as a perfect black body, and moreover, it emits Hawking radiation. Note: \
results may vary depending on the observer's frame of reference."""

QUERY = "show me a picture of what a black hole is"


def main() -> None:
    out_dir = "./hv_mode_output"
    os.makedirs(out_dir, exist_ok=True)

    m = HVMode()

    # 1. Auto mode (based on the query)
    out = m.respond(TEXT, query=QUERY)
    print(f"auto-selected mode: {out['mode']} ({out['mime']})")
    print(f"mode distribution : {out['mode_distribution']}")

    # 2. Content negotiation
    out_svg = m.respond(TEXT, accept="image/svg+xml")
    print(f"Accept svg        : {out_svg['mode']}")

    out_html = m.respond(TEXT, accept="text/html")
    print(f"Accept html       : {out_html['mode']}")

    # 3. Write all seven variants
    meaning = m.extract(TEXT)
    ext_map = {
        "text/plain": "txt",
        "text/html": "html",
        "image/svg+xml": "svg",
    }
    print()
    for mode in m.router.available():
        content, mime = m.render(meaning, mode)
        ext = ext_map.get(mime, "bin")
        path = os.path.join(out_dir, f"{mode}.{ext}")
        with open(path, "w", encoding="utf-8") as f:
            f.write(content)
        print(f"wrote {path}")

    # 4. Interactive mode menu
    menu_path = os.path.join(out_dir, "mode_menu.html")
    with open(menu_path, "w", encoding="utf-8") as f:
        f.write(m.mode_menu(TEXT, QUERY))
    print(f"wrote {menu_path}")

    # 5. Open in browser (best effort)
    try:
        webbrowser.open(f"file://{os.path.abspath(menu_path)}")
    except Exception:
        pass


if __name__ == "__main__":
    main()