Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
披星戴月123
dr_py
提交
b36a0165
dr_py
项目概览
披星戴月123
/
dr_py
与 Fork 源项目一致
Fork自
晚风拂柳颜 / dr_py
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
dr_py
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
b36a0165
编写于
11月 17, 2022
作者:
H
hjdhnx
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
drpy2优化
上级
9bc624d3
变更
4
展开全部
隐藏空白更改
内联
并排
Showing
4 changed file
with
43 addition
and
46 deletion
+43
-46
base/rules.db
base/rules.db
+0
-0
js/version.txt
js/version.txt
+1
-1
libs/drpy2.js
libs/drpy2.js
+41
-44
libs/drpy2.min.js
libs/drpy2.min.js
+1
-1
未找到文件。
base/rules.db
浏览文件 @
b36a0165
无法预览此类型文件
js/version.txt
浏览文件 @
b36a0165
3.7.8
\ No newline at end of file
3.7.7
\ No newline at end of file
libs/drpy2.js
浏览文件 @
b36a0165
...
...
@@ -31,7 +31,7 @@ function pre(){
}
let
rule
=
{};
const
VERSION
=
'
drpy2 3.
9.20beta
7
'
;
const
VERSION
=
'
drpy2 3.
7.8 2022111
7
'
;
/** 已知问题记录
* 1.影魔的jinjia2引擎不支持 {{fl}}对象直接渲染 (有能力解决的话尽量解决下,支持对象直接渲染字符串转义,如果加了|safe就不转义)[影魔牛逼,最新的文件发现这问题已经解决了]
* Array.prototype.append = Array.prototype.push; 这种js执行后有毛病,for in 循环列表会把属性给打印出来 (这个大毛病需要重点排除一下)
...
...
@@ -85,6 +85,8 @@ var _pdfa;
var
_pd
;
// const DOM_CHECK_ATTR = ['url', 'src', 'href', 'data-original', 'data-src'];
const
DOM_CHECK_ATTR
=
/
(
url|src|href|-original|-src|-play|-url
)
$/
;
const
NOADD_INDEX
=
/:eq|:lt|:gt|:first|:last|^body$|^#/
;
// 不自动加eq下标索引
const
URLJOIN_ATTR
=
/
(
url|src|href|-original|-src|-play|-url
)
$/
;
// 需要自动urljoin的属性
const
SELECT_REGEX
=
/:eq|:lt|:gt|#/g
;
const
SELECT_REGEX_A
=
/:eq|:lt|:gt/g
;
...
...
@@ -423,6 +425,33 @@ var urljoin2 = urljoin;
const
defaultParser
=
{
pdfh
:
pdfh
,
pdfa
:
pdfa
,
parseHikerToJq
(
parse
,
first
){
// 海阔解析表达式转原生表达式,自动补eq,如果传了first就最后一个也取eq(0)
first
=
first
||
false
;
if
(
parse
.
includes
(
'
&&
'
)){
parse
=
parse
.
split
(
'
&&
'
);
//带&&的重新拼接
let
new_parses
=
[];
// 构造新的解析表达式列表
parse
.
forEach
((
it
,
i
)
=>
{
let
ps
=
it
.
split
(
'
'
).
slice
(
-
1
)[
0
];
// 如果分割&&后带空格就取最后一个元素
if
(
!
NOADD_INDEX
.
test
(
ps
)){
if
(
!
first
&&
i
>=
parse
.
length
-
1
){
new_parses
.
push
(
it
);
}
else
{
new_parses
.
push
(
`
${
it
}
:eq(0)`
);
}
}
else
{
new_parses
.
push
(
it
);
}
});
parse
=
new_parses
.
join
(
'
'
);
}
else
{
let
ps
=
parse
.
split
(
'
'
).
slice
(
-
1
)[
0
];
// 如果带空格就取最后一个元素
if
(
!
NOADD_INDEX
.
test
(
ps
)
&&
first
){
parse
=
`
${
parse
}
:eq(0)`
;
}
}
return
parse
;
},
pd
(
html
,
parse
,
uri
){
let
ret
=
this
.
pdfh
(
html
,
parse
);
if
(
typeof
(
uri
)
===
'
undefined
'
||!
uri
){
...
...
@@ -571,35 +600,20 @@ const parseTags = {
},
jq
:{
pdfh
(
html
,
parse
,
base_url
)
{
if
(
!
parse
||
!
parse
.
trim
())
{
if
(
!
html
||!
parse
||
!
parse
.
trim
())
{
return
''
}
parse
=
parse
.
trim
();
let
option
=
''
;
// print('pdfh parse前:'+parse);
if
(
parse
.
startsWith
(
'
body&&
'
))
{
parse
=
parse
.
substr
(
6
);
let
reparse
=
[
'
body&&Text
'
,
'
Text
'
,
'
body&&Html
'
,
'
Html
'
];
if
(
reparse
.
includes
(
reparse
)){
return
defaultParser
.
pdfh
(
html
,
parse
)
}
if
(
parse
.
includes
(
'
&&
'
))
{
let
sp
=
parse
.
split
(
'
&&
'
);
option
=
sp
[
sp
.
length
-
1
];
sp
.
splice
(
sp
.
length
-
1
);
sp
.
forEach
((
it
,
idex
)
=>
{
if
(
!
SELECT_REGEX
.
test
(
it
))
{
sp
[
idex
]
=
it
+
'
:eq(0)
'
;
}
});
parse
=
sp
.
join
(
'
'
).
trim
();
let
option
=
''
;
if
(
parse
.
includes
(
'
&&
'
)){
option
=
parse
.
split
(
'
&&
'
).
slice
(
-
1
)[
0
];
parse
=
parse
.
split
(
'
&&
'
).
slice
(
0
,
-
1
).
join
(
'
&&
'
);
}
// if(parse === 'Text'){
// parse = 'body';
// option = 'Text';
// }else if(parse === 'Html'){
// parse = 'body';
// option = 'Html';
// }
// print('pdfh parse后:'+parse+',option:'+option);
// let result = defaultParser.pdfh(html,parse + " " + option);
parse
=
defaultParser
.
parseHikerToJq
(
parse
,
true
);
let
result
=
defaultParser
.
pdfh
(
html
,
parse
,
option
);
if
(
option
&&
/style/
.
test
(
option
.
toLowerCase
())
&&
/url
\(
/
.
test
(
result
)){
try
{
...
...
@@ -618,28 +632,11 @@ const parseTags = {
return
result
;
},
pdfa
(
html
,
parse
)
{
if
(
!
parse
||
!
parse
.
trim
())
{
print
(
'
!parse
'
);
if
(
!
html
||!
parse
||
!
parse
.
trim
())
{
return
[];
}
parse
=
parse
.
trim
();
// print('pdfa=>parse前:'+parse);
if
(
parse
.
startsWith
(
'
body&&
'
))
{
parse
=
parse
.
substr
(
6
);
}
if
(
parse
.
includes
(
'
&&
'
))
{
let
sp
=
parse
.
split
(
'
&&
'
);
sp
.
forEach
((
it
,
idex
)
=>
{
if
(
!
SELECT_REGEX_A
.
test
(
it
)
&&
idex
<
sp
.
length
-
1
)
{
sp
[
idex
]
=
it
+
'
:eq(0)
'
;
}
});
parse
=
sp
.
join
(
'
'
).
trim
();
}
// if(!/&&| /.test(parse)){ // 自动补body就是jsoup的无稽之谈
// parse = 'body '+parse;
// }
// print('pdfa=>parse后:'+parse);
parse
=
defaultParser
.
parseHikerToJq
(
parse
)
let
result
=
defaultParser
.
pdfa
(
html
,
parse
);
// print(result);
print
(
`pdfa解析
${
parse
}
=>
${
result
.
length
}
`
);
...
...
libs/drpy2.min.js
浏览文件 @
b36a0165
此差异已折叠。
点击以展开。
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录