forked from cadence/breezewiki
		
	Use <!DOCTYPE html> standards mode on all pages
This commit is contained in:
		
							parent
							
								
									1219334d06
								
							
						
					
					
						commit
						aab52bd92b
					
				
					 5 changed files with 101 additions and 82 deletions
				
			
		|  | @ -116,7 +116,9 @@ | ||||||
|            ; combine the above entries into a single request for potentially extra speed - fandom.com doesn't even do this! |            ; combine the above entries into a single request for potentially extra speed - fandom.com doesn't even do this! | ||||||
|            "~a/wikia.php?controller=ThemeApi&method=themeVariables" |            "~a/wikia.php?controller=ThemeApi&method=themeVariables" | ||||||
|            "~a/load.php?lang=en&modules=skin.fandomdesktop.styles%7Cext.fandom.PortableInfoboxFandomDesktop.css%7Cext.fandom.GlobalComponents.CommunityHeaderBackground.css%7Cext.gadget.site-styles%2Csound-styles%7Csite.styles&only=styles&skin=fandomdesktop"))) |            "~a/load.php?lang=en&modules=skin.fandomdesktop.styles%7Cext.fandom.PortableInfoboxFandomDesktop.css%7Cext.fandom.GlobalComponents.CommunityHeaderBackground.css%7Cext.gadget.site-styles%2Csound-styles%7Csite.styles&only=styles&skin=fandomdesktop"))) | ||||||
|   `(html |   `(*TOP* | ||||||
|  |     (*DECL* DOCTYPE html) | ||||||
|  |     (html | ||||||
|      (head |      (head | ||||||
|       (meta (@ (name "viewport") (content "width=device-width, initial-scale=1"))) |       (meta (@ (name "viewport") (content "width=device-width, initial-scale=1"))) | ||||||
|       (title ,(format "~a | ~a+~a" |       (title ,(format "~a | ~a+~a" | ||||||
|  | @ -155,7 +157,7 @@ | ||||||
|                            (div (@ (id "content") #;(class "page-content")) |                            (div (@ (id "content") #;(class "page-content")) | ||||||
|                                 (div (@ (id "mw-content-text")) |                                 (div (@ (id "mw-content-text")) | ||||||
|                                      ,content)) |                                      ,content)) | ||||||
|                           ,(application-footer source-url #:license (siteinfo^-license siteinfo)))))))) |                            ,(application-footer source-url #:license (siteinfo^-license siteinfo))))))))) | ||||||
| (module+ test | (module+ test | ||||||
|   (define page |   (define page | ||||||
|     (parameterize ([(config-parameter 'strict_proxy) "true"]) |     (parameterize ([(config-parameter 'strict_proxy) "true"]) | ||||||
|  |  | ||||||
|  | @ -60,7 +60,9 @@ | ||||||
|     (p "If you want to create your own wiki, try Miraheze!"))) |     (p "If you want to create your own wiki, try Miraheze!"))) | ||||||
| 
 | 
 | ||||||
| (define body | (define body | ||||||
|   `(html |   `(*TOP* | ||||||
|  |     (*DECL* DOCTYPE html) | ||||||
|  |     (html | ||||||
|      (head |      (head | ||||||
|       (meta (@ (name "viewport") (content "width=device-width, initial-scale=1"))) |       (meta (@ (name "viewport") (content "width=device-width, initial-scale=1"))) | ||||||
|       (title "About | BreezeWiki") |       (title "About | BreezeWiki") | ||||||
|  | @ -78,7 +80,7 @@ | ||||||
|                            (div (@ (id "content") #;(class "page-content")) |                            (div (@ (id "content") #;(class "page-content")) | ||||||
|                                 (div (@ (id "mw-content-text")) |                                 (div (@ (id "mw-content-text")) | ||||||
|                                      ,@content)) |                                      ,@content)) | ||||||
|                           ,(application-footer #f))))))) |                            ,(application-footer #f)))))))) | ||||||
| (module+ test | (module+ test | ||||||
|   (check-not-false (xexp->html body))) |   (check-not-false (xexp->html body))) | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -175,7 +175,8 @@ | ||||||
|                 ; proxy images from inline styles, if strict_proxy is set |                 ; proxy images from inline styles, if strict_proxy is set | ||||||
|                 (curry u |                 (curry u | ||||||
|                        (λ (v) (config-true? 'strict_proxy)) |                        (λ (v) (config-true? 'strict_proxy)) | ||||||
|                        (λ (v) (attribute-maybe-update 'style |                        (λ (v) (attribute-maybe-update | ||||||
|  |                                'style | ||||||
|                                (λ (style) |                                (λ (style) | ||||||
|                                  (regexp-replace #rx"url\\(['\"]?(.*?)['\"]?\\)" style |                                  (regexp-replace #rx"url\\(['\"]?(.*?)['\"]?\\)" style | ||||||
|                                                  (λ (whole url) |                                                  (λ (whole url) | ||||||
|  |  | ||||||
|  | @ -12,7 +12,9 @@ | ||||||
|     (define built (simple-form-path (build-path path-static f))) |     (define built (simple-form-path (build-path path-static f))) | ||||||
|     (values built (file-or-directory-modify-seconds built)))) |     (values built (file-or-directory-modify-seconds built)))) | ||||||
| 
 | 
 | ||||||
| (: get-static-url ((U String Path) -> String)) | (: get-static-url (Path-String -> String)) | ||||||
| (define (get-static-url path-or-filename) | (define (get-static-url path-or-filename) | ||||||
|   (define the-path (simple-form-path (if (path? path-or-filename) path-or-filename (build-path path-static path-or-filename)))) |   (define the-path (simple-form-path (if (path? path-or-filename) | ||||||
|  |                                          path-or-filename | ||||||
|  |                                          (build-path path-static path-or-filename)))) | ||||||
|   (format "/static/~a?t=~a" (file-name-from-path the-path) (hash-ref static-data the-path))) |   (format "/static/~a?t=~a" (file-name-from-path the-path) (hash-ref static-data the-path))) | ||||||
|  |  | ||||||
|  | @ -157,11 +157,17 @@ | ||||||
|     (define element-type (car element)) |     (define element-type (car element)) | ||||||
|     (define attributes (bits->attributes (cdr element))) |     (define attributes (bits->attributes (cdr element))) | ||||||
|     (define contents (filter element-is-content? (cdr element))) ; provide elements and strings |     (define contents (filter element-is-content? (cdr element))) ; provide elements and strings | ||||||
|     (if (or (equal? element-type '*DECL) |     (cond | ||||||
|             (equal? element-type '@) |       [(equal? element-type '*DECL*) | ||||||
|             (equal? element-type '&)) |        ; declarations like <!DOCTYPE html> get mapped as attributes as if the element were (*DECL* (@ (DOCTYPE) (html))) | ||||||
|  |        (match (transformer element element-type (map list (cdr element)) null) | ||||||
|  |          [(list element-type attributes contents) | ||||||
|  |           `(*DECL* ,@(map car attributes))] | ||||||
|  |          [#f ""])] | ||||||
|  |       [(member element-type '(@ &)) | ||||||
|        ; special element, do nothing |        ; special element, do nothing | ||||||
|         element |        element] | ||||||
|  |       [#t | ||||||
|        ; regular element, transform it |        ; regular element, transform it | ||||||
|        (match (transformer element element-type attributes contents) |        (match (transformer element element-type attributes contents) | ||||||
|          [(list element-type attributes contents) |          [(list element-type attributes contents) | ||||||
|  | @ -169,8 +175,14 @@ | ||||||
|                   (if (pair? attributes) (list (append '(@) attributes)) (list)) |                   (if (pair? attributes) (list (append '(@) attributes)) (list)) | ||||||
|                   (map (λ (content) |                   (map (λ (content) | ||||||
|                          (if (element-is-element? content) (loop content) content)) |                          (if (element-is-element? content) (loop content) content)) | ||||||
|                         contents))])))) |                        contents))])]))) | ||||||
| (module+ test | (module+ test | ||||||
|  |   ; check doctype is preserved when present | ||||||
|  |   (check-equal? (update-tree (λ (e t a c) (list t a c)) '(*TOP* (*DECL* DOCTYPE html) (html (body "Hey")))) | ||||||
|  |                 '(*TOP* (*DECL* DOCTYPE html) (html (body "Hey")))) | ||||||
|  |   ; check doctype can be removed if desirable | ||||||
|  |   (check-equal? (update-tree (λ (e t a c) (if (eq? t '*DECL*) #f (list t a c))) '(*TOP* (*DECL* DOCTYPE html) (html (body "Hey")))) | ||||||
|  |                 '(*TOP* "" (html (body "Hey")))) | ||||||
|   ; check (& x) sequences are preserved |   ; check (& x) sequences are preserved | ||||||
|   (check-equal? (update-tree (λ (e t a c) (list t a c)) '(body "Hey" (& nbsp) (a (@ (href "/"))))) |   (check-equal? (update-tree (λ (e t a c) (list t a c)) '(body "Hey" (& nbsp) (a (@ (href "/"))))) | ||||||
|                 '(body "Hey" (& nbsp) (a (@ (href "/")))))) |                 '(body "Hey" (& nbsp) (a (@ (href "/")))))) | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue