generate-enums-docbook.py 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. #!/usr/bin/env python3
  2. import sys
  3. DOC_HEADER = '''<?xml version='1.0'?>
  4. <?xml-stylesheet type="text/xsl" href="http://docbook.sourceforge.net/release/xsl/current/xhtml/docbook.xsl"?>
  5. <!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN" "http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd">
  6. <refentry id="{0}">
  7. <refmeta>
  8. <refentrytitle role="top_of_page" id="{0}.top_of_page">{0}</refentrytitle>
  9. <refmiscinfo>{0}</refmiscinfo>
  10. </refmeta>
  11. <refnamediv>
  12. <refname>{0}</refname>
  13. <refpurpose></refpurpose>
  14. </refnamediv>
  15. <refsect2 id="{1}" role="enum">
  16. <title>enum {1}</title>
  17. <indexterm zone="{1}">
  18. <primary>{1}</primary>
  19. </indexterm>
  20. <para><link linkend="{1}">{1}</link></para>
  21. <refsect3 role="enum_members">
  22. <title>Values</title>
  23. <informaltable role="enum_members_table" pgwide="1" frame="none">
  24. <tgroup cols="4">
  25. <colspec colname="enum_members_name" colwidth="300px" />
  26. <colspec colname="enum_members_value" colwidth="100px"/>
  27. <colspec colname="enum_members_description" />
  28. <tbody>
  29. '''
  30. DOC_ENUM = ''' <row role="constant">
  31. <entry role="enum_member_name"><para>{0}</para><para></para></entry>
  32. <entry role="enum_member_value"><para>= <literal>{1}</literal></para><para></para></entry>
  33. <entry role="enum_member_description"></entry>
  34. </row>'''
  35. DOC_FOOTER = '''
  36. </tbody>
  37. </tgroup>
  38. </informaltable>
  39. </refsect3>
  40. </refsect2>
  41. </refentry>
  42. '''
  43. if __name__ == '__main__':
  44. if len(sys.argv) >= 4:
  45. with open(sys.argv[1], 'w') as doc_out:
  46. enum_name = sys.argv[2]
  47. enum_type = sys.argv[3]
  48. doc_out.write(DOC_HEADER.format(enum_name, enum_type))
  49. for i, enum in enumerate(sys.argv[4:]):
  50. doc_out.write(DOC_ENUM.format(enum, i))
  51. doc_out.write(DOC_FOOTER)
  52. else:
  53. print('Use: ' + sys.argv[0] + ' out name type [enums]')
  54. sys.exit(0)