use navigation.frink println[""" /** This class contains polygons for the outlines of all the countries in the world. For examples of using this to draw maps of the world, see the programs drawDymaxion.frink and drawCountries.frink. */ class Country { // The two-letter ISO code for the country var ISO2 // The name of the country var name // A list of vertices of polygons for the country. var borders // A dictionary of Country objects. The key is the two-letter ISO code, // and the value is a Country object. class var countryList = new dict class addCountry[code, cname, borderlist] := { c = new Country[code, cname, borderlist] countryList@code = c return c } new[code, cname, borderlist] := { ISO2 = code name = cname borders = borderlist } // This method can be used to get a dictionary containing all countries. // see documentation for the countryList variable above. class getCountryList[] := countryList """] for line = lines["file:countries.js"] if [code, name, borders] = line =~ %r/{code:"(\w+?)",\s*name:"(.*?)",\s*borders:(.*?)}/ { // Sort polygons by size borders = eval[borders] sort[borders, {|a,b| earthArea[a] <=> earthArea[b]}] tBorders = toString[borders] =~ %s/\s+//g // Remove spaces println[" class var $code = Country.addCountry[\"$code\", \"$name\", $tBorders]"] } println[""" } """]