- Python 81.6%
- Modula-3 17%
- Shell 1.4%
| __pycache__ | version 0.1 | |
| overlays | version 0.1 | |
| tests | removed usage of outdated feature '<-' in test2 | |
| config.json | 'final' helppage fix | |
| help.txt | help | |
| iguanautils.py | version 0.1 | |
| install.sh | 'final' helppage fix | |
| LICENSE | init | |
| logo-simple.png | logos | |
| logo.png | logos | |
| main.py | version 0.1 | |
| README.md | more readme minor stuff uwu | |
Iguana Logo GNU GPLv3 or later
Iguana - Enhanced Reptile Language
A python overlay manager to increase coding elegance. This is NOT a programming language. It also adds a couple of aesthetic featues.
ERP doesn't mean anything else >:(
Table of contents
Installation
- Requires python 3.8 or highier
- Run
sudo ./install.shthat will create the proper file in /usr/bin - You're all done!
Usage
- To run a script, type
iguana <file.ig> [flags] - If you run it without any input file, it will boot an interactive shell
- Run
iguana -hfor further information
How to code in Iguana
This language is fully python compatible. This means that you can run python scripts with ERP However, it has some more features of its own.
Syntax
It's generally the python one, except:
Overlays
The main feature of Iguana, being a python "enhancer", is to add stuff, such stuff is referred to as "overlay".
An overlay is a function which takes in input the full code (plus params) and outputs it with some sort of modification. In /overlays you can see a bunch of examples.
Ideally, users would create overlays when they need them, then share them to be included in the default "library".
To apply an overlay, use overlay filename, the order in which you call overlays is the one they'll be applied.
Overlay are not to be thought as fancier modules, but as a developing tool that will hopefully save you some time.
Pipes
functions can be chained with bash stile pipe (|)
examples:
"Hello, world!" | print
sum(my_list) | factorial | print
This tries to remove situations like
display(wrapper(get_account_details(safe_input("Username:")), **params))
However, usage as arguments or in statements like assignation and flow control won't work:
print("my string" | some_function) # NO!
my_var = input("number: ") | int # NO!
if my_thing | some_function: ... # NO!
in those situations, you can use this other pipe (::), which will tho disallow spaces outside strings/function arguments:
my_var = input("number: ")::int
if my_thing::some_function
# but
sum (my_list):: whatever # NO!
# ^ ^
# illegal spaces
Why you ask? I'm too lazy to elegantly solve this, if you care do it and push, I'll happily merge UwU.
Contributing
Feel free to share suggestions or implement and push them yourself! I'll happily merge stuff, although I can't guarantee immediate response.
Also, the code is poorly commented, so docs in form of comments and/or wiki pages are very appricieted