Re: Multi-line classifiers in definition lists

Antony Lee <[email protected]> Thu, 6 Feb 2020 18:30:50 +0100
Newsgroups gmane.text.docutils.user
Message-ID <CAGRr6BG0msjtCgT1SMifKuaKR=PQACweCu799oOTgqXJqr15og@mail.gmail.com>
Thanks for providing a nice list of test cases; I'll work on them.
Antony

On Fri, Feb 7, 2020 at 1:41 PM Guenter Milde via Docutils-users <
[email protected]> wrote:

> On 2019-12-11, Antony Lee wrote:
>
> > Hi,
> > Sorry re-raising an old thread, but I had a quick revisit at this
> again...
> > As a reminder, this was about adding backslash-escaped line
> continuations,
> > so that one could write
>
> > term : info more info \
>
> >        and more info
>
> >     the definition
>
>
> > the idea being that numpydoc docstrings (by far the most widely used
> > docstring convention in the scientific python ecosystem) would benefit
> from
> > it.
>
> I like the idea but want it to be general: also long section headings,
> say, may benefit from this.
>
> > As it turns out the patch to achieve this is relatively simple:
>
> > diff --git i/docutils/docutils/statemachine.py
> > w/docutils/docutils/statemachine.py
> > index ec5351887..70aa9baea 100644
> > --- i/docutils/docutils/statemachine.py
> > +++ w/docutils/docutils/statemachine.py
> > @@ -311,6 +311,13 @@ class StateMachine(object):
> >             except IndexError:
> >                 self.line = None
> >                 raise EOFError
> > +            while self.line.endswith("\\"):
> > +                try:
> > +                    self.line_offset += 1
> > +                    self.line +=
> > self.input_lines[self.line_offset].lstrip()
> > +                except IndexError:
> > +                    self.line = None
> > +                    raise EOFError
> >             return self.line
> >         finally:
> >             self.notify_observers()
>
>
> > i.e. joining the backslash-escaped lines relatively early in the process.
>
> Unfortunately, this breaks our test suite and shows nasty side-effects in a
> small dedicated test file.
>
> > Please let me know the best way to proceed forward.
>
> We would need to sort out the problems and side-effects,
> test properly,
> document,
> and then implement it in the development version.
>
> Thanks for the proposal and remainder,
>
> Günter
>
>
> Test backslash escaping of line ends
> ------------------------------------
>
> There are side effects, the test suite fails.
>
> Lets have a closer look:
>
> Section headings
> ----------------
>
> Breaking long section headings fails:
>
> long and broken section heading\
> !
> -----------------------------------
>
> long section heading with broken underline
> -------------------------------\
> -------------------
>
>
> Paragraphs
> ----------
>
> This is a paragraph. \
> It's quite short.
>
> The text of all lines should be there,
> even if a line end is
> escaped with a backslash \
> somewhere in the middle.
>
> The second line of this paragraph
> contains an escaped line break \
> and is missing in the output!!
>
> Lists
> -----
>
> definition lists
> ````````````````
>
> using a backslash \
> escape
>     you can break the definition line
>
> escaping line ends: works in the \
>                  additional explanations
>     too.
>
> definition term
>    and definition with backslash \
>    escape. Again a line missing!!
>
> field lists
> ```````````
>
> :the field \
>  name:
>    and the content
>
> :a long and broken \
>  field name: start of content missing if placed on same line!!
>
> :field name: and broken \
>    content
>
> literal text
> --------------
>
> An example::
>
>       Whitespace, newlines, blank lines,
>         and all kinds of markup \
>       must be  preserved by literal blocks.
>
> Also ``inline \
> literals`` must keep the backslash and the escaped character!
>
>
>
> _______________________________________________
> Docutils-users mailing list
> [email protected]
> https://lists.sourceforge.net/lists/listinfo/docutils-users
>
> Please use "Reply All" to reply to the list.
>