PyH源码解析(6)——完结篇
这一篇是精华,基本上不用阅读之前的5篇,只看这一篇就足够了。
Tag对象
PyH的核心就是Tag对象,Tag对象属性有:
- str tagname:这个就是tag对象的tag名字。比如
<div>
对象,其名字就div。但是有一些Tag对象没有名字,当然真实的HTML是没有的,在实现代码中,没有Tag名字的对象表示它是一个容器对象,存放的是子Tag的序列,表示若干兄弟Tag的列表。 - bool isSeq:这个就是表示在tagname中提到的容器对象,也就是tagname为空的对象,它存放的Tag的序列。
- str id:表示Tag对象的索引id。特别注意的是,它不同于Tag元素的id属性。如果有ID属性,则它的值就是ID属性,如果没ID属性,它的值为Tag的名字,如果有多个相同的id,则在其后增加001等类似的序列区分。
-dict attr:这是属性字典,存放的是Tag对象的属性,key为属性名称,value是内容。需要注意的是class名称替换为cl表示。
-list self:Tag对象继承自list,list中存放的是它包括的内容和子Tag对象。
Tag对象的方法:
- bool IsSelfClose():有些Tag对象是没有内容的,比如
img xxxx
,这个属性就是表示这个的,它在生成HTML字符串时与普通的Tag是不同的。 - str render():返回Tag对象表示的html字符串。
- Tag add(Tag obj):
+
操作符重载,表示两个兄弟Tag对象,返回的是一个容器对象。 - Tag iadd(Tag obj):
+=
操作符重载,表示给当前Tag对象增加内容或者子Tag对象,如果obj为容器对象,则会展开分别作为子Tag加入。 - Tag lshift(Tag obj):
<<
操作符重载,同+=
类似,只是返回的是obj对象,以便<<
可以多个连接起来。 - str str():表示Tag对象的字符串表达形式。
PyH对象
PyH用于生成整个HTML对象,它继承自Tag对象,只不过增加了一些便捷的操作。如下:
- iadd():当向PyH对象添加内容或者子Tag时,相当于给其Body对象增加。
- addJS():增加JS脚本。
- addCSS():增加CSS。