From ebb5bf3892d62a05b2316e128e160e491ec02ee9 Mon Sep 17 00:00:00 2001 From: Cadence Ember Date: Thu, 18 Jun 2026 14:15:43 +1200 Subject: [PATCH 1/2] Always use vendored html-parsing --- info.rkt | 2 +- lib/make-json.rkt | 2 +- src/application-globals.rkt | 2 +- src/extwiki-data.rkt | 2 +- src/extwiki-generic.rkt | 2 +- src/page-category.rkt | 2 +- src/page-file.rkt | 2 +- 7 files changed, 7 insertions(+), 7 deletions(-) diff --git a/info.rkt b/info.rkt index 40c9399..9354430 100644 --- a/info.rkt +++ b/info.rkt @@ -1,3 +1,3 @@ #lang info -(define build-deps '("rackunit-lib" "web-server-lib" "http-easy-lib" "html-parsing" "html-writing" "json-pointer" "typed-ini-lib" "memo" "net-cookies-lib" "db" "sequence-tools-lib")) +(define build-deps '("rackunit-lib" "web-server-lib" "http-easy-lib" "html-writing" "json-pointer" "typed-ini-lib" "memo" "net-cookies-lib" "db" "sequence-tools-lib")) diff --git a/lib/make-json.rkt b/lib/make-json.rkt index 9a6a557..38aae37 100644 --- a/lib/make-json.rkt +++ b/lib/make-json.rkt @@ -20,7 +20,7 @@ title "File:Rainbow Flag1.svg" imageinfo ((: timestamp "2025-03-10T07:24:50Z" - user "DogeMcMeow")) + user "DogeMcMeow")) fileusage ((: pageid 191 ns 0 diff --git a/src/application-globals.rkt b/src/application-globals.rkt index 8011d01..b6ea380 100644 --- a/src/application-globals.rkt +++ b/src/application-globals.rkt @@ -5,7 +5,7 @@ racket/string json (prefix-in easy: net/http-easy) - html-parsing + "../lib/html-parsing/main.rkt" html-writing web-server/http web-server/http/bindings diff --git a/src/extwiki-data.rkt b/src/extwiki-data.rkt index fe6ea93..da3434d 100644 --- a/src/extwiki-data.rkt +++ b/src/extwiki-data.rkt @@ -607,7 +607,7 @@ (require racket/generator racket/list net/http-easy - html-parsing + "../lib/html-parsing/main.rkt" "../lib/xexpr-utils.rkt") (define r (get "https://www.niwanetwork.org/members/")) (define x (html->xexp (bytes->string/utf-8 (response-body r)))) diff --git a/src/extwiki-generic.rkt b/src/extwiki-generic.rkt index cd61f0b..5fb1373 100644 --- a/src/extwiki-generic.rkt +++ b/src/extwiki-generic.rkt @@ -4,7 +4,7 @@ racket/string memo net/http-easy - html-parsing + "../lib/html-parsing/main.rkt" "../lib/pure-utils.rkt" "../lib/syntax.rkt" "../lib/url-utils.rkt" diff --git a/src/page-category.rkt b/src/page-category.rkt index 8913a81..22fb2b4 100644 --- a/src/page-category.rkt +++ b/src/page-category.rkt @@ -2,7 +2,7 @@ (require racket/string (prefix-in easy: net/http-easy) ; html libs - html-parsing + "../lib/html-parsing/main.rkt" html-writing ; web server libs net/url diff --git a/src/page-file.rkt b/src/page-file.rkt index e9b1c3c..364e461 100644 --- a/src/page-file.rkt +++ b/src/page-file.rkt @@ -2,7 +2,7 @@ (require racket/list racket/string ; html libs - html-parsing + "../lib/html-parsing/main.rkt" html-writing ; web server libs net/url From 3ec8def5c2b4aa2d11193376351bbd214494347f Mon Sep 17 00:00:00 2001 From: Cadence Ember Date: Thu, 18 Jun 2026 14:15:59 +1200 Subject: [PATCH 2/2] Remove loading=lazy from small images --- lib/tree-updater.rkt | 35 +++++++++++++++++++++++++++++++++-- 1 file changed, 33 insertions(+), 2 deletions(-) diff --git a/lib/tree-updater.rkt b/lib/tree-updater.rkt index 0bf7450..baea2b9 100644 --- a/lib/tree-updater.rkt +++ b/lib/tree-updater.rkt @@ -5,7 +5,8 @@ racket/string "pure-utils.rkt" "url-utils.rkt" - "xexpr-utils.rkt") + "xexpr-utils.rkt" + (for-syntax racket/base syntax/parse)) (provide preprocess-html-wiki @@ -72,7 +73,18 @@ (div (@ (class "reviews")) (header "GameSpot Expert Reviews")) (div (@ (data-test-ampersand) (class "mw-collapsible-content")) - (& ndash)))))) + (& ndash)) + (div (img (@ (loading "lazy") (width "80") (height "80") (data-test-size "small"))) + (img (@ (loading "lazy") (width "500") (height "80") (data-test-size "wide"))) + (img (@ (loading "lazy") (width "500") (height "500") (data-test-size "large")))))))) + +(define-syntax match? + (syntax-parser + [(_ datum:id pattern) + #'(match datum [pattern #t] [_ #f])])) + +(define (image-dimension-small-enough? x) + (and (number? x) (x . <= . 200))) (define (updater wikiname #:strict-proxy? [strict-proxy? #f]) ;; precompute wikiurl regex for efficency @@ -171,6 +183,15 @@ (curry u (λ (v) (dict-has-key? v 'data-src)) (λ (v) (alist-overwrite v 'src (dict-ref v 'data-src)))) + ; remove loading=lazy for images small enough in either dimension + (curry u + (λ (v) (match? v (list-no-order + (list 'loading "lazy") + (or + (list 'height (app string->number (? image-dimension-small-enough?))) + (list 'width (app string->number (? image-dimension-small-enough?)))) + _ ...))) + (λ (v) (dict-remove v 'loading))) ; don't use srcset - TODO: use srcset? (λ (v) (dict-remove v 'srcset)))) @@ -345,6 +366,16 @@ (check-equal? ((query-selector (λ (t a c) (dict-has-key? a 'data-test-ampersand)) transformed)) '(div (@ (data-test-ampersand) (class "mw-collapsible-content")) (& ndash))) + ; check that loading=lazy is retained on large images + (check-equal? ((query-selector (λ (t a c) (match? a (list-no-order '(data-test-size "small") + _ ...))) transformed)) + '(img (@ (width "80") (height "80") (data-test-size "small")))) + (check-equal? ((query-selector (λ (t a c) (match? a (list-no-order '(data-test-size "wide") + _ ...))) transformed)) + '(img (@ (width "500") (height "80") (data-test-size "wide")))) + (check-equal? ((query-selector (λ (t a c) (match? a (list-no-order '(data-test-size "large") + _ ...))) transformed)) + '(img (@ (loading "lazy") (width "500") (height "500") (data-test-size "large")))) ; benchmark (when (file-exists? "../storage/Frog.html") (with-input-from-file "../storage/Frog.html"