<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>interpolation.sl - Coverage</title>
<link rel="stylesheet" href="../assets/style.css">
</head>
<body>
<div class="container">
<header>
<h1>interpolation.sl</h1>
<a href="../index.html" class="back-link">← Back to Dashboard</a>
</header>
<section class="source-view">
<table>
<tbody>
<tr class="code-line">
<td class="line-num">1</td>
<td class="line-indicator"></td>
<td class="code-content"><pre>// i18n Example: Loading Translation Files from Disk with Named Interpolation</pre></td>
</tr><tr class="code-line">
<td class="line-num">2</td>
<td class="line-indicator"></td>
<td class="code-content"><pre>// This example demonstrates loading JSON translations and using named placeholders</pre></td>
</tr><tr class="code-line">
<td class="line-num">3</td>
<td class="line-indicator"></td>
<td class="code-content"><pre></pre></td>
</tr><tr class="code-line uncovered">
<td class="line-num">4</td>
<td class="line-indicator">✗</td>
<td class="code-content"><pre>let i18n_locale = "en";</pre></td>
</tr><tr class="code-line uncovered">
<td class="line-num">5</td>
<td class="line-indicator">✗</td>
<td class="code-content"><pre>let i18n_translations = {};</pre></td>
</tr><tr class="code-line">
<td class="line-num">6</td>
<td class="line-indicator"></td>
<td class="code-content"><pre></pre></td>
</tr><tr class="code-line uncovered">
<td class="line-num">7</td>
<td class="line-indicator">✗</td>
<td class="code-content"><pre>fn i18n_set_locale(locale) { i18n_locale = locale; }</pre></td>
</tr><tr class="code-line uncovered">
<td class="line-num">8</td>
<td class="line-indicator">✗</td>
<td class="code-content"><pre>fn i18n_get_locale() -> String { return i18n_locale; }</pre></td>
</tr><tr class="code-line">
<td class="line-num">9</td>
<td class="line-indicator"></td>
<td class="code-content"><pre></pre></td>
</tr><tr class="code-line uncovered">
<td class="line-num">10</td>
<td class="line-indicator">✗</td>
<td class="code-content"><pre>fn flatten_dict(dict, prefix) -> Hash {</pre></td>
</tr><tr class="code-line uncovered">
<td class="line-num">11</td>
<td class="line-indicator">✗</td>
<td class="code-content"><pre> let result = {};</pre></td>
</tr><tr class="code-line uncovered">
<td class="line-num">12</td>
<td class="line-indicator">✗</td>
<td class="code-content"><pre> let pairs = entries(dict);</pre></td>
</tr><tr class="code-line uncovered">
<td class="line-num">13</td>
<td class="line-indicator">✗</td>
<td class="code-content"><pre> for (pair in pairs) {</pre></td>
</tr><tr class="code-line uncovered">
<td class="line-num">14</td>
<td class="line-indicator">✗</td>
<td class="code-content"><pre> let key = pair[0];</pre></td>
</tr><tr class="code-line uncovered">
<td class="line-num">15</td>
<td class="line-indicator">✗</td>
<td class="code-content"><pre> let value = pair[1];</pre></td>
</tr><tr class="code-line uncovered">
<td class="line-num">16</td>
<td class="line-indicator">✗</td>
<td class="code-content"><pre> let full_key = prefix + "." + key;</pre></td>
</tr><tr class="code-line uncovered">
<td class="line-num">17</td>
<td class="line-indicator">✗</td>
<td class="code-content"><pre> if (type(value) == "Hash") {</pre></td>
</tr><tr class="code-line uncovered">
<td class="line-num">18</td>
<td class="line-indicator">✗</td>
<td class="code-content"><pre> let nested = flatten_dict(value, full_key);</pre></td>
</tr><tr class="code-line uncovered">
<td class="line-num">19</td>
<td class="line-indicator">✗</td>
<td class="code-content"><pre> let nested_pairs = entries(nested);</pre></td>
</tr><tr class="code-line uncovered">
<td class="line-num">20</td>
<td class="line-indicator">✗</td>
<td class="code-content"><pre> for (np in nested_pairs) {</pre></td>
</tr><tr class="code-line uncovered">
<td class="line-num">21</td>
<td class="line-indicator">✗</td>
<td class="code-content"><pre> result[np[0]] = np[1];</pre></td>
</tr><tr class="code-line">
<td class="line-num">22</td>
<td class="line-indicator"></td>
<td class="code-content"><pre> }</pre></td>
</tr><tr class="code-line uncovered">
<td class="line-num">23</td>
<td class="line-indicator">✗</td>
<td class="code-content"><pre> } else {</pre></td>
</tr><tr class="code-line uncovered">
<td class="line-num">24</td>
<td class="line-indicator">✗</td>
<td class="code-content"><pre> result[full_key] = value;</pre></td>
</tr><tr class="code-line">
<td class="line-num">25</td>
<td class="line-indicator"></td>
<td class="code-content"><pre> }</pre></td>
</tr><tr class="code-line">
<td class="line-num">26</td>
<td class="line-indicator"></td>
<td class="code-content"><pre> }</pre></td>
</tr><tr class="code-line uncovered">
<td class="line-num">27</td>
<td class="line-indicator">✗</td>
<td class="code-content"><pre> return result;</pre></td>
</tr><tr class="code-line">
<td class="line-num">28</td>
<td class="line-indicator"></td>
<td class="code-content"><pre>}</pre></td>
</tr><tr class="code-line">
<td class="line-num">29</td>
<td class="line-indicator"></td>
<td class="code-content"><pre></pre></td>
</tr><tr class="code-line uncovered">
<td class="line-num">30</td>
<td class="line-indicator">✗</td>
<td class="code-content"><pre>fn i18n_load_translations(locale, dict) {</pre></td>
</tr><tr class="code-line uncovered">
<td class="line-num">31</td>
<td class="line-indicator">✗</td>
<td class="code-content"><pre> let flat = flatten_dict(dict, locale);</pre></td>
</tr><tr class="code-line uncovered">
<td class="line-num">32</td>
<td class="line-indicator">✗</td>
<td class="code-content"><pre> let pairs = entries(flat);</pre></td>
</tr><tr class="code-line uncovered">
<td class="line-num">33</td>
<td class="line-indicator">✗</td>
<td class="code-content"><pre> for (pair in pairs) {</pre></td>
</tr><tr class="code-line uncovered">
<td class="line-num">34</td>
<td class="line-indicator">✗</td>
<td class="code-content"><pre> i18n_translations[pair[0]] = pair[1];</pre></td>
</tr><tr class="code-line">
<td class="line-num">35</td>
<td class="line-indicator"></td>
<td class="code-content"><pre> }</pre></td>
</tr><tr class="code-line">
<td class="line-num">36</td>
<td class="line-indicator"></td>
<td class="code-content"><pre>}</pre></td>
</tr><tr class="code-line">
<td class="line-num">37</td>
<td class="line-indicator"></td>
<td class="code-content"><pre></pre></td>
</tr><tr class="code-line uncovered">
<td class="line-num">38</td>
<td class="line-indicator">✗</td>
<td class="code-content"><pre>fn i18n_t(key) -> String {</pre></td>
</tr><tr class="code-line uncovered">
<td class="line-num">39</td>
<td class="line-indicator">✗</td>
<td class="code-content"><pre> let locale_key = i18n_locale + "." + key;</pre></td>
</tr><tr class="code-line uncovered">
<td class="line-num">40</td>
<td class="line-indicator">✗</td>
<td class="code-content"><pre> if (has_key(i18n_translations, locale_key)) {</pre></td>
</tr><tr class="code-line uncovered">
<td class="line-num">41</td>
<td class="line-indicator">✗</td>
<td class="code-content"><pre> return i18n_translations[locale_key];</pre></td>
</tr><tr class="code-line">
<td class="line-num">42</td>
<td class="line-indicator"></td>
<td class="code-content"><pre> }</pre></td>
</tr><tr class="code-line uncovered">
<td class="line-num">43</td>
<td class="line-indicator">✗</td>
<td class="code-content"><pre> let en_key = "en." + key;</pre></td>
</tr><tr class="code-line uncovered">
<td class="line-num">44</td>
<td class="line-indicator">✗</td>
<td class="code-content"><pre> if (has_key(i18n_translations, en_key)) {</pre></td>
</tr><tr class="code-line uncovered">
<td class="line-num">45</td>
<td class="line-indicator">✗</td>
<td class="code-content"><pre> return i18n_translations[en_key];</pre></td>
</tr><tr class="code-line">
<td class="line-num">46</td>
<td class="line-indicator"></td>
<td class="code-content"><pre> }</pre></td>
</tr><tr class="code-line uncovered">
<td class="line-num">47</td>
<td class="line-indicator">✗</td>
<td class="code-content"><pre> return key;</pre></td>
</tr><tr class="code-line">
<td class="line-num">48</td>
<td class="line-indicator"></td>
<td class="code-content"><pre>}</pre></td>
</tr><tr class="code-line">
<td class="line-num">49</td>
<td class="line-indicator"></td>
<td class="code-content"><pre></pre></td>
</tr><tr class="code-line">
<td class="line-num">50</td>
<td class="line-indicator"></td>
<td class="code-content"><pre>// Replace all occurrences of a substring using split/join</pre></td>
</tr><tr class="code-line uncovered">
<td class="line-num">51</td>
<td class="line-indicator">✗</td>
<td class="code-content"><pre>fn replace_all(s, old_str, replacement) -> String {</pre></td>
</tr><tr class="code-line uncovered">
<td class="line-num">52</td>
<td class="line-indicator">✗</td>
<td class="code-content"><pre> let parts = split(s, old_str);</pre></td>
</tr><tr class="code-line uncovered">
<td class="line-num">53</td>
<td class="line-indicator">✗</td>
<td class="code-content"><pre> let result = join(parts, replacement);</pre></td>
</tr><tr class="code-line uncovered">
<td class="line-num">54</td>
<td class="line-indicator">✗</td>
<td class="code-content"><pre> return result;</pre></td>
</tr><tr class="code-line">
<td class="line-num">55</td>
<td class="line-indicator"></td>
<td class="code-content"><pre>}</pre></td>
</tr><tr class="code-line">
<td class="line-num">56</td>
<td class="line-indicator"></td>
<td class="code-content"><pre></pre></td>
</tr><tr class="code-line">
<td class="line-num">57</td>
<td class="line-indicator"></td>
<td class="code-content"><pre>// Interpolate named variables in a string</pre></td>
</tr><tr class="code-line">
<td class="line-num">58</td>
<td class="line-indicator"></td>
<td class="code-content"><pre>// Example: i18n_interpolate("Hello {name}!", {"name" => "Alice"}) => "Hello Alice!"</pre></td>
</tr><tr class="code-line uncovered">
<td class="line-num">59</td>
<td class="line-indicator">✗</td>
<td class="code-content"><pre>fn i18n_interpolate(template: String, vars: Hash) -> String {</pre></td>
</tr><tr class="code-line uncovered">
<td class="line-num">60</td>
<td class="line-indicator">✗</td>
<td class="code-content"><pre> let result = template;</pre></td>
</tr><tr class="code-line uncovered">
<td class="line-num">61</td>
<td class="line-indicator">✗</td>
<td class="code-content"><pre> let var_pairs = entries(vars);</pre></td>
</tr><tr class="code-line uncovered">
<td class="line-num">62</td>
<td class="line-indicator">✗</td>
<td class="code-content"><pre> for (vp in var_pairs) {</pre></td>
</tr><tr class="code-line uncovered">
<td class="line-num">63</td>
<td class="line-indicator">✗</td>
<td class="code-content"><pre> let name = vp[0];</pre></td>
</tr><tr class="code-line uncovered">
<td class="line-num">64</td>
<td class="line-indicator">✗</td>
<td class="code-content"><pre> let value = str(vp[1]);</pre></td>
</tr><tr class="code-line uncovered">
<td class="line-num">65</td>
<td class="line-indicator">✗</td>
<td class="code-content"><pre> let placeholder = "{" + name + "}";</pre></td>
</tr><tr class="code-line uncovered">
<td class="line-num">66</td>
<td class="line-indicator">✗</td>
<td class="code-content"><pre> result = replace_all(result, placeholder, value);</pre></td>
</tr><tr class="code-line">
<td class="line-num">67</td>
<td class="line-indicator"></td>
<td class="code-content"><pre> }</pre></td>
</tr><tr class="code-line uncovered">
<td class="line-num">68</td>
<td class="line-indicator">✗</td>
<td class="code-content"><pre> return result;</pre></td>
</tr><tr class="code-line">
<td class="line-num">69</td>
<td class="line-indicator"></td>
<td class="code-content"><pre>}</pre></td>
</tr><tr class="code-line">
<td class="line-num">70</td>
<td class="line-indicator"></td>
<td class="code-content"><pre></pre></td>
</tr><tr class="code-line">
<td class="line-num">71</td>
<td class="line-indicator"></td>
<td class="code-content"><pre>// Translate with interpolation</pre></td>
</tr><tr class="code-line uncovered">
<td class="line-num">72</td>
<td class="line-indicator">✗</td>
<td class="code-content"><pre>fn i18n_tn(key, vars) -> String {</pre></td>
</tr><tr class="code-line uncovered">
<td class="line-num">73</td>
<td class="line-indicator">✗</td>
<td class="code-content"><pre> let template = i18n_t(key);</pre></td>
</tr><tr class="code-line uncovered">
<td class="line-num">74</td>
<td class="line-indicator">✗</td>
<td class="code-content"><pre> if (vars == null) {</pre></td>
</tr><tr class="code-line uncovered">
<td class="line-num">75</td>
<td class="line-indicator">✗</td>
<td class="code-content"><pre> return template;</pre></td>
</tr><tr class="code-line">
<td class="line-num">76</td>
<td class="line-indicator"></td>
<td class="code-content"><pre> }</pre></td>
</tr><tr class="code-line uncovered">
<td class="line-num">77</td>
<td class="line-indicator">✗</td>
<td class="code-content"><pre> return i18n_interpolate(template, vars);</pre></td>
</tr><tr class="code-line">
<td class="line-num">78</td>
<td class="line-indicator"></td>
<td class="code-content"><pre>}</pre></td>
</tr><tr class="code-line">
<td class="line-num">79</td>
<td class="line-indicator"></td>
<td class="code-content"><pre></pre></td>
</tr><tr class="code-line">
<td class="line-num">80</td>
<td class="line-indicator"></td>
<td class="code-content"><pre>// ===== Load translation files =====</pre></td>
</tr><tr class="code-line uncovered">
<td class="line-num">81</td>
<td class="line-indicator">✗</td>
<td class="code-content"><pre>let en_data = json_parse(slurp("examples/i18n/locales/en.json"));</pre></td>
</tr><tr class="code-line uncovered">
<td class="line-num">82</td>
<td class="line-indicator">✗</td>
<td class="code-content"><pre>let fr_data = json_parse(slurp("examples/i18n/locales/fr.json"));</pre></td>
</tr><tr class="code-line uncovered">
<td class="line-num">83</td>
<td class="line-indicator">✗</td>
<td class="code-content"><pre>let de_data = json_parse(slurp("examples/i18n/locales/de.json"));</pre></td>
</tr><tr class="code-line">
<td class="line-num">84</td>
<td class="line-indicator"></td>
<td class="code-content"><pre></pre></td>
</tr><tr class="code-line uncovered">
<td class="line-num">85</td>
<td class="line-indicator">✗</td>
<td class="code-content"><pre>i18n_load_translations("en", en_data);</pre></td>
</tr><tr class="code-line uncovered">
<td class="line-num">86</td>
<td class="line-indicator">✗</td>
<td class="code-content"><pre>i18n_load_translations("fr", fr_data);</pre></td>
</tr><tr class="code-line uncovered">
<td class="line-num">87</td>
<td class="line-indicator">✗</td>
<td class="code-content"><pre>i18n_load_translations("de", de_data);</pre></td>
</tr><tr class="code-line">
<td class="line-num">88</td>
<td class="line-indicator"></td>
<td class="code-content"><pre></pre></td>
</tr><tr class="code-line uncovered">
<td class="line-num">89</td>
<td class="line-indicator">✗</td>
<td class="code-content"><pre>print("=== i18n Named Interpolation Example ===");</pre></td>
</tr><tr class="code-line uncovered">
<td class="line-num">90</td>
<td class="line-indicator">✗</td>
<td class="code-content"><pre>print("");</pre></td>
</tr><tr class="code-line">
<td class="line-num">91</td>
<td class="line-indicator"></td>
<td class="code-content"><pre></pre></td>
</tr><tr class="code-line">
<td class="line-num">92</td>
<td class="line-indicator"></td>
<td class="code-content"><pre>// Example 1: Simple greeting with name</pre></td>
</tr><tr class="code-line uncovered">
<td class="line-num">93</td>
<td class="line-indicator">✗</td>
<td class="code-content"><pre>print("1. Greeting with name:");</pre></td>
</tr><tr class="code-line uncovered">
<td class="line-num">94</td>
<td class="line-indicator">✗</td>
<td class="code-content"><pre>print(" EN: " + i18n_interpolate(i18n_t("greeting.name"), {"name" => "Alice"}));</pre></td>
</tr><tr class="code-line uncovered">
<td class="line-num">95</td>
<td class="line-indicator">✗</td>
<td class="code-content"><pre>print(" FR: " + i18n_interpolate(i18n_t("greeting.name"), {"name" => "Alice"}));</pre></td>
</tr><tr class="code-line uncovered">
<td class="line-num">96</td>
<td class="line-indicator">✗</td>
<td class="code-content"><pre>print(" DE: " + i18n_interpolate(i18n_t("greeting.name"), {"name" => "Alice"}));</pre></td>
</tr><tr class="code-line">
<td class="line-num">97</td>
<td class="line-indicator"></td>
<td class="code-content"><pre></pre></td>
</tr><tr class="code-line">
<td class="line-num">98</td>
<td class="line-indicator"></td>
<td class="code-content"><pre>// Example 2: Items in cart</pre></td>
</tr><tr class="code-line uncovered">
<td class="line-num">99</td>
<td class="line-indicator">✗</td>
<td class="code-content"><pre>print("");</pre></td>
</tr><tr class="code-line uncovered">
<td class="line-num">100</td>
<td class="line-indicator">✗</td>
<td class="code-content"><pre>print("2. Items in cart:");</pre></td>
</tr><tr class="code-line uncovered">
<td class="line-num">101</td>
<td class="line-indicator">✗</td>
<td class="code-content"><pre>print(" EN: " + i18n_tn("cart.items", {"count" => 5, "items" => "apples"}));</pre></td>
</tr><tr class="code-line uncovered">
<td class="line-num">102</td>
<td class="line-indicator">✗</td>
<td class="code-content"><pre>print(" FR: " + i18n_tn("cart.items", {"count" => 5, "items" => "pommes"}));</pre></td>
</tr><tr class="code-line uncovered">
<td class="line-num">103</td>
<td class="line-indicator">✗</td>
<td class="code-content"><pre>print(" DE: " + i18n_tn("cart.items", {"count" => 5, "items" => "Äpfel"}));</pre></td>
</tr><tr class="code-line">
<td class="line-num">104</td>
<td class="line-indicator"></td>
<td class="code-content"><pre></pre></td>
</tr><tr class="code-line">
<td class="line-num">105</td>
<td class="line-indicator"></td>
<td class="code-content"><pre>// Example 3: Date formatting</pre></td>
</tr><tr class="code-line uncovered">
<td class="line-num">106</td>
<td class="line-indicator">✗</td>
<td class="code-content"><pre>print("");</pre></td>
</tr><tr class="code-line uncovered">
<td class="line-num">107</td>
<td class="line-indicator">✗</td>
<td class="code-content"><pre>print("3. Date with components:");</pre></td>
</tr><tr class="code-line uncovered">
<td class="line-num">108</td>
<td class="line-indicator">✗</td>
<td class="code-content"><pre>print(" EN: " + i18n_interpolate(i18n_t("date.format"), {"day" => 20, "month" => 1, "year" => 2025}));</pre></td>
</tr><tr class="code-line uncovered">
<td class="line-num">109</td>
<td class="line-indicator">✗</td>
<td class="code-content"><pre>print(" FR: " + i18n_interpolate(i18n_t("date.format"), {"day" => 20, "month" => 1, "year" => 2025}));</pre></td>
</tr><tr class="code-line uncovered">
<td class="line-num">110</td>
<td class="line-indicator">✗</td>
<td class="code-content"><pre>print(" DE: " + i18n_interpolate(i18n_t("date.format"), {"day" => 20, "month" => 1, "year" => 2025}));</pre></td>
</tr><tr class="code-line">
<td class="line-num">111</td>
<td class="line-indicator"></td>
<td class="code-content"><pre></pre></td>
</tr><tr class="code-line">
<td class="line-num">112</td>
<td class="line-indicator"></td>
<td class="code-content"><pre>// Example 4: Price with currency</pre></td>
</tr><tr class="code-line uncovered">
<td class="line-num">113</td>
<td class="line-indicator">✗</td>
<td class="code-content"><pre>print("");</pre></td>
</tr><tr class="code-line uncovered">
<td class="line-num">114</td>
<td class="line-indicator">✗</td>
<td class="code-content"><pre>print("4. Price formatting:");</pre></td>
</tr><tr class="code-line uncovered">
<td class="line-num">115</td>
<td class="line-indicator">✗</td>
<td class="code-content"><pre>print(" EN: " + i18n_interpolate(i18n_t("price.format"), {"amount" => 99.99, "currency" => "$"}));</pre></td>
</tr><tr class="code-line uncovered">
<td class="line-num">116</td>
<td class="line-indicator">✗</td>
<td class="code-content"><pre>print(" FR: " + i18n_interpolate(i18n_t("price.format"), {"amount" => 99.99, "currency" => "€"}));</pre></td>
</tr><tr class="code-line uncovered">
<td class="line-num">117</td>
<td class="line-indicator">✗</td>
<td class="code-content"><pre>print(" DE: " + i18n_interpolate(i18n_t("price.format"), {"amount" => 99.99, "currency" => "€"}));</pre></td>
</tr><tr class="code-line">
<td class="line-num">118</td>
<td class="line-indicator"></td>
<td class="code-content"><pre></pre></td>
</tr><tr class="code-line">
<td class="line-num">119</td>
<td class="line-indicator"></td>
<td class="code-content"><pre>// Example 5: User profile</pre></td>
</tr><tr class="code-line uncovered">
<td class="line-num">120</td>
<td class="line-indicator">✗</td>
<td class="code-content"><pre>print("");</pre></td>
</tr><tr class="code-line uncovered">
<td class="line-num">121</td>
<td class="line-indicator">✗</td>
<td class="code-content"><pre>print("5. User profile message:");</pre></td>
</tr><tr class="code-line uncovered">
<td class="line-num">122</td>
<td class="line-indicator">✗</td>
<td class="code-content"><pre>i18n_set_locale("en");</pre></td>
</tr><tr class="code-line uncovered">
<td class="line-num">123</td>
<td class="line-indicator">✗</td>
<td class="code-content"><pre>let user_vars = {"name" => "John", "age" => 30, "city" => "Paris"};</pre></td>
</tr><tr class="code-line uncovered">
<td class="line-num">124</td>
<td class="line-indicator">✗</td>
<td class="code-content"><pre>print(" EN: " + i18n_interpolate(i18n_t("profile.message"), user_vars));</pre></td>
</tr><tr class="code-line">
<td class="line-num">125</td>
<td class="line-indicator"></td>
<td class="code-content"><pre></pre></td>
</tr><tr class="code-line uncovered">
<td class="line-num">126</td>
<td class="line-indicator">✗</td>
<td class="code-content"><pre>i18n_set_locale("fr");</pre></td>
</tr><tr class="code-line uncovered">
<td class="line-num">127</td>
<td class="line-indicator">✗</td>
<td class="code-content"><pre>print(" FR: " + i18n_interpolate(i18n_t("profile.message"), user_vars));</pre></td>
</tr><tr class="code-line">
<td class="line-num">128</td>
<td class="line-indicator"></td>
<td class="code-content"><pre></pre></td>
</tr><tr class="code-line uncovered">
<td class="line-num">129</td>
<td class="line-indicator">✗</td>
<td class="code-content"><pre>i18n_set_locale("de");</pre></td>
</tr><tr class="code-line uncovered">
<td class="line-num">130</td>
<td class="line-indicator">✗</td>
<td class="code-content"><pre>print(" DE: " + i18n_interpolate(i18n_t("profile.message"), user_vars));</pre></td>
</tr><tr class="code-line">
<td class="line-num">131</td>
<td class="line-indicator"></td>
<td class="code-content"><pre></pre></td>
</tr><tr class="code-line uncovered">
<td class="line-num">132</td>
<td class="line-indicator">✗</td>
<td class="code-content"><pre>print("");</pre></td>
</tr><tr class="code-line uncovered">
<td class="line-num">133</td>
<td class="line-indicator">✗</td>
<td class="code-content"><pre>print("=== Complete ===");</pre></td>
</tr>
</tbody>
</table>
</section>
</div>
</body>
</html>