<%! import re #it's just about time to break out module and 'object' templates def propertyAssign(typestr): return ':' if typestr=='module' else '=' def propertyTerm(typestr): return ',' if typestr == 'module' else ';' def propertyWrap(typestr): return "'" if typestr=='module' else '' def objectPrefix(typestr): return '' if typestr=='module' else 'this.' %>\ <%def name="moduleName()">\ ${''.join(map(lambda w: '[\''+w+'\']' if re.match('^\d',w) else '.'+w if data.namespace.split('.')[0]!=w else w, data.namespace.split('.')))}\ \ %if data.namespace == 'Titanium': var Ti,Titanium; Ti = \ %endif ${moduleName()} = \ %if data.typestr == 'object': function() { %else: { %endif %for p in data.properties: ${objectPrefix(data.typestr)}${propertyWrap(data.typestr)}${''.join(map(lambda w: w.capitalize() if w in p['name'].split('-')[1:] else w,p['name'].split('-')))}${propertyWrap(data.typestr)} ${propertyAssign(data.typestr)} \ %if p['name'] == 'currentWindow': # hack to make the vsdoc not die. Ti.UI.Window is defined later on. {} %else: ${data.vsdoc_return_type(data.remove_html_tags(p['type']))}\ %endif %if (p['name'] != data.properties[-1]['name'] or (len(data.events) != 0 or len(data.methods)!=0)): ${propertyTerm(data.typestr)} %elif data.typestr == 'object': ; %else: %endif %endfor %if len(data.events)>0: ${objectPrefix(data.typestr)}events ${propertyAssign(data.typestr)} {\ %for e in data.events: '${e['name']}':''\ %if e['name'] != data.events[-1]['name']: ,\ %endif %endfor }\ %if len(data.methods)!=0: ${propertyTerm(data.typestr)} %endif %endif %for m in data.methods: <%include file="method.vsdoc.html" args="m=m,d=data"/>\ %if m['name'] != data.methods[-1]['name']: ${propertyTerm(data.typestr)} %elif data.typestr == 'object': ; %else: %endif %endfor %if data.typestr == 'object': %endif }; %if data.typestr == 'module': ${moduleName()}.__namespace = true; %elif data.typestr == 'object': ${moduleName()}.__class = true; %endif