Linkify manpage cross-references in HTML
This commit is contained in:
		
							parent
							
								
									1792ddc8ae
								
							
						
					
					
						commit
						8d14fa2997
					
				|  | @ -153,7 +153,38 @@ | ||||||
|     (concat (recurse f1 f2 words) (change-font old)))) |     (concat (recurse f1 f2 words) (change-font old)))) | ||||||
| 
 | 
 | ||||||
| (defmacro 'BI (lambda (BI . args) (with-fonts "B" "I" args))) | (defmacro 'BI (lambda (BI . args) (with-fonts "B" "I" args))) | ||||||
| (defmacro 'BR (lambda (BR . args) (with-fonts "B" "R" args))) | 
 | ||||||
|  | (define (man-page-filename page section) | ||||||
|  |   (string-append page "." section)) | ||||||
|  | 
 | ||||||
|  | (define (hyperlink page section body) | ||||||
|  |   (let ((url (man-page-filename page section))) | ||||||
|  |     (format #f "<a href=\"~a\">~a</a>" url body))) | ||||||
|  | 
 | ||||||
|  | (define (parse-section-in-parentheses str) | ||||||
|  |   (let* ((n (string-length str)) | ||||||
|  |          (r (and (>= n 3) | ||||||
|  |                  (char=? #\( (string-ref str 0)) | ||||||
|  |                  (char<=? #\1 (string-ref str 1)) | ||||||
|  |                  (char<=? (string-ref str 1) #\9) | ||||||
|  |                  (cond ((char=? #\) (string-ref str (- n 1))) | ||||||
|  |                         1) | ||||||
|  |                        ((and (>= n 4) | ||||||
|  |                              (char=? #\) (string-ref str (- n 2))) | ||||||
|  |                              (char=? #\, (string-ref str (- n 1)))) | ||||||
|  |                         2) | ||||||
|  |                        (else | ||||||
|  |                         #f))))) | ||||||
|  |     (and r (substring str 1 (- n r))))) | ||||||
|  | 
 | ||||||
|  | (defmacro 'BR | ||||||
|  |   (lambda (BR . args) | ||||||
|  |     (let ((section (and (= (length args) 2) | ||||||
|  |                         (parse-section-in-parentheses (list-ref args 1))))) | ||||||
|  |       (if section | ||||||
|  |           (hyperlink (list-ref args 0) section (with-fonts "B" "R" args)) | ||||||
|  |           (with-fonts "B" "R" args))))) | ||||||
|  | 
 | ||||||
| (defmacro 'IB (lambda (IB . args) (with-fonts "I" "B" args))) | (defmacro 'IB (lambda (IB . args) (with-fonts "I" "B" args))) | ||||||
| (defmacro 'IR (lambda (IR . args) (with-fonts "I" "R" args))) | (defmacro 'IR (lambda (IR . args) (with-fonts "I" "R" args))) | ||||||
| (defmacro 'RB (lambda (RB . args) (with-fonts "R" "B" args))) | (defmacro 'RB (lambda (RB . args) (with-fonts "R" "B" args))) | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue