Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > cz.comp.lang.python > #3172 > unrolled thread
| Started by | Matěj Cepl <mcepl@cepl.eu> |
|---|---|
| First post | 2017-05-10 21:35 +0200 |
| Last post | 2017-05-11 16:31 +0200 |
| Articles | 9 — 5 participants |
Back to article view | Back to cz.comp.lang.python
alternativa textwrap.fill(), která by zarovnávala po česku? Matěj Cepl <mcepl@cepl.eu> - 2017-05-10 21:35 +0200
Re: [python] alternativa textwrap.fill(), která by zarovnávala po česku? Honza Král <honza.kral@gmail.com> - 2017-05-10 23:02 +0200
Re: [python] alternativa textwrap.fill(), která by zarovnávala po česku? Matěj Cepl <mcepl@cepl.eu> - 2017-05-10 23:51 +0200
Re: [python] alternativa textwrap.fill(), která by zarovnávala po česku? Vláďa Macek <macek@sandbox.cz> - 2017-05-11 00:28 +0200
Re: [python] alternativa textwrap.fill(), která by zarovnávala po česku? Matěj Cepl <mcepl@cepl.eu> - 2017-05-11 01:12 +0200
Re: [python] alternativa textwrap.fill(), která by zarovnávala po česku? Petr Přikryl <prikryl@atlas.cz> - 2017-05-11 09:31 +0200
Re: [python] alternativa textwrap.fill(), která by zarovnávala po česku? Matěj Cepl <mcepl@cepl.eu> - 2017-05-11 10:50 +0200
Re: [python] alternativa textwrap.fill(), která by zarovnávala po česku? Petr Viktorin <encukou@gmail.com> - 2017-05-11 11:22 +0200
Re: [python] alternativa textwrap.fill(), která by zarovnávala po česku? Matěj Cepl <mcepl@cepl.eu> - 2017-05-11 16:31 +0200
| From | Matěj Cepl <mcepl@cepl.eu> |
|---|---|
| Date | 2017-05-10 21:35 +0200 |
| Subject | alternativa textwrap.fill(), která by zarovnávala po česku? |
| Message-ID | <slrnoh6qs6.4c8.mcepl@mitmanek.ceplovi.cz> |
Dobrý den,
nevíte někdo o alternativě k textwrap.fill(), která by uměla
zarovnávat text tak, aby jednopísmenné předložky nezůstávaly na
konci řádku?
Děkuji za jakékoli nakopnutí správným směrem,
Matěj
--
https://matej.ceplovi.cz/blog/, Jabber: mcepl@ceplovi.cz
GPG Finger: 3C76 A027 CA45 AD70 98B5 BC1D 7920 5802 880B C9D8
Of course I'm respectable. I'm old. Politicians, ugly buildings,
and whores all get respectable if they last long enough.
--John Huston in "Chinatown."
[toc] | [next] | [standalone]
| From | Honza Král <honza.kral@gmail.com> |
|---|---|
| Date | 2017-05-10 23:02 +0200 |
| Subject | Re: [python] alternativa textwrap.fill(), která by zarovnávala po česku? |
| Message-ID | <mailman.1.1494450194.22440.python@py.cz> |
| In reply to | #3172 |
Dobry vecer, spravne by melo byt nahradit mezeru na predlozkami nezlomitelnymi mezerami (https://cs.wikipedia.org/wiki/Nezlomitelná_mezera) a tim padem by vse pak melo fungovat jak ma. Honza Král E-Mail: honza.kral@gmail.com Phone: +420 606 678585 2017-05-10 21:35 GMT+02:00 Matěj Cepl <mcepl@cepl.eu>: > Dobrý den, > > nevíte někdo o alternativě k textwrap.fill(), která by uměla > zarovnávat text tak, aby jednopísmenné předložky nezůstávaly na > konci řádku? > > Děkuji za jakékoli nakopnutí správným směrem, > > Matěj > > -- > https://matej.ceplovi.cz/blog/, Jabber: mcepl@ceplovi.cz > GPG Finger: 3C76 A027 CA45 AD70 98B5 BC1D 7920 5802 880B C9D8 > > Of course I'm respectable. I'm old. Politicians, ugly buildings, > and whores all get respectable if they last long enough. > --John Huston in "Chinatown." > _______________________________________________ > Python mailing list > python@py.cz > http://www.py.cz/mailman/listinfo/python > > Visit: http://www.py.cz
[toc] | [prev] | [next] | [standalone]
| From | Matěj Cepl <mcepl@cepl.eu> |
|---|---|
| Date | 2017-05-10 23:51 +0200 |
| Subject | Re: [python] alternativa textwrap.fill(), která by zarovnávala po česku? |
| Message-ID | <slrnoh72qm.kmr.mcepl@mitmanek.ceplovi.cz> |
| In reply to | #3173 |
On 2017-05-10, 21:02 GMT, Honza Král wrote:
> spravne by melo byt nahradit mezeru na predlozkami
> nezlomitelnymi mezerami
> (https://cs.wikipedia.org/wiki/Nezlomitelná_mezera) a tim
> padem by vse pak melo fungovat jak ma.
O nezlomitelných mezerách samozřejmě vím (vlna je můj oblíbený
program), ale bohužel textwrap.fill na to nereaguje.
https://mcepl.fedorapeople.org/tmp/kobylky.py
Matěj
--
https://matej.ceplovi.cz/blog/, Jabber: mcepl@ceplovi.cz
GPG Finger: 3C76 A027 CA45 AD70 98B5 BC1D 7920 5802 880B C9D8
Of course I'm respectable. I'm old. Politicians, ugly buildings,
and whores all get respectable if they last long enough.
--John Huston in "Chinatown."
[toc] | [prev] | [next] | [standalone]
| From | Vláďa Macek <macek@sandbox.cz> |
|---|---|
| Date | 2017-05-11 00:28 +0200 |
| Subject | Re: [python] alternativa textwrap.fill(), která by zarovnávala po česku? |
| Message-ID | <mailman.2.1494455290.22440.python@py.cz> |
| In reply to | #3174 |
On 10.5.2017 23:51, Matěj Cepl wrote: > On 2017-05-10, 21:02 GMT, Honza Král wrote: >> spravne by melo byt nahradit mezeru na predlozkami >> nezlomitelnymi mezerami >> (https://cs.wikipedia.org/wiki/Nezlomitelná_mezera) a tim >> padem by vse pak melo fungovat jak ma. > O nezlomitelných mezerách samozřejmě vím (vlna je můj oblíbený > program), ale bohužel textwrap.fill na to nereaguje. > > https://mcepl.fedorapeople.org/tmp/kobylky.py > > Matěj > Pitomy... :-) Chapu. Asi bych se zkusil nenamahat a vzal bych si vetsi kladivo. :-) print textwrap.fill(instr, width=65).replace(u'~', unichr(160)) Vim, ze je to prdly, ale dokud existuje bug https://bugs.python.org/issue20491, jde to snesitelny workaround, rekl bych. Neznam aplikaci, ale je to cele fakt potreba? Pokud nekdo cte text wrapovany na terminal, obvykle prezije nevhodne zalomeni jednopismennych slov... Nerejpu. V.
[toc] | [prev] | [next] | [standalone]
| From | Matěj Cepl <mcepl@cepl.eu> |
|---|---|
| Date | 2017-05-11 01:12 +0200 |
| Subject | Re: [python] alternativa textwrap.fill(), která by zarovnávala po česku? |
| Message-ID | <slrnoh77j5.db.mcepl@mitmanek.ceplovi.cz> |
| In reply to | #3175 |
On 2017-05-10, 22:28 GMT, Vláďa Macek wrote:
> print textwrap.fill(instr, width=65).replace(u'~',
> unichr(160))
No, udělal jsem v podstatě to:
diff --git a/reflow.py b/reflow.py
index 22b08cf..757077c 100644
--- a/reflow.py
+++ b/reflow.py
@@ -133,12 +133,18 @@ class ReflowPluginWindowActivatable(GObject.Object, Gedit.WindowActivatable):
if isinstance(text, str):
text = unicode(text, 'utf8')
+ # we don't want to break on the non-breaking space
+ # FIXME not sure whether there isn’t better replacement character
+ text = text.replace(unichr(0xA0), '~')
+
text = textwrap.fill(text,
width=self.get_gedit_margin(),
initial_indent=first_prefix,
subsequent_indent=prefix,
break_on_hyphens=False,
drop_whitespace=True)
+ text = text.replace('~', unichr(0xA0))
+
return text
def _get_line(self, index):
Ale nejsem na to hrdej. Navíc přemýšlím, jestli někdy nebudu
chtít mít ~ znak v textu. Ale snad ne.
Hezký den,
Matěj
--
https://matej.ceplovi.cz/blog/, Jabber: mcepl@ceplovi.cz
GPG Finger: 3C76 A027 CA45 AD70 98B5 BC1D 7920 5802 880B C9D8
Of course I'm respectable. I'm old. Politicians, ugly buildings,
and whores all get respectable if they last long enough.
--John Huston in "Chinatown."
[toc] | [prev] | [next] | [standalone]
| From | Petr Přikryl <prikryl@atlas.cz> |
|---|---|
| Date | 2017-05-11 09:31 +0200 |
| Subject | Re: [python] alternativa textwrap.fill(), která by zarovnávala po česku? |
| Message-ID | <mailman.3.1494487891.22440.python@py.cz> |
| In reply to | #3175 |
Modul textwrap je psaný v Pythonu a nemá to ani 300 řádků (i s rozsáhlými docstringy).
Přepište si to po svém, případně přidejte nějaký parametr typu "množina slov, která nemají zůstat na konci".
A pokud to bude šikovné, pošlete to jako námět na vylepšení oficiálního textwrap.
Přeji krásný den,
Petr
______________________________________________________________
> Od: Matěj Cepl <mcepl@cepl.eu>
> Komu: python@py.cz
> Datum: 11.05.2017 01:12
> Předmět: Re: [python] alternativa textwrap.fill(), kter
>
>On 2017-05-10, 22:28 GMT, Vláďa Macek wrote:
>> print textwrap.fill(instr, width=65).replace(u'~',
>> unichr(160))
>
>No, udělal jsem v podstatě to:
>
> diff --git a/reflow.py b/reflow.py
> index 22b08cf..757077c 100644
> --- a/reflow.py
> +++ b/reflow.py
> @@ -133,12 +133,18 @@ class ReflowPluginWindowActivatable(GObject.Object, Gedit.WindowActivatable):
> if isinstance(text, str):
> text = unicode(text, 'utf8')
>
> + # we don't want to break on the non-breaking space
> + # FIXME not sure whether there isn’t better replacement character
> + text = text.replace(unichr(0xA0), '~')
> +
> text = textwrap.fill(text,
> width=self.get_gedit_margin(),
> initial_indent=first_prefix,
> subsequent_indent=prefix,
> break_on_hyphens=False,
> drop_whitespace=True)
> + text = text.replace('~', unichr(0xA0))
> +
> return text
>
> def _get_line(self, index):
>
>Ale nejsem na to hrdej. Navíc přemýšlím, jestli někdy nebudu
>chtít mít ~ znak v textu. Ale snad ne.
>
>Hezký den,
>
>Matěj
>
>--
>https://matej.ceplovi.cz/blog/, Jabber: mcepl@ceplovi.cz
>GPG Finger: 3C76 A027 CA45 AD70 98B5 BC1D 7920 5802 880B C9D8
>
>Of course I'm respectable. I'm old. Politicians, ugly buildings,
>and whores all get respectable if they last long enough.
> --John Huston in "Chinatown."
>_______________________________________________
>Python mailing list
>python@py.cz
>http://www.py.cz/mailman/listinfo/python
>
>Visit: http://www.py.cz
>
>
[toc] | [prev] | [next] | [standalone]
| From | Matěj Cepl <mcepl@cepl.eu> |
|---|---|
| Date | 2017-05-11 10:50 +0200 |
| Subject | Re: [python] alternativa textwrap.fill(), která by zarovnávala po česku? |
| Message-ID | <slrnoh89fj.i9.mcepl@mitmanek.ceplovi.cz> |
| In reply to | #3177 |
On 2017-05-11, 07:31 GMT, Petr Přikryl wrote:
> Modul textwrap je psaný v Pythonu a nemá to ani 300 řádků (i
> s rozsáhlými docstringy).
> Přepište si to po svém, případně přidejte nějaký parametr typu
> "množina slov, která nemají zůstat na konci".
Upstream first!
https://fedoraproject.org/wiki/Staying_close_to_upstream_projects
Ale jinak mi připadne jednodušší udělat takovej nějakej hack,
který jsem udělal.
> A pokud to bude šikovné, pošlete to jako námět na vylepšení
> oficiálního textwrap.
To nemá cenu, http://bugs.python.org/issue20491 už existuje
a čeština není dost zajímavá, aby lezla do stdlib. To už bych
očekával, že spíše https://pypi.python.org/pypi/pytextseg/
(podpora pro CJK jazyky) by měl větší šanci.
Matěj
--
https://matej.ceplovi.cz/blog/, Jabber: mcepl@ceplovi.cz
GPG Finger: 3C76 A027 CA45 AD70 98B5 BC1D 7920 5802 880B C9D8
Of course I'm respectable. I'm old. Politicians, ugly buildings,
and whores all get respectable if they last long enough.
--John Huston in "Chinatown."
[toc] | [prev] | [next] | [standalone]
| From | Petr Viktorin <encukou@gmail.com> |
|---|---|
| Date | 2017-05-11 11:22 +0200 |
| Subject | Re: [python] alternativa textwrap.fill(), která by zarovnávala po česku? |
| Message-ID | <mailman.4.1494494574.22440.python@py.cz> |
| In reply to | #3178 |
On 05/11/2017 10:50 AM, Matěj Cepl wrote: > On 2017-05-11, 07:31 GMT, Petr Přikryl wrote: >> Modul textwrap je psaný v Pythonu a nemá to ani 300 řádků (i >> s rozsáhlými docstringy). >> Přepište si to po svém, případně přidejte nějaký parametr typu >> "množina slov, která nemají zůstat na konci". > > Upstream first! > > https://fedoraproject.org/wiki/Staying_close_to_upstream_projects > > Ale jinak mi připadne jednodušší udělat takovej nějakej hack, > který jsem udělal. > >> A pokud to bude šikovné, pošlete to jako námět na vylepšení >> oficiálního textwrap. > > To nemá cenu, http://bugs.python.org/issue20491 už existuje > a čeština není dost zajímavá, aby lezla do stdlib. To už bych > očekával, že spíše https://pypi.python.org/pypi/pytextseg/ > (podpora pro CJK jazyky) by měl větší šanci. Hlavně to nemá cenu proto, že v aktuálně vyvíjených verzích Pythonu je to opravené – do 2.7 už se podobné opravy nebackportují. Jinak jestli se obáváš, že vlnovku budeš v textu potřebovat, můžeš použít něco exotičtějšího, jako u'\x1a' (https://en.wikipedia.org/wiki/Substitute_character#)
[toc] | [prev] | [next] | [standalone]
| From | Matěj Cepl <mcepl@cepl.eu> |
|---|---|
| Date | 2017-05-11 16:31 +0200 |
| Subject | Re: [python] alternativa textwrap.fill(), která by zarovnávala po česku? |
| Message-ID | <slrnoh8tdb.u1.mcepl@mitmanek.ceplovi.cz> |
| In reply to | #3179 |
On 2017-05-11, 09:22 GMT, Petr Viktorin wrote:
> Jinak jestli se obáváš, že vlnovku budeš v textu potřebovat,
> můžeš použít něco exotičtějšího, jako u'\x1a'
> (https://en.wikipedia.org/wiki/Substitute_character#)
Good point. Díky.
Matěj
--
https://matej.ceplovi.cz/blog/, Jabber: mcepl@ceplovi.cz
GPG Finger: 3C76 A027 CA45 AD70 98B5 BC1D 7920 5802 880B C9D8
Of course I'm respectable. I'm old. Politicians, ugly buildings,
and whores all get respectable if they last long enough.
--John Huston in "Chinatown."
[toc] | [prev] | [standalone]
Back to top | Article view | cz.comp.lang.python
csiph-web