Skip to content

Latest commit

 

History

History
432 lines (239 loc) · 12.9 KB

CHANGELOG.md

File metadata and controls

432 lines (239 loc) · 12.9 KB

Changelog

0.2.1 版本后各个接口方法已经基本趋于稳定,后面将不会做大的调整。

[1.0.2] - 2024-10-27

新增

  • 增加元素的 get_attributes 方法,获取元素上的所有属性集合,感谢 @stuarth 提交的 PR #23

[1.0.1] - 2024-04-18

新增

  • 增加元素集合的 clone 方法,实现完全节点拷贝 Issue #21

[1.0.0] - 2023-09-11

变更

  • 修改 destroytypo 错误。

[0.5.8] - 2022-11-23

修复

  • 升级 rphtml,修复标签带引号属性值中包含结束标签字符 > 会被错误解析的问题。

[0.5.7] - 2022-11-10

变更

  • regex1.4.3 升级到 1.7.0 版本。

  • 元素的 .text() 及文档 .source_code() .title() 方法将直接返回 String 代替 Box::leak 获取到 &'static str,错误理解了该方法,导致忽略了其将引起内存泄漏。

[0.5.6] - 2022-09-29

增加

  • 增加 htmls()outer_htmls() 方法,相比于 html()outer_html() 仅获取第一个元素、此两方法获取所有元素的 html

[0.5.5] - 2022-08-23

增加

  • 增加 texts_by_rec 方法,获取文本节点时可以通过第三个参数来控制哪些节点是可以继续递归遍历的。

修改

  • 升级rphtml使得text方法能正常运用在注释节点上。

[0.5.4] - 2022-08-02

修复

  • 修复 insert_before before insert_after after 等相邻节点操作、错误过滤了<img />等不能插入子节点的空标签、导致无法正确插入节点的问题。

增加

  • 增加 replace_with 操作,方便快速替换节点。

[0.5.3] - 2022-07-31

修复

  • 修复 :contains 选择器包含中文字符、因为在正则匹配中没有使用 chars 长度引起 panic 的问题。

[0.5.2] - 2022-04-26

增加

  • 增加 :has 伪类选择器,以配合 :not 伪类能组成 :not(:has(p)) 等实现 has 反选逻辑。

[0.5.1] - 2022-02-22

修改

  • 修改 load(html: &str) -> load<'html>(html: impl Into<Cow<'html, str>>),改进返回的 Elements 只能接受 'static 严格生命周期的问题。

[0.5.0] - 2022-02-11

变更

  • (break change) 新增了 features 的条件编译,将可能不会用到的 DOM 节点操作 API 分离出来,具体可以参见README 里的 Feature flags,如果仍想使用全部 API,可以在 features 中使用 full

修复

  • 修复 has_class 当查找的 class 为空格分隔的列表时,找到一个就返回true,实际逻辑应该是全部包含才能返回 true

增加

  • 增加了主要 API 的 doc 文档。

[0.4.13] - 2022-02-08

增加

  • 为元素 IElementTrait 增加 .value() 方法,为 Elements 增加 .val() 方法,返回 IFormValue 枚举,当元素为 multipleselect 时,返回 IFormValue::Multiple(Vec<String>),其它返回 IFormValue::Single(String),通过 to_string 方法返回 String 值。
  • 增加伪类 :checked,以方便获取表单元素中选取的元素。

修复

  • 修复 :root 伪类在非子类查找时候丢失查询 handle 的问题
  • 删除冗余的 println! debug 信息

[0.4.12] - 2022-02-07

增加

  • 增加 :root 伪类,方便快速获取 HTML 元素
  • 修改错误类型为支持转换到 anyhow::Error

[0.4.10] - 2021-04-22

修复

  • 修复 texts(limit_depth: usize) 方法获取文本节点时,可能会漏掉内容标签的问题,参数由 u32 统一为 usize
  • 修复 element trait 的 set_text() 方法实体进行转义时,仅转义 <>& 这三个特殊字符,单双引号不再进行转义,和浏览器保持一致

修改

  • 增加 texts_by(limit_depth: usize, handle: Box<dyn Fn(usize, &BoxDynText) -> bool )) 方法,方便获取节点时,可以根据节点类型等进行排除

  • element trait 增加 text_chars() 方法,和 text_contents() 方法不同,当内容中包含 html 实体转义字符时,该方法不会进行转义,而是保留原始字符

[0.4.9] - 2021-04-14

修复

  • 修复 prev_until 获取结果节点顺序为逆序的问题

[0.4.8] - 2021-03-27

修复

  • 修复节点插入时,当有不可插入节点时提示节点多次BorrowMut的问题

