Skip to content

Commit

Permalink
+
Browse files Browse the repository at this point in the history
  • Loading branch information
anezih committed Apr 13, 2024
1 parent 77c71bf commit ab8d9e4
Show file tree
Hide file tree
Showing 6 changed files with 511 additions and 11 deletions.
38 changes: 27 additions & 11 deletions src/gts.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,6 @@
import json
import re
import subprocess
import sys
import tarfile
from datetime import datetime
from enum import Enum
Expand All @@ -21,6 +20,9 @@
SURUM = (2, 4, 3)
BETIK_DY = Path(__file__).resolve().parent

def html_escape(metin: str) -> str:
return html.escape(metin)

# https://github.com/anezih/add_inflections/blob/c58b98de4b65eff357427849533bb05139481806/add_inflections.py#L43
class InflBase:
def __init__(self, source_path: str, glos_format: str = "") -> None:
Expand Down Expand Up @@ -260,14 +262,15 @@ def anlam_sira(self) -> int:
return int(self.anlam_sozluk["anlam_sira"])

@cached_property
def fiil(self) -> str:
def fiil(self) -> bool:
if self.anlam_sozluk["fiil"] == "1":
return "[FİİL]"
return True
return False

@cached_property
def ozelliklerListe(self) -> list[str]:
ozellikler: list[str] = list()
if _ozelliklerListe:=self.anlam_sozluk["ozelliklerListe"]:
if _ozelliklerListe:=self.anlam_sozluk.get("ozelliklerListe"):
for o in _ozelliklerListe:
ozellikler.append(o["tam_adi"])
return ozellikler
Expand Down Expand Up @@ -306,7 +309,7 @@ def anlam_gonderme_baglantili(self) -> str:
j,
f'<a href="bword://{html.escape(j)}">{j}</a>',
1
)
).replace("► ","")
return yeni_tanim

class Girdi:
Expand All @@ -319,7 +322,9 @@ def __init__(self, json_girdisi: dict[str,str], duzeltme_imi: DuzeltmeImi,

@property
def anlam_html(self) -> str:
return self.tpl.render({"Girdi" : self})
html = self.tpl.render({"Girdi" : self}).replace("\n","")
html = re.sub(r"\s{2,}", " ", html)
return html

@property
def diger_bicimler(self) -> set[str]:
Expand Down Expand Up @@ -352,14 +357,16 @@ def madde_imsiz(self) -> str:
return self.duzeltme_imi(self.madde)

@cached_property
def cogul_mu(self) -> str:
def cogul_mu(self) -> bool:
if self.json_girdisi["cogul_mu"] == "1":
return "[ÇOĞUL]"
return True
return False

@cached_property
def ozel_mi(self) -> str:
def ozel_mi(self) -> bool:
if self.json_girdisi["ozel_mi"] == "1":
return "[ÖZEL]"
return True
return False

@cached_property
def lisan(self) -> str:
Expand Down Expand Up @@ -463,6 +470,7 @@ def GtsJSON(self) -> dict:
def tpl(self) -> Template:
env = Environment(loader=FileSystemLoader(BETIK_DY / "tpl"),
trim_blocks=True, lstrip_blocks=True, keep_trailing_newline=False)
env.filters["HtmlEscape"] = html_escape
match self.cikti_secenegi:
case CiktiSecenegi.StarDict:
return env.get_template("stardict.html.j2")
Expand All @@ -487,7 +495,7 @@ def css_ekle(self, glossary: Glossary) -> None:
def ekle(css_path: Path):
glossary.addEntry(
glossary.newDataEntry(
css_path.name, css_path.read_bytes
css_path.name, css_path.read_bytes()
)
)
match self.cikti_secenegi:
Expand Down Expand Up @@ -556,6 +564,14 @@ def kobo(self) -> None:
if not klasor.exists():
klasor.mkdir()
glossary.write(str(dosya_ismi), "Dictfile")
df_satirlar = dosya_ismi.read_text(encoding="utf-8").split("\n")
df_satirlar_yeni: list[str] = list()
for satir in df_satirlar:
if satir.startswith("@"):
df_satirlar_yeni.append(satir.replace("\"", "'"))
else:
df_satirlar_yeni.append(satir)
dosya_ismi.write_text("\n".join(df_satirlar_yeni), encoding="utf-8")
subprocess.Popen(["dictgen-windows.exe", str(dosya_ismi),
"-o", str(klasor / "dicthtml-tr.zip")],
stdout=subprocess.DEVNULL, stderr=subprocess.STDOUT)
Expand Down
69 changes: 69 additions & 0 deletions src/tpl/inline.html.j2
Original file line number Diff line number Diff line change
@@ -0,0 +1,69 @@
<div style="display: block;">
<div style="display: inline-block;">
{% if Girdi.telaffuz %}
<span style="display: block;margin-bottom: 0.375em;">/{{ Girdi.telaffuz }}/</span>
{% endif %}
{% if Girdi.lisan %}
<span style="display: block;margin-bottom: 0.5em;">Kaynak: {{ Girdi.lisan }}</span>
{% endif %}
{% if Girdi.cogul_mu %}
<span style="display: inline-block;">[ÇOĞUL]&nbsp;</span>
{% endif %}
{% if Girdi.ozel_mi %}
<span style="display: inline-block;">[ÖZEL]</span>
{% endif %}
</div>
<div style="display: block;margin-top: 0.375em;">
{% if Girdi.on_taki or Girdi.taki %}
<span style="font-weight: bold;display: block;margin-bottom: 0.375em;">{{ Girdi.on_taki }}&nbsp;{{ Girdi.madde }}, -{{Girdi.taki}}</span>
{% endif %}
{% for Anlam in Girdi.anlam %}
<div style="display: block;margin-bottom: 0.5em;">
{% if Girdi.anlam|length > 1 %}
<span style="font-weight: bold;">{{ Anlam.anlam_sira }}.&nbsp;</span>
{% else %}
<span style="text-indent: 1em;"></span>
{% endif %}
{% if Anlam.fiil %}
<span style="display: inline-block;">[FİİL]&nbsp;</span>
{% endif %}
{% if Anlam.ozelliklerListe %}
<span style="display: inline-block;font-style: italic;">[
{% for Ozellik in Anlam.ozelliklerListe %}
{{ "%s" % Ozellik if loop.last else "%s, " % Ozellik }}
{% endfor %}
]</span>
{% endif %}
<span>
{{ Anlam.anlam }}
</span>
{% if Anlam.orneklerListe %}
<div style="display: block;">
{% for _ornek in Anlam.orneklerListe %}
<span style="display: block;margin-left: 1em;margin-right: 1em;margin-top: 0.5em;">▪ {{ _ornek.ornek }}</span>
{% if _ornek.yazar %}
<span style="display: block;margin-left: 1em;margin-right: 1em;margin-top: 0.5em;">— {{ _ornek.yazar }}</span>
{% endif %}
{% endfor %}
</div>
{% endif %}
</div>
{% endfor %}
{% if Girdi.atasozu %}
<div style="display: block;margin-top: 0.5em;">
<span style="font-weight: bold;display: block;margin-bottom: 0.375em;">Atasözleri, Deyimler veya Birleşik Fiiller</span><br>
{% for a in Girdi.atasozu %}
{{ "%s" % a if loop.last else "%s, " % a }}
{% endfor %}
</div>
{% endif %}
{% if Girdi.birlesikler %}
<div style="display: block;margin-top: 0.5em;">
<span style="font-weight: bold;display: block;margin-bottom: 0.375em;">Birleşik Kelimeler</span><br>
{% for a in Girdi.birlesikler %}
{{ "%s" % a if loop.last else "%s, " % a }}
{% endfor %}
</div>
{% endif %}
</div>
</div>
70 changes: 70 additions & 0 deletions src/tpl/stardict.html.j2
Original file line number Diff line number Diff line change
@@ -0,0 +1,70 @@
<link rel="stylesheet" href="stardict_bicem.css">
<div class="girdi">
<div class="ozellik">
{% if Girdi.telaffuz %}
<span class="okunus">/{{ Girdi.telaffuz }}/</span>
{% endif %}
{% if Girdi.lisan %}
<span class="dil">Kaynak: {{ Girdi.lisan }}</span>
{% endif %}
{% if Girdi.cogul_mu %}
<span class="cogul">[ÇOĞUL]&nbsp;</span>
{% endif %}
{% if Girdi.ozel_mi %}
<span class="ozel">[ÖZEL]</span>
{% endif %}
</div>
<div class="anlam">
{% if Girdi.on_taki or Girdi.taki %}
<span class="madde">{{ Girdi.on_taki }}&nbsp;{{ Girdi.madde }}, -{{Girdi.taki}}</span>
{% endif %}
{% for Anlam in Girdi.anlam %}
<div class="anlam-tekil">
{% if Girdi.anlam|length > 1 %}
<span class="anlam-sira">{{ Anlam.anlam_sira }}.&nbsp;</span>
{% else %}
<span class="girinti"></span>
{% endif %}
{% if Anlam.fiil %}
<span class="eylem">[FİİL]&nbsp;</span>
{% endif %}
{% if Anlam.ozelliklerListe %}
<span class="ozellik">[
{% for Ozellik in Anlam.ozelliklerListe %}
{{ "%s" % Ozellik if loop.last else "%s, " % Ozellik }}
{% endfor %}
]</span>
{% endif %}
<span class="anlam">
{{ Anlam.anlam_gonderme_baglantili }}
</span>
{% if Anlam.orneklerListe %}
<div class="ornekler">
{% for _ornek in Anlam.orneklerListe %}
<span class="ornek">▪ {{ _ornek.ornek }}</span>
{% if _ornek.yazar %}
<span class="yazar">— {{ _ornek.yazar }}</span>
{% endif %}
{% endfor %}
</div>
{% endif %}
</div>
{% endfor %}
{% if Girdi.atasozu %}
<div class="atasozu">
<span class="baslik">Atasözleri, Deyimler veya Birleşik Fiiller</span>
{% for a in Girdi.atasozu %}
<span class="atasozu-baglanti">↗ <a class="atasozu" href="bword://{{a|HtmlEscape}}">{{a}}</a></span>
{% endfor %}
</div>
{% endif %}
{% if Girdi.birlesikler %}
<div class="birlesikler">
<span class="baslik">Birleşik Kelimeler</span>
{% for a in Girdi.birlesikler %}
<span class="birlesikler-baglanti">↗ <a class="birlesikler" href="bword://{{a|HtmlEscape}}">{{a}}</a></span>
{% endfor %}
</div>
{% endif %}
</div>
</div>
120 changes: 120 additions & 0 deletions src/tpl/stardict_bicem.css
Original file line number Diff line number Diff line change
@@ -0,0 +1,120 @@
div.girdi {
display: block;
}

div.ozellik {
display: inline-block;
}

div.anlam {
display: block;
margin-top: 0.375em;
}

div.anlam-tekil {
display: block;
margin-bottom: 0.5em;
}

div.ornekler {
display: block;
}

div.atasozu {
display: block;
margin-top: 0.5em;
}

div.birlesikler {
display: block;
margin-top: 0.5em;
}

span.okunus {
display: block;
margin-bottom: 0.375em;
color: #014E52;
}

span.dil {
display: block;
margin-bottom: 0.5em;
}

span.cogul {
display: inline-block;
color: #002BB3;
}

span.ozel {
display: inline-block;
color: #002BB3;
}

span.madde {
font-weight: bold;
display: block;
margin-bottom: 0.375em;
}

span.anlam-sira {
font-weight: bold;
}

span.eylem {
display: inline-block;
color: #002BB3;
}

span.girinti {
text-indent: 1em;
}

span.ozellik {
display: inline-block;
font-style: normal;
color: #002BB3;
}

/* span.anlam {
} */

span.ornek {
display: block;
margin-left: 1em;
margin-right: 1em;
margin-top: 0.5em;
}

span.yazar {
display: block;
text-indent: 1.05em;
}

span.baslik {
font-weight: bold;
display: block;
margin-bottom: 0.375em;
}

span.atasozu-baglanti {
display: block;
}

span.birlesikler-baglanti {
display: block;
}

a {
text-decoration: underline;
color: black;
}

a.atasozu {
text-decoration: none;
}

a.birlesikler {
text-decoration: none;
}
Loading

0 comments on commit ab8d9e4

Please sign in to comment.