Compare commits
2 commits
c08a6a84fb
...
3ec8def5c2
| Author | SHA1 | Date | |
|---|---|---|---|
| 3ec8def5c2 | |||
| ebb5bf3892 |
8 changed files with 40 additions and 9 deletions
2
info.rkt
2
info.rkt
|
|
@ -1,3 +1,3 @@
|
||||||
#lang info
|
#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"))
|
||||||
|
|
|
||||||
|
|
@ -20,7 +20,7 @@
|
||||||
title "File:Rainbow Flag1.svg"
|
title "File:Rainbow Flag1.svg"
|
||||||
imageinfo
|
imageinfo
|
||||||
((: timestamp "2025-03-10T07:24:50Z"
|
((: timestamp "2025-03-10T07:24:50Z"
|
||||||
user "DogeMcMeow"))
|
user "DogeMcMeow"))
|
||||||
fileusage
|
fileusage
|
||||||
((: pageid 191
|
((: pageid 191
|
||||||
ns 0
|
ns 0
|
||||||
|
|
|
||||||
|
|
@ -5,7 +5,8 @@
|
||||||
racket/string
|
racket/string
|
||||||
"pure-utils.rkt"
|
"pure-utils.rkt"
|
||||||
"url-utils.rkt"
|
"url-utils.rkt"
|
||||||
"xexpr-utils.rkt")
|
"xexpr-utils.rkt"
|
||||||
|
(for-syntax racket/base syntax/parse))
|
||||||
|
|
||||||
(provide
|
(provide
|
||||||
preprocess-html-wiki
|
preprocess-html-wiki
|
||||||
|
|
@ -72,7 +73,18 @@
|
||||||
(div (@ (class "reviews"))
|
(div (@ (class "reviews"))
|
||||||
(header "GameSpot Expert Reviews"))
|
(header "GameSpot Expert Reviews"))
|
||||||
(div (@ (data-test-ampersand) (class "mw-collapsible-content"))
|
(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])
|
(define (updater wikiname #:strict-proxy? [strict-proxy? #f])
|
||||||
;; precompute wikiurl regex for efficency
|
;; precompute wikiurl regex for efficency
|
||||||
|
|
@ -171,6 +183,15 @@
|
||||||
(curry u
|
(curry u
|
||||||
(λ (v) (dict-has-key? v 'data-src))
|
(λ (v) (dict-has-key? v 'data-src))
|
||||||
(λ (v) (alist-overwrite v 'src (dict-ref 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?
|
; don't use srcset - TODO: use srcset?
|
||||||
(λ (v) (dict-remove v '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))
|
(check-equal? ((query-selector (λ (t a c) (dict-has-key? a 'data-test-ampersand)) transformed))
|
||||||
'(div (@ (data-test-ampersand) (class "mw-collapsible-content"))
|
'(div (@ (data-test-ampersand) (class "mw-collapsible-content"))
|
||||||
(& ndash)))
|
(& 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
|
; benchmark
|
||||||
(when (file-exists? "../storage/Frog.html")
|
(when (file-exists? "../storage/Frog.html")
|
||||||
(with-input-from-file "../storage/Frog.html"
|
(with-input-from-file "../storage/Frog.html"
|
||||||
|
|
|
||||||
|
|
@ -5,7 +5,7 @@
|
||||||
racket/string
|
racket/string
|
||||||
json
|
json
|
||||||
(prefix-in easy: net/http-easy)
|
(prefix-in easy: net/http-easy)
|
||||||
html-parsing
|
"../lib/html-parsing/main.rkt"
|
||||||
html-writing
|
html-writing
|
||||||
web-server/http
|
web-server/http
|
||||||
web-server/http/bindings
|
web-server/http/bindings
|
||||||
|
|
|
||||||
|
|
@ -607,7 +607,7 @@
|
||||||
(require racket/generator
|
(require racket/generator
|
||||||
racket/list
|
racket/list
|
||||||
net/http-easy
|
net/http-easy
|
||||||
html-parsing
|
"../lib/html-parsing/main.rkt"
|
||||||
"../lib/xexpr-utils.rkt")
|
"../lib/xexpr-utils.rkt")
|
||||||
(define r (get "https://www.niwanetwork.org/members/"))
|
(define r (get "https://www.niwanetwork.org/members/"))
|
||||||
(define x (html->xexp (bytes->string/utf-8 (response-body r))))
|
(define x (html->xexp (bytes->string/utf-8 (response-body r))))
|
||||||
|
|
|
||||||
|
|
@ -4,7 +4,7 @@
|
||||||
racket/string
|
racket/string
|
||||||
memo
|
memo
|
||||||
net/http-easy
|
net/http-easy
|
||||||
html-parsing
|
"../lib/html-parsing/main.rkt"
|
||||||
"../lib/pure-utils.rkt"
|
"../lib/pure-utils.rkt"
|
||||||
"../lib/syntax.rkt"
|
"../lib/syntax.rkt"
|
||||||
"../lib/url-utils.rkt"
|
"../lib/url-utils.rkt"
|
||||||
|
|
|
||||||
|
|
@ -2,7 +2,7 @@
|
||||||
(require racket/string
|
(require racket/string
|
||||||
(prefix-in easy: net/http-easy)
|
(prefix-in easy: net/http-easy)
|
||||||
; html libs
|
; html libs
|
||||||
html-parsing
|
"../lib/html-parsing/main.rkt"
|
||||||
html-writing
|
html-writing
|
||||||
; web server libs
|
; web server libs
|
||||||
net/url
|
net/url
|
||||||
|
|
|
||||||
|
|
@ -2,7 +2,7 @@
|
||||||
(require racket/list
|
(require racket/list
|
||||||
racket/string
|
racket/string
|
||||||
; html libs
|
; html libs
|
||||||
html-parsing
|
"../lib/html-parsing/main.rkt"
|
||||||
html-writing
|
html-writing
|
||||||
; web server libs
|
; web server libs
|
||||||
net/url
|
net/url
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue