[racket] Injecting HTML into a scribble document?

From: Danny Yoo (dyoo at cs.wpi.edu)
Date: Thu Jun 23 13:48:26 EDT 2011

Followup.  Ok, so I've written the following small library for myself:

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; scribble-helpers.rkt
#lang racket/base
(provide inject-javascript)
(require scribble/core
         scribble/html-properties
         scriblib/render-cond)

;; Adds JavaScript if we're rendering in HTML.
(define (inject-javascript . body)
  (cond-element
   [latex ""]
   [html (make-element (make-style #f (list (make-script-property
"text/javascript"
                                                           body)))
                '())]
   [text ""]))
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;


And now, in my main document, I can do:

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
@inject-javascript|{
  var _gaq = _gaq || [];
  _gaq.push(['_setAccount', 'UA-24146890-1']);
  _gaq.push(['_trackPageview']);

  (function() {
    var ga = document.createElement('script'); ga.type =
'text/javascript'; ga.async = true;
    ga.src = ('https:' == document.location.protocol ? 'https://ssl' :
'http://www') + '.google-analytics.com/ga.js';
    var s = document.getElementsByTagName('script')[0];
s.parentNode.insertBefore(ga, s);
  })();
}|

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;


And that seems to be doing the trick for me.



Thanks!


Posted on the users mailing list.