Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > cz.comp.lang.python > #3172 > unrolled thread

alternativa textwrap.fill(), která by zarovnávala po česku?

Started byMatěj Cepl <mcepl@cepl.eu>
First post2017-05-10 21:35 +0200
Last post2017-05-11 16:31 +0200
Articles 9 — 5 participants

Back to article view | Back to cz.comp.lang.python


Contents

  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

#3172 — alternativa textwrap.fill(), která by zarovnávala po česku?

FromMatěj Cepl <mcepl@cepl.eu>
Date2017-05-10 21:35 +0200
Subjectalternativa 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]


#3173 — Re: [python] alternativa textwrap.fill(), která by zarovnávala po česku?

FromHonza Král <honza.kral@gmail.com>
Date2017-05-10 23:02 +0200
SubjectRe: [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]


#3174 — Re: [python] alternativa textwrap.fill(), která by zarovnávala po česku?

FromMatěj Cepl <mcepl@cepl.eu>
Date2017-05-10 23:51 +0200
SubjectRe: [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]


#3175 — Re: [python] alternativa textwrap.fill(), která by zarovnávala po česku?

FromVláďa Macek <macek@sandbox.cz>
Date2017-05-11 00:28 +0200
SubjectRe: [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]


#3176 — Re: [python] alternativa textwrap.fill(), která by zarovnávala po česku?

FromMatěj Cepl <mcepl@cepl.eu>
Date2017-05-11 01:12 +0200
SubjectRe: [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]


#3177 — Re: [python] alternativa textwrap.fill(), která by zarovnávala po česku?

FromPetr Přikryl <prikryl@atlas.cz>
Date2017-05-11 09:31 +0200
SubjectRe: [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]


#3178 — Re: [python] alternativa textwrap.fill(), která by zarovnávala po česku?

FromMatěj Cepl <mcepl@cepl.eu>
Date2017-05-11 10:50 +0200
SubjectRe: [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]


#3179 — Re: [python] alternativa textwrap.fill(), která by zarovnávala po česku?

FromPetr Viktorin <encukou@gmail.com>
Date2017-05-11 11:22 +0200
SubjectRe: [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]


#3180 — Re: [python] alternativa textwrap.fill(), která by zarovnávala po česku?

FromMatěj Cepl <mcepl@cepl.eu>
Date2017-05-11 16:31 +0200
SubjectRe: [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