Sublime Forum

Show_popup shows "Parse Error" with content from man page

#1

Hello, I am writing simple plugin to show content of man page.
I can print the output to console, but it will be cut when showing in popup (via show_popup) and an error message was displayed in console.

Error message:

Parse Error: $array)

DESCRIPTION
       end(3)  advances  $array´s  internal  pointer  to the last element, and
       returns its value.

PARAMETERS
              · $array
                - The array. This array is passed by reference because  it  is
                modified  by  the function. This means you must pass it a real
                variable and not a function returning an  array  because  only
                actual variables may be passed by reference.

RETURN VALUES
        Returns the value of the last element or FALSE for empty array.

EXAMPLES
       Example #1

              end(3) example

              <?php

              $fruits = array('apple', 'banana', 'cranberry');
              echo end($fruits); // cranberry

              ?>

SEE ALSO
       current(3), each(3), prev(3), reset(3), next(3).

PHP Documentation Group                                                 END(3)
 code: Unexpected character
Parse Error: )

DESCRIPTION
       end(3)  advances  $array´s  internal  pointer  to the last element, and
       returns its value.

PARAMETERS
              · $array
                - The array. This array is passed by reference because  it  is
                modified  by  the function. This means you must pass it a real
                variable and not a function returning an  array  because  only
                actual variables may be passed by reference.

RETURN VALUES
        Returns the value of the last element or FALSE for empty array.

EXAMPLES
       Example #1

              end(3) example

              <?php

              $fruits = array('apple', 'banana', 'cranberry');
              echo end($fruits); // cranberry

              ?>

SEE ALSO
       current(3), each(3), prev(3), reset(3), next(3).

PHP Documentation Group                                                 END(3)
 code: Unexpected character
Parse Error: $array)
 code: Unknown entity
Parse Error: ?php

              $fruits = array('apple', 'banana', 'cranberry');
              echo end($fruits); // cranberry

              ?>

SEE ALSO
       current(3), each(3), prev(3), reset(3), next(3).

PHP Documentation Group                                                 END(3)
 code: Unexpected character

Code:

doc = subprocess.check_output(['pman', 'end']).decode()
view.show_popup(doc, max_width = 600)

Original output of command:

pman end

END(3)                                      1                                      END(3)

end - Set the internal pointer of an array to its last element

SYNOPSIS
       mixed end (array  &$array)

DESCRIPTION
       end(3)  advances  $array´s  internal  pointer to the last element, and returns its
       value.

PARAMETERS
              · $array
                - The array. This array is passed by reference because it is modified  by
                the function. This means you must pass it a real variable and not a func‐
                tion returning an array because only actual variables may  be  passed  by
                reference.

RETURN VALUES
        Returns the value of the last element or FALSE for empty array.

EXAMPLES
       Example #1

              end(3) example

              <?php

              $fruits = array('apple', 'banana', 'cranberry');
              echo end($fruits); // cranberry

              ?>

SEE ALSO
       current(3), each(3), prev(3), reset(3), next(3).

PHP Documentation Group                                                            END(3)

I am using Build 3126, Ubuntu. Thanks

0 Likes

#2

have you considered escaping the angle brackets (i.e. in <?php) so that it is valid HTML?

maybe like doc.replace('<', '&lt;').replace('>', '&gt;') or using the Python html lib

2 Likes

#3

If you use the html lib you should call it with the arguments doc = html.escape(doc, quote=False)

2 Likes

#4

Thank you, I forget validating HTML.

There is also an error: Parse Error: $array) at line mixed end (array &$array), that make me notice the & character.

So using html lib will work. Thank @r-stein

doc = html.escape(doc, quote=False)
0 Likes