Merge branch 'main' into feat/improve-reference-counting

This commit is contained in:
Tim Grelka
2026-05-06 10:23:00 +02:00
50 changed files with 1289 additions and 33396 deletions
+3 -3
View File
@@ -46,7 +46,7 @@ Wenn man allerdings nur den Widerstand und die Spannung kennt und den entspreche
$ I = \dfrac{U}{R} $
[question:64]
[question:NB504]
Würde man die 10 V-Batterie in dem Beispiel durch eine 20 V-Batterie ersetzen, dann würde sich auch der Strom von 1 mA auf 2 mA erhöhen. Wenn man also die Spannung verdoppelt, dann verdoppelt sich auch der Strom. Entsprechend würde sich auch der Strom auf 0,5 mA halbieren, wenn man die Spannung auf 5 V halbieren würde.
@@ -73,8 +73,8 @@ CQ CQ hier ist DL1PZ mit einem allgemeinen Anruf, hier ist DL1PZ und hört.
---
[question:397]
[question:515]
[question:BB102]
[question:BE105]
<indepth>
*QSO* ist eine Abkürzung, die ursprünglich aus der Morsetelegrafie stammt und "ich habe direkten Kontakt zu Station X" bedeutet. Daran angelehnt, sprechen Funkamateure oftmals von einem QSO, wenn sie eine erfolgreiche Funkverbindung meinen.
+1 -1
View File
@@ -75,7 +75,7 @@ CQ CQ hier ist DL1PZ mit einem allgemeinen Anruf, hier ist DL1PZ und hört.
[photo:123:n_rst_s-meter:Display eines IC9700-Transceivers, hervorgehoben ist das S-Meter, das den aktuellen Empfangspegel anzeigt]
---
[question:2482]
[question:NB201]
---
## Slide Tabelle
+1
View File
@@ -10,6 +10,7 @@ from test.util import paragraph
def test_dash_html():
assertions = {
"Foo - Bar": "Foo &ndash; Bar",
"Foo-Bar": "Foo-Bar",
}
for assertion in assertions:
+10 -10
View File
@@ -4,11 +4,14 @@ import pytest
from jinja2 import Environment, FileSystemLoader
from mistletoe import Document
import src.config as config
from renderer.fifty_ohm_html_renderer import FiftyOhmHtmlRenderer
conf = config.Config()
def parse_katalog():
with open("data/fragenkatalog3b.json") as fragenkatalog_file:
with open(conf.p_data_fragenkatalog) as fragenkatalog_file:
fragenkatalog = json.load(fragenkatalog_file)
questions = {}
@@ -28,17 +31,15 @@ def parse_katalog():
env = Environment(loader=FileSystemLoader("templates/html"))
question_template = env.get_template("question.html")
questions = parse_katalog()
def question_stub(input):
def question_stub(number):
questions = parse_katalog()
"""Combines the original question dataset from BNetzA with our internal metadata"""
with open("data/metadata3b.json") as metadata_file:
with open(conf.p_data_metadata) as metadata_file:
metadata = json.load(metadata_file)
number = metadata[f"{input}"]["number"] # Fragennummer z.B. AB123
question = questions[number]
metadata = metadata[f"{input}"]
metadata = metadata[f"{number}"]
if "answer_a" in question:
answers = [question["answer_a"], question["answer_b"], question["answer_c"], question["answer_d"]]
@@ -71,9 +72,8 @@ def question_stub(input):
def include_stub(include):
with open("data/includes.json") as file:
includes = json.load(file)
return includes.get(include)
with open(conf.p_data_html / f"{include}.html") as file:
return file.read()
@pytest.mark.skip("Requires special files")
+8 -7
View File
@@ -5,11 +5,14 @@ import pytest
from jinja2 import Environment, FileSystemLoader
from mistletoe import Document
import src.config as config
from renderer.fifty_ohm_html_slide_renderer import FiftyOhmHtmlSlideRenderer
conf = config.Config()
def parse_katalog():
with open("data/fragenkatalog3b.json") as fragenkatalog_file:
with open(conf.p_data_fragenkatalog) as fragenkatalog_file:
fragenkatalog = json.load(fragenkatalog_file)
questions = {}
@@ -43,14 +46,13 @@ def filter_shuffle_answers(seq):
return seq
def question_stub(input):
def question_stub(number):
questions = parse_katalog()
"""Combines the original question dataset from BNetzA with our internal metadata"""
with open("data/metadata3b.json") as metadata_file:
with open(conf.p_data_metadata) as metadata_file:
metadata = json.load(metadata_file)
number = metadata[f"{input}"]["number"] # Fragennummer z.B. AB123
question = questions[number]
metadata = metadata[f"{input}"]
metadata = metadata[f"{number}"]
if "answer_a" in question:
answers = [question["answer_a"], question["answer_b"], question["answer_c"], question["answer_d"]]
@@ -86,7 +88,6 @@ env = Environment(loader=FileSystemLoader("templates/"))
env.filters["shuffle_answers"] = filter_shuffle_answers
question_template = env.get_template("slide/question.html")
slide_template = env.get_template("slide/slide.html")
questions = parse_katalog()
@pytest.mark.skip("Requires special files")
+59
View File
@@ -0,0 +1,59 @@
import mistletoe
import pytest
from renderer.fifty_ohm_html_renderer import FiftyOhmHtmlRenderer
from renderer.fifty_ohm_latex_renderer import FiftyOhmLaTeXRenderer
from test.util import paragraph
@pytest.mark.html
def test_index_html():
assertions = {
"Im Betrieb werden Yagi-Antennen [index:Antenne:Yagi-Antenne] oft gedreht": (
"Im Betrieb werden Yagi-Antennen"
+ '<span id="index_antenne__yagi_antenne" class="index-anchor" aria-hidden="true"></span>'
+ " oft gedreht"
),
"Im Betrieb werden Yagi-Antennen[index:Antenne:Yagi-Antenne] oft gedreht": (
"Im Betrieb werden Yagi-Antennen"
+ '<span id="index_antenne__yagi_antenne" class="index-anchor" aria-hidden="true"></span>'
+ " oft gedreht"
),
"Im Betrieb werden Yagi-Antennen [index:Antenne] oft gedreht": (
"Im Betrieb werden Yagi-Antennen"
+ '<span id="index_antenne" class="index-anchor" aria-hidden="true"></span>'
+ " oft gedreht"
),
"Im Betrieb werden Yagi-Antennen[index:Antenne] oft gedreht": (
"Im Betrieb werden Yagi-Antennen"
+ '<span id="index_antenne" class="index-anchor" aria-hidden="true"></span>'
+ " oft gedreht"
),
"Im Betrieb werden Yagi-Antennen[index:Test Antenne] oft gedreht": (
"Im Betrieb werden Yagi-Antennen"
+ '<span id="index_test_antenne" class="index-anchor" aria-hidden="true"></span>'
+ " oft gedreht"
),
"Im Betrieb [index:Antenne] und nochmals [index:Antenne] oft gedreht": (
"Im Betrieb"
+ '<span id="index_antenne" class="index-anchor" aria-hidden="true"></span>'
+ " und nochmals oft gedreht"
),
}
for key, value in assertions.items():
assert mistletoe.markdown(key, FiftyOhmHtmlRenderer) == paragraph(value)
@pytest.mark.latex
def test_index_latex():
assertions = {
"Im Betrieb werden Yagi-Antennen [index:Antenne:Yagi-Antenne] oft gedreht": "Im Betrieb werden Yagi-Antennen\\index{Antenne!Yagi-Antenne} oft gedreht", # noqa: E501
"Im Betrieb werden Yagi-Antennen[index:Antenne:Yagi-Antenne] oft gedreht": "Im Betrieb werden Yagi-Antennen\\index{Antenne!Yagi-Antenne} oft gedreht", # noqa: E501
"Im Betrieb werden Yagi-Antennen [index:Antenne] oft gedreht": "Im Betrieb werden Yagi-Antennen\\index{Antenne} oft gedreht", # noqa: E501
"Im Betrieb werden Yagi-Antennen[index:Antenne] oft gedreht": "Im Betrieb werden Yagi-Antennen\\index{Antenne} oft gedreht", # noqa: E501
"Im Betrieb werden Yagi-Antennen [index:Test Antenne] oft gedreht": "Im Betrieb werden Yagi-Antennen\\index{Test Antenne} oft gedreht", # noqa: E501
}
for key, value in assertions.items():
assert mistletoe.markdown(key, FiftyOhmLaTeXRenderer) == "\n" + value + "\n"