
    Uj                         d Z ddlmZ  ee      j                  Zej                  dz  dz  dz  Zg dZdedefd	Z	d
 Z
d Zd Zedk(  r e        yy)u  
book.h 生成器：把 inkboat/*.txt 变成固件用的 C 数组（多书架构）
================================================================
txt 格式（与模拟器共享同一份源文件）：
  '# ' 开头 = 章节标题行；其余非空行 = 正文
输出：lesson07/Lesson07_InkBoat/book.h
  BOOKS 数量 / BOOK_NAMES[] / 每书章数组 / 二级指针索引
正文 UTF-8 中文字符串直接 const char* 存 flash（道德经 7KB + 心经 1KB）。

用法：.venv/Scripts/python.exe inkboat/make_book.py
    )Pathlesson07Lesson07_InkBoatzbook.h))zdaodejing.txtu	   道德经)zxinjing.txtu   心经)z	lunyu.txtu   论语)zzhuangzi.txtu   庄子sreturnc                 r    d| j                  dd      j                  dd      j                  dd      z   dz   S )N"\z\\z\"
z\n)replace)r   s    B   S:\AI2\zwp1\日常工作z1\墨水屏开发板\inkboat\make_book.pyc_strr      s8    4(00e<DDT5QQTWWW    c                 l   g d g }}}| j                  d      j                         D ]l  }|j                  d      r&||j                  |t	        |      f       |dd  g }}:|j                         sK|N|j                  |j                                n ||j                  |t	        |      f       |S )Nutf-8encodingz#    )	read_text
splitlines
startswithappend	body_joinstrip)pathchapterstitlebodylines        r   
parse_bookr       s    bTeH0;;= &??4  	$ 89qr(B4EZZ\e/KK

%& 	$01Or   c                 2    dj                  d | D              S )u]   每段：两格全角缩进起头；段间用 '
' 分隔（2026-08-26：段间空行排版）r   c              3   &   K   | ]	  }d |z     yw)u   　　N ).0segs     r   	<genexpr>zbody_join.<locals>.<genexpr>+   s     :c^c):s   )join)r   s    r   r   r   )   s    99:T:::r   c            
      j   dddddt        t               dg} g d}}t        t              D ]r  \  }\  }}t        t        |z        }|s
J | d       |j                  d      d   j                         }| j                  d	| d
t        |       d       | j                  d| dt        |       d       | |D 	cg c]  \  }}	dt        |       d c}	}z  } | j                  d       | j                  d| dt        |       d       | |D 	cg c]  \  }	}dt        |       d c}}	z  } | j                  d       | j                  d| dt        |       d       | j                  d       |j                  ||f       |t        d |D              z  }u | j                  d       | |D 
	cg c]  \  }
}	dt        |
       d c}	}
z  } | j                  d       | j                  d       | |D 	cg c]  \  }	}d| d c}}	z  } | j                  d       | j                  d       | |D 	cg c]  \  }	}d| d c}}	z  } | j                  d       | j                  d       | |D 	cg c]  \  }	}d| d c}}	z  } | j                  d       t        j                  j                  dd       t        j                  d j                  |       d!"       t        d#t         dt        t               d$| d%       y c c}	}w c c}}	w c c}	}
w c c}}	w c c}}	w c c}}	w )&Nu@   // 本文件由 inkboat/make_book.py 自动生成，手改无效u6   // 正文 UTF-8（汉字 3 字节），直接存 flashz#pragma once z#define BOOKS r   u    里没解析到章节.u   // —— 《u   》 u    章 ——zconst char *const z_TITLES[z] = {z  ,z};z_TEXTS[zconst uint8_t z_CHS = ;c              3   8   K   | ]  \  }}t        |        y w)N)len)r$   _ts      r   r&   zmain.<locals>.<genexpr>B   s     5DAqQ5s   z'const char *const BOOK_NAMES[BOOKS] = {z!const uint8_t BOOK_CHS[BOOKS] = {z_CHS,z)const char *const *BOOK_TITLES[BOOKS] = {z_TITLES,z(const char *const *BOOK_TEXTS[BOOKS] = {z_TEXTS,T)parentsexist_okr   r   r   z[OK] u    本书，正文共 u    字（含标点）)r.   
BOOK_FILES	enumerater    SRC_DIRsplitupperr   r   sumDESTparentmkdir
write_textr'   print)outnames	total_allbifnamedispr   symr0   r/   nr   s               r   mainrF   .   s   MC2C
O,-r3C 19E&z2 6MUDgo.9E7"899xkk#q!'')

]4&S]O;GH

'uHS]O6JKX6TQ"U1XJa 66

4

'uGCM?&IJX6TQ"U1XJa 66

4

^C5Ha@A

2dC[!S5H555	6  JJ89/Abq
!//CJJtJJ23e,dab5M,,CJJtJJ:;/Ab8//CJJtJJ9:.1b7O..CJJtKKdT2OODIIcNWO5	E$r#j/**>ykI\
]^3 7 7 0 - 0 /s$   >L
L
9L L#>L)<L/__main__N)__doc__pathlibr   __file__r:   r5   r9   r3   strr   r    r   rF   __name__r#   r   r   <module>rM      sz   
 
x.

~~
"%77(BC
XS XS X
;
%_P zF r   