atomo / examples / rectangle.atomo

The default branch has multiple heads

Rectangle = Object clone

Rectangle new :=
  Rectangle clone do:
    { rows = 0
      cols = 0
      filled? = False
    }

(r: Rectangle) as: String :=
  if: r filled?
    then: {
      '#' (repeat: r cols)
          (replicate: r rows)
          (join: "\n")
    }
    else: {
      filled := '#' (repeat: r cols)
      empty := '#' . (' ' repeat: (r cols - 2)) .. "#"

      ([filled] .. (empty replicate: (r rows - 2)) .. [filled])
        join: "\n"
    }

"42 x 4, empty" print
Rectangle new (do: { rows = 4; cols = 42 }) print

"" print

"20 x 10, filled" print
Rectangle new (do: { rows = 10; cols = 20; filled? = True}) print
Tip: Filter by directory path e.g. /media app.js to search for public/media/app.js.
Tip: Use camelCasing e.g. ProjME to search for ProjectModifiedEvent.java.
Tip: Filter by extension type e.g. /repo .js to search for all .js files in the /repo directory.
Tip: Separate your search with spaces e.g. /ssh pom.xml to search for src/ssh/pom.xml.
Tip: Use ↑ and ↓ arrow keys to navigate and return to view the file.
Tip: You can also navigate files with Ctrl+j (next) and Ctrl+k (previous) and view the file with Ctrl+o.
Tip: You can also navigate files with Alt+j (next) and Alt+k (previous) and view the file with Alt+o.