def output_format(self, output_type): fields = [ ] build_level = self._options.build or data.current_patch_level() # Figure out which output fields we should use for build in sorted(_OUTPUT_FORMATS.keys()): if build > build_level: break if not fields or (fields and _OUTPUT_FORMATS[build].get(output_type)): fields = _OUTPUT_FORMATS[build].get(output_type) return fields
def generate_json(self, output_type, ids = { }, columns = 1, comment = '', indent = 2): s = '' fields = self.output_format(output_type) json_data = [ ] if len(fields) == 1: data_fmt = r'%s, ' if comment != '': s += '// %s\n' % comment else: s += '// %s data, wow build %d, %d entries\n' % ( output_type, self._options.build or data.current_patch_level(), len(ids.keys())) s += 'var %s_data = ' % output_type.lower() for id in sorted(ids.keys()): json_data.append( self.generate_fields(fields, id, ids[id], True) ) return s + json.JSONEncoder().encode(json_data)
def generate_cpp(self, output_type, ids = { }, columns = 1, comment = '', indent = 2): s = '' fields = self.output_format(output_type) data_fmt = r'{ %s }, ' if len(fields) == 1: data_fmt = r'%s, ' if comment != '': s += '// %s\n' % comment else: s += '// %s data, wow build %d, %d entries\n' % ( output_type, self._options.build or data.current_patch_level(), len(ids.keys())) s += 'static struct %s_data_t %s_data[] = {\n' % ( output_type.lower(), output_type.lower() ) for id in sorted(ids.keys()): s += ' ' * indent for col in xrange(0, columns): s+= data_fmt % (', '.join(self.generate_fields(fields, id, ids[id]))) s += '\n' s += '};\n' return s