note:sun_jun_22_2025

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
note:sun_jun_22_2025 [2025/06/22 02:37] lingaonote:sun_jun_22_2025 [2025/06/22 14:52] (current) lingao
Line 3: Line 3:
   * :!: https://yorickpeterse.com/articles/how-to-write-a-code-formatter/    * :!: https://yorickpeterse.com/articles/how-to-write-a-code-formatter/ 
   * https://www.ntietz.com/blog/writing-basic-code-formatter/    * https://www.ntietz.com/blog/writing-basic-code-formatter/ 
 +  * :!: https://journal.stuffwithstuff.com/2015/09/08/the-hardest-program-ive-ever-written/
  
 ===== How to write a code formatter ===== ===== How to write a code formatter =====
Line 9: Line 10:
  
 prettier is based on [[https://homepages.inf.ed.ac.uk/wadler/papers/prettier/prettier.pdf|this paper]] prettier is based on [[https://homepages.inf.ed.ac.uk/wadler/papers/prettier/prettier.pdf|this paper]]
 +
 +===== code gen =====
 +
 +<code ts>
 +type LowcodeInterface = {
 +  identifier: string;
 +  fields: { name: string, type: string, comment?: string }[];
 +  comment?: string;
 +}
 +
 +function printField(field: { name: string, type: string, comment?: string }) {
 +  return (field.comment ? '  /* ' + field.comment + ' */' + "\n" : "")
 +          + "  " + field.name + ": " + field.type;
 +}
 +
 +function printInterface(lowcodeInterface: LowcodeInterface) {
 +  return (lowcodeInterface.comment ? '/* ' + lowcodeInterface.comment + " */\n" : "")
 +          + "interface " + lowcodeInterface.identifier + " {\n"
 +          + lowcodeInterface.fields.map(printField).join('\n'
 +          + "\n}";
 +}
 +
 +export { printInterface };  
 +</code>
 +
  • note/sun_jun_22_2025.1750559845.txt.gz
  • Last modified: 2025/06/22 02:37
  • by lingao