Skip to content

Commit

Permalink
Simplify calculating img src
Browse files Browse the repository at this point in the history
  • Loading branch information
audiodude authored and kelson42 committed Jun 23, 2024
1 parent d95faa9 commit 7d194a8
Show file tree
Hide file tree
Showing 2 changed files with 3 additions and 55 deletions.
11 changes: 1 addition & 10 deletions src/renderers/wikimedia-mobile.renderer.ts
Original file line number Diff line number Diff line change
Expand Up @@ -98,21 +98,12 @@ export class WikimediaMobileRenderer extends MobileRenderer {
const protocol = 'https://'
const spans = doc.querySelectorAll('.pcs-lazy-load-placeholder')

function getImgSrc(element: DominoElement) {
let src = element.getAttribute('data-src')
const origSrc = element.getAttribute('data-data-file-original-src')
if (origSrc && /\/\d+px/.test(origSrc)) {
src = origSrc.replace(/\/\d+px/, `/${MOBILE_IMG_WIDTH}`)
}
return urlJoin(protocol, src)
}

spans.forEach((span: DominoElement) => {
// Create a new img element
const img = doc.createElement('img') as DominoElement

// Set the attributes for the img element based on the data attributes in the span
img.src = getImgSrc(span)
img.src = urlJoin(protocol, span.getAttribute('data-data-file-original-src'))
img.setAttribute('decoding', 'async')
img.width = span.getAttribute('data-width')
img.height = span.getAttribute('data-height')
Expand Down
47 changes: 2 additions & 45 deletions test/unit/renderers/mobile.renderer.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -93,51 +93,8 @@ describe('mobile renderer', () => {

expect(spans.length).toBe(0)
expect(imgs.length).toBe(2)
expect(imgs[0].src).toEqual('https://upload.wikimedia.org/wikipedia/commons/thumb/8/8f/Bamako_et_fleuve_Niger.jpg/140px-Bamako_et_fleuve_Niger.jpg')
expect(imgs[1].src).toEqual('https://upload.wikimedia.org/wikipedia/commons/thumb/2/20/Bamako_bridge2.jpg/140px-Bamako_bridge2.jpg')
})

test('it falls back to src attribute if data-data-file-original does not match ZZZpx', () => {
const testWindow = domino.createWindow(
`
<span class="mw-file-element pcs-widen-image-override pcs-lazy-load-placeholder pcs-lazy-load-placeholder-pending"
style="width: 640px;" data-class="mw-file-element pcs-widen-image-override"
data-src="//upload.wikimedia.org/wikipedia/commons/thumb/2/20/Bamako_bridge2.jpg/640px-Bamako_bridge2.jpg"
data-width="640" data-height="428" data-data-file-width="800" data-data-file-height="533"
data-data-file-original-src="//upload.wikimedia.org/wikipedia/commons/thumb/2/20/Bamako_bridge2.jpg"
>
<span style="padding-top: 66.875%;"></span>
</span>
`,
'http://bm.wikipedia.org/api/rest_v1/page/mobile-html/BamakBamakɔ',
)
const mobileRenderer = new WikimediaMobileRenderer()

const actual = mobileRenderer.INTERNAL.convertLazyLoadToImages(testWindow.document)
const imgs = actual.querySelectorAll('img')

expect(imgs[0].src).toEqual('https://upload.wikimedia.org/wikipedia/commons/thumb/2/20/Bamako_bridge2.jpg/640px-Bamako_bridge2.jpg')
})

test('it falls back to src attribute if data-data-file-original does not exist', () => {
const testWindow = domino.createWindow(
`
<span class="mw-file-element pcs-widen-image-override pcs-lazy-load-placeholder pcs-lazy-load-placeholder-pending"
style="width: 640px;" data-class="mw-file-element pcs-widen-image-override"
data-src="//upload.wikimedia.org/wikipedia/commons/thumb/2/20/Bamako_bridge2.jpg/640px-Bamako_bridge2.jpg"
data-width="640" data-height="428" data-data-file-width="800" data-data-file-height="533"
>
<span style="padding-top: 66.875%;"></span>
</span>
`,
'http://bm.wikipedia.org/api/rest_v1/page/mobile-html/BamakBamakɔ',
)
const mobileRenderer = new WikimediaMobileRenderer()

const actual = mobileRenderer.INTERNAL.convertLazyLoadToImages(testWindow.document)
const imgs = actual.querySelectorAll('img')

expect(imgs[0].src).toEqual('https://upload.wikimedia.org/wikipedia/commons/thumb/2/20/Bamako_bridge2.jpg/640px-Bamako_bridge2.jpg')
expect(imgs[0].src).toEqual('https://upload.wikimedia.org/wikipedia/commons/thumb/8/8f/Bamako_et_fleuve_Niger.jpg/250px-Bamako_et_fleuve_Niger.jpg')
expect(imgs[1].src).toEqual('https://upload.wikimedia.org/wikipedia/commons/thumb/2/20/Bamako_bridge2.jpg/250px-Bamako_bridge2.jpg')
})
})
})

0 comments on commit 7d194a8

Please sign in to comment.