preProcess
This commit is contained in:
parent
e4ec93b5b2
commit
82264ba9e5
|
@ -335,9 +335,11 @@ class WikiItem {
|
||||||
}
|
}
|
||||||
|
|
||||||
async getData () {
|
async getData () {
|
||||||
let data = await ( this.data !== undefined ? Promise.resolve( this.data ) : ( this.data = this.load( )))
|
let data = await ( this.data !== undefined ? this.data : ( this.data = this.load( )))
|
||||||
if ( Buffer.isBuffer( data ) && this.encoding != null )
|
return this.preProcess( data )
|
||||||
data = iconv.decode( data, this.encoding )
|
}
|
||||||
|
|
||||||
|
preProcess ( data ) {
|
||||||
return data
|
return data
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -527,17 +529,12 @@ class Article extends ArticleStub {
|
||||||
super( pageInfo )
|
super( pageInfo )
|
||||||
}
|
}
|
||||||
|
|
||||||
load () {
|
async preProcess( data ) {
|
||||||
return super.load()
|
|
||||||
.then( body => this.preProcess( body ))
|
|
||||||
}
|
|
||||||
|
|
||||||
async preProcess( data, reply ) {
|
|
||||||
let src
|
let src
|
||||||
try {
|
try {
|
||||||
src = cheerio.load( data )
|
src = cheerio.load( data )
|
||||||
} catch ( e ) {
|
} catch ( e ) {
|
||||||
log( 'cheerio.load error', e, data, reply )
|
log( 'cheerio.load error', e, data )
|
||||||
return data
|
return data
|
||||||
}
|
}
|
||||||
try {
|
try {
|
||||||
|
@ -840,29 +837,21 @@ class Style extends LayoutItem {
|
||||||
this.data = data
|
this.data = data
|
||||||
}
|
}
|
||||||
|
|
||||||
async getData () {
|
async preProcess ( data ) {
|
||||||
try {
|
|
||||||
const src = await super.getData()
|
|
||||||
return await this.transformStyle( src )
|
|
||||||
} catch ( err ) {
|
|
||||||
log( 'Style.getData error', this.url, err )
|
|
||||||
return ''
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
async transformStyle ( src ) {
|
|
||||||
// collect urls using dummy replacements
|
// collect urls using dummy replacements
|
||||||
const urlre = /(url\(['"]?)([^\)]*[^\)'"])(['"]?\))/g
|
const urlre = /(url\(['"]?)([^\)]*[^\)'"])(['"]?\))/g
|
||||||
const requests = []
|
const requests = []
|
||||||
src.replace( urlre, ( match, start, url, end ) => {
|
data.replace( urlre, ( match, start, url, end ) => {
|
||||||
if ( ! url.startsWith( 'data:' )) {
|
if ( ! url.startsWith( 'data:' )) {
|
||||||
const styleItem = new LayoutItem( urlconv.resolve( this.url, url ))
|
const styleItem = new LayoutItem( urlconv.resolve( this.url, url ))
|
||||||
requests.push( styleItem.save() )
|
requests.push( styleItem.save() )
|
||||||
|
} else {
|
||||||
|
requests.push( url )
|
||||||
}
|
}
|
||||||
return match
|
return match
|
||||||
})
|
})
|
||||||
const resolvedUrls = await Promise.all( requests )
|
const resolvedUrls = await Promise.all( requests )
|
||||||
const transformed = src.replace( urlre, ( match, start, url, end ) => {
|
const transformed = data.replace( urlre, ( match, start, url, end ) => {
|
||||||
let out = match
|
let out = match
|
||||||
const rurl = resolvedUrls.shift()
|
const rurl = resolvedUrls.shift()
|
||||||
if ( rurl != null ) {
|
if ( rurl != null ) {
|
||||||
|
|
Loading…
Reference in New Issue
Block a user