修改

  • 升级 rphtml 去掉一些无用的逻辑判断,加速解析速度
  • 增加更多 mutation 相关操作的测试用例

[0.4.7] - 2021-03-26

修改

  • 修改 set_attribute 时,value 值带引号时将对引号进行实体转义的逻辑
  • 增加更多的测试用例,基本覆盖到所有代码逻辑,去掉一些不太实用的接口代码

[0.4.6] - 2021-03-26

修复

  • 修复 add 方法错误书写变量名及使用 range 时丢失最后一个元素的问题
  • 修复 unique_parents 时判断了所有父元素导致逻辑错误的问题

修改

  • 增加更多测试用例及逻辑细节

修改

  • 重构了 find 方法的处理逻辑,相比以前代码更清晰

[0.4.5] - 2021-03-24

修复

  • 修复 has_ele 方法判断 Combinator 为 ParentAll 可能出错的问题,这个可能会影响到最终结果集,有使用 0.4.4 版本的需要升级以修复该问题

修改

  • 重构了 find 方法的处理逻辑,相比以前代码更清晰

其它

  • 继续增加更多测试用例,基本覆盖到所有重要的处理逻辑

[0.4.4] - 2021-03-24

修复

  • 修复 add 方法合并时可能出现计算错误的问题

修改

  • 增加 has_attr 属性判断方法,统一错误选择器的错误处理,

其它

  • 增加更多测试用例,去掉一些冗余逻辑

[0.4.3] - 2021-03-24

修复

  • 修复在使用 :last-child:nth-last-child 在整体匹配情况下 index 位置取反的问题

其它

  • 增加更多测试用例,进一步提升代码测试覆盖率

[0.4.2] - 2021-03-23

修复

  • 修复使用 nth- 的伪类选择器,当 n 为负数时,匹配元素顺序可能颠倒的问题
  • 修复[attribute]属性选择器当属性为空查找的边界情况,与浏览器选择器保持一致

其它

  • 增加了更多测试用例,去掉了一些冗余代码

[0.4.1] - 2021-03-21

修复

  • 修改:last-of-type(index):nth-last-of-type(index)指定 index 值查找时,没有保持节点顺序的问题

修改

  • 增加更多测试用例以及更多在线示例

[0.4.0] - 2021-03-20 ⭐

Broken change

  • 针对节点的文本操作由原来的&str类型改为了String类型

优化

  • 优化了 rphtml 和 htmlentity,在 html 解析和 render 等文本处理的时间上有了很大的性能提升
  • 优化了选择器的处理逻辑,去掉了中间的数据处理,查找速度上比以前更快

[0.3.2] - 2021-03-06

修复

  • 修复使用 prevAll 可能导致节点顺序不对的问题

优化

  • 去除子元素查找时不必要的节点复制,使得查找速度更快

[0.3.1] - 2021-03-05

修复

  • 修复因更新 get_attribute 属性查找方式后 set_attributeget_attribute 方法没有同步逻辑导致的属性不同步问题

[0.3.0] - 2021-03-05

修复

  • 修复 Nth pattern 正则匹配的错误,导致 :nth-child(10) 中索引10不能被正确解析的问题

修改

  • 为保证节点超找速度,将 mesdoc 整合到项目中,将不再单独维护,重写了实现 IElementTrait 等的对象类型,避免了查找时不必要的复制
  • 进一步优化了各个伪类选择器,相比 goquery 库都有更快的查找速度
  • 优化了规则、命名常量、文件拆分等细节,整体更清晰
  • rphtml 库增加了标签属性名小写 name 映射,方便更快定位到属性,加快属性选择器的查找速度
  • performance 下增加了更全面的选择器查找速度对比示例

[0.2.7] - 2021-03-05

修改

  • 重写 mesdoc 节点匹配逻辑,规则处理逻辑等,节点查找速度有了较大提升,修复了 parent 没有去重的问题等
  • 增加更多测试用例和性能对比测试等

[0.2.6] - 2021-03-04

修改

  • 修复 rphtml 解析属性值错误处理反斜杠的逻辑

[0.2.6] - 2021-03-03

修改

  • 优化 get_attribute 逻辑
  • rphtml 判断属性名的逻辑和 mesdoc 保持一致
  • 增加更多性能对比测试代码

[0.2.5] - 2021-03-03

修改

  • 优化 find 查找子节点时的性能,当节点数目较大时有很大的性能提升
  • 增加更多与 go + goquery 等的查找性能对比测试

[0.2.4] - 2021-03-02

修改

  • 修复 issue #2 中提到的标签名、属性名大小写问题,增加标签名支持英文冒号:

[0.2.3] - 2021-02-24

修改

  • 修改 loadload_catch 方法默认解析 html 采用最兼容的模式
  • 增加 load_optionsload_options_catch 两个方法,上述两个方法是对应此两个方法、使用最兼容模式参数的调用。
  • 对应增加导出 html::ParseOptions,以便需要调用新增 options 方法调用时使用

[0.2.2] - 2021-02-24

修改

  • 升级 rphtml,去除掉了 wasm 的部分,修改部分数据结构和逻辑,使得解析更为快速且保持更好的兼容性
  • 修复了 rphtml 中节点判断 is_document 的逻辑,新增加了解析参数允许纠错没有实体转译的 <
  • visdom 中因 rphtml 升级导致的部分同步修改

[0.2.1] - 2021-02-20

修改

  • 修改 mesdocslice 方法支持 RangeBounds 参数
  • 重新导出 mesdoc 中各个 trait 里用到的返回类型等,方便在逻辑处理时可能会用到时做各种处理

[0.2.0] - 2021-02-19

修改

  • 修复 rphtml 中解析 pre 标签、自闭合标签不正确的问题,重新修改文档节点与根节点的引用关系
  • mesdoc 中针对 IDocumentTrait 增加 source_code, title, body, head 方法等,方便快速获取文档信息,同时针对 Elements 增加 document 方法方便快速获取 IDocumentTrait 文档节点
  • visdom 中修改针对 rphtmlmesdoc 升级做对应的修改

[0.1.12] - 2021-02-17

修改

  • 优化 mesdoc 中元素去重逻辑

[0.1.11] - 2021-02-17

修改

  • 升级 mesdoc,修复部分选择器没有去重的问题

[0.1.10] - 2021-02-16

修改

  • 进一步完善 mesdoc 中的代码细节,减少耦合逻辑
  • 升级 rphtml, 修改pre等标签的调用 html 方法没有被encode的问题
  • 增加更多测试代码

[0.1.9] - 2021-02-16

修改

  • mesdoc 补充 id 选择器的逻辑,完善可从缓存中快速获取的元素
  • 修改 README 等

[0.1.8] - 2021-02-15

修改

  • mesdoc 去掉无用的生命周期声明,优化 :only-child 伪类选择器和 select 方法
  • 修改 README 等

[0.1.7] - 2021-02-14

修改

  • mesdoc 中伪类选择器:first-child,:last-child,:first-of-type,:last-of-type改为别名选择器,减少代码
  • 微调 mesdocfilter 方法的实现,逻辑更为清晰

[0.1.6] - 2021-02-13

修改

  • 优化 mesdoc :nth-child等伪类选择器的性能
  • 重写了mesdocfilter 方法的逻辑,去掉了 id 选择器 in_cache 的逻辑,减少复杂度
  • 修复了部分选择器不能正确匹配的问题

[0.1.5] - 2021-02-10

修改

  • 继续优化 mesdoc 中伪类选择器的性能

[0.1.4] - 2021-02-09

修改

  • 优化 mesdoc 中部分伪类选择器的性能
  • 增加更多测试

修改

  • 修复 mesdoc[attr|=value] 选择器逻辑逻辑不正确的问题,优化 value 正则的匹配逻辑
  • mesdoc 新增 :contains 内容选择器
  • 增加更多测试用例、完善文档

[0.1.3] - 2021-02-09

修改

  • 修复 mesdoc[attr|=value] 选择器逻辑逻辑不正确的问题,优化 value 正则的匹配逻辑
  • mesdoc 新增 :contains 内容选择器
  • 增加更多测试用例、完善文档

[0.1.2] - 2021-02-08

修改

  • mesdocunique 方法改为对外公共方法 add,增加 eq 的快捷方法first,last
  • 修复 mesdoc add 排序方法存在的错误逻辑,增强了缓存的逻辑
  • 修改部分判断逻辑为函数式写法
  • 增加更多测试用例以及修改文档中的错误、完善部分文档说明

[0.1.1] - 2021-02-07

修改

  • 修复 mesdoc 中对比元素位置时的 bug
  • 修复了 mesdocparentprev_all 等所有需要去重的方法缺少去重而导致的重复节点错误
  • 重写了 mesdocclosestsiblings 方法,增加去重和排序
  • 修改针对 text 节点set_text方法为直接修改内容,修复了原方法设置父节点错误导致的问题
  • 增加 rust doc 注释和更多测试用例

[0.1.0] - 2021-02-06

修改

  • 去掉了 mesdoc 的 sort 方法
  • 重写了 unique 方法以实现快速合并选择器的重复节点,速度有了大幅提升
  • 修复了节点操作缺少父节点字段导致的节点丢失