15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# Copyright (c) 2012 The Chromium Authors. All rights reserved. 25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# Use of this source code is governed by a BSD-style license that can be 35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# found in the LICENSE file. 45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)import collections 65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 7a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)import easy_template 8c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)def CmpByName(x, y): 105c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu return cmp(x['NAME'], y['NAME']) 112a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 125c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liuclass LandingPage(object): 130529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch def __init__(self): 14c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) self.section_list = ['Getting Started', 'API', 'Demo', 'Tutorial'] 152a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) self.section_map = collections.defaultdict(list) 16c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 17c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) def GeneratePage(self, template_path): 18a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) with open(template_path) as template_file: 19a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) template = template_file.read() 20a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) 215c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu sec_map = {} 225c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu for section_name in self.section_map: 230529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch items = self.section_map[section_name] 24a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) items = sorted(items, cmp=CmpByName) 252a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) sec_map[section_name] = items 265c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu 275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) template_dict = { 'section_map': sec_map } 285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return easy_template.RunTemplateString(template, template_dict) 295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 305c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu def AddDesc(self, desc): 3190dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) group = desc['GROUP'] 325c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu assert group in self.section_list 335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) self.section_map[group].append(desc) 345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)