brysj22952 avatar

PyH源码解析(6)——完结篇

brysj22952

Published: 12 Aug 2018 › Updated: 12 Aug 2018

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。

Leave PyH源码解析(6)——完结篇 to:

Written by

Read more #cn posts


Best Posts From brysj22952

We have not curated any of brysj22952's posts yet. But you can encourage our curation team to review posts by visiting them regularly and by referring other readers. Because we give priority to frequently read content.

More Posts From brysj22952