With the support of the FSF.hu Foundation, I have successfully implemented some long-planned LibreLogo improvements. This has made LibreLogo more reliable in LibreOffice, helping more and more people to discover the beauty of programming with LibreLogo, like German schoolchildren or Italian kindergarten teachers. My developments:
- Adding LibreOffice unit tests for LibreLogo program execution and compiling. Based on this automated testing, Red Hat developer Stephan Bergmann has already found an interesting regex change in Python 3.7 (LibreLogo was written in Python programming language), and he has fixed LibreLogo, too.
- Compiling Logo expressions to Python, i.e. adding parentheses at the right places uses a parser instead of the former heuristic method. Thus, you can write arbitrarily complex expressions, either in combination with Python lists, and calling own Logo functions with more than one argument without parentheses. Note: In LibreLogo expressions you can use Logo and Python syntaxes at one time. To avoid conflict, now parenthesis directly following the function name, eg. in “sin(x) * 2” denotes Python syntax, (meaning 2·sin(x)), while the space separated version, eg. “sin (x) * 2”, denotes Logo syntax (meaning “sin(2·x)”, as the simpler Logo expression “sin x * 2”).
- Function definitions and Logo-like function calls can be in any order, resulting for example completely Logo-like dragon curve drawing Logo program (see on the attached screenshot).
- Fix of the “magic wand” icon enables a two-sided view, keeping also the debug function “jump text cursor to the wrong LibreLogo program line at compiling”.
- We can write ASCII and typographical apostrophes in character strings.
- The running program stops immediately by clicking the Cancel button on the dialog window of the commands INPUT and PRINT (no need to wait starting a new loop in cycles).
- One of the goals of the planned future LibreLogo developments is to provide a more detailed documentation of LibreLogo’s Python source code. As you can see, I have already tried to do this in the current patches.
These developments will appear soon in the next preliminary version of LibreOffice 6.2.