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)