GSoC/GCI Archive
Google Code-in 2012 Copyleft Games Group

PySoy: Color Names Dict

completed by: Nikolay Lazarov

mentors: Amaury Medeiros, Arc Riley, Tony Young, David Czech, Mayank Singh

Color objects can be created using standard web color names (and a few more) from Genie dictionaries embedded in libsoy's source code. If you know the name of a color you want you can use it like this:

>>> import soy >>> soy.atoms.Color('firebrick').hex '#b22222ff'

There is currently no way to get a list of supported colors nor add new colors a game developer may want to use repeatedly. This problem can be solved by exposing the internal dict used to store these colors to Python.

Write a new PySoy class soy._GeeMap which implements the Python Mapping Protocol such that it acts similar to a Python Dict. Keys for this should always be strings, Python value type should be passable with a constructor argument and must be a subclass of soy._G (ie, a PySoy Type).

There are examples of this already including soy.scenes.Scene, though this will be more generic for re-use. Mentor will provide a good deal of guidance on this. A good deal of this new class can and should be copied from existing working code.

Once done, add a Color.names read-only property which returns an instance of soy._GeeMap wrapping the color name dict. This dict should then be usable to add, remove, and modify colors in it.

While working on this task you should join and remain in #PySoy on Freenode to get help, feedback, and guidance from mentors and other developers. Code updates which may affect your work are also announced here as they happen.

As you complete each piece of this task (the code compiles), commit your work and post the resulting changeset url to this task. Remember to hg pull -u often and before every commit to minimize change conflicts.