speed up blurb generation by not using subst
1 files changed, 37 insertions(+), 21 deletions(-)

M site.arc
M site.arc +37 -21
@@ 350,7 350,7 @@ title, url-slug, body."
                 (tag (div class "publication-date")
                      (para (sortable-date-to-readable-date it))))
          (whilet line (readline infile-after-options)
-                 (prn line)))
+           (prn line)))
     (when mailing-list-div
       (prn mailing-list-div))
     (prn-tag-block-for-page options tag-map))

          
@@ 382,7 382,12 @@ title, url-slug, body."
 
 (def prn-frontpage (entry-filepaths output-folder navbar-div analytics-script config)
   (withs (sorted-options (get-sorted-options-for-files entry-filepaths)
-          public-sorted-options (keep page-is-public sorted-options))
+          public-sorted-options (keep page-is-public sorted-options)
+          frontpage-blurbs (instring (tostring
+                                       (prn)
+                                       (each option public-sorted-options
+                                         (awhen option!frontpage
+                                           (prn (make-frontpage-blurb option)))))))
       (w/outfile dest (+ output-folder "index.html")
                  (w/stdout dest
                            (prn-html-page

          
@@ 390,32 395,43 @@ title, url-slug, body."
                             "index"
                             navbar-div
                             (obj)
-                            (instring (tostring
-                                       (prn)
-                                       (each option public-sorted-options
-                                             (awhen option!frontpage
-                                                    (prn (make-frontpage-blurb option))))))
+                            frontpage-blurbs
                             analytics-script
                             config
                             nil
                             ;;don't put a mailing list on the front page.
                             nil)))))
 
+(def link-blurb (blurb url-slug)
+  (with (input-chars (coerce blurb 'cons)
+         output nil)
+    (while input-chars
+           (if (and (is (car input-chars)
+                        #\<)
+                    (is (cadr input-chars)
+                        #\a)
+                    (is (car (cddr input-chars))
+                        #\>))
+               (do (push (string "<a href=\""
+                                 url-slug
+                                 "\" class=\"primary-blurb-link\">")
+                         output)
+                   (= input-chars
+                      (cddr (cdr input-chars))))
+               (push (pop input-chars) output)))
+    (apply string (rev output))))
+
 (def make-frontpage-blurb (options)
-  (withs (raw-blurb options!frontpage)
-    (subst "<a>"
-           (string "<a href=\""
-                   options!url-slug
-                   "\" class=\"primary-blurb-link\">")
-           (if (and (headmatch "<p>" raw-blurb)
-                    (endmatch "</p>" raw-blurb))
-               raw-blurb
-               (tostring (tag p
-                              (awhen options!date
-                                (tag em
-                                     (pr it))
-                                (pr " &mdash; "))
-                              (pr raw-blurb)))))))
+  (withs (linked-blurb (link-blurb options!frontpage options!url-slug))
+    (if (and (headmatch "<p>" linked-blurb)
+             (endmatch "</p>" linked-blurb))
+        linked-blurb
+        (tostring (tag p
+                       (awhen options!date
+                         (tag em
+                              (pr it))
+                         (pr " &mdash; "))
+                       (pr linked-blurb))))))
 
 (def prn-codegen-page (title url-slug body-text analytics-script page-specific-headers config)
   (prn-page title url-slug body-text analytics-script page-specific-headers config))