Mercurial > repos > other > SevenLanguagesInSevenWeeks
view 2-Io/day2-reflection.io @ 93:39084e2b8744
Add a function for word-aware text wrapping
Potentially hugely inefficient because we iterate through the
string character by character, but then splitting it first and
iterating over words still needs to iterate over the string to
know where to split.
author | IBBoard <dev@ibboard.co.uk> |
---|---|
date | Tue, 18 Jun 2019 21:05:00 +0100 |
parents | e8407d4e72dd |
children |
line wrap: on
line source
# Reflection in Io is about working out what goes on in slots # We're now going to create an "ancestors" method that we needed # on day 1 to find all slots! Object ancestors := method( # Store our prototype prototype := self proto # If we're not at the top if (prototype != Object, # Then print the type name as a header writeln("Slots of ", prototype type,"\n--------------------") # And iterate the slots with foreach() before printing with writeln() # TODO: Find the difference between println and writeln, other than "message vs function" prototype slotNames foreach(slotName, writeln(slotName)) # Blank line writeln # Recurse! prototype ancestors ) ) Animal := Object clone Animal speak := method("*ambiguous animal noise" println) Duck := Animal clone Duck speak := method("Quack-quack!" println) Duck walk := method("waddle" println) donald := Duck clone donald ancestors