diff options
Diffstat (limited to '2d/live-reload.scm')
-rw-r--r-- | 2d/live-reload.scm | 54 |
1 files changed, 0 insertions, 54 deletions
diff --git a/2d/live-reload.scm b/2d/live-reload.scm deleted file mode 100644 index 265fa1f..0000000 --- a/2d/live-reload.scm +++ /dev/null @@ -1,54 +0,0 @@ -;;; guile-2d -;;; Copyright (C) 2014 David Thompson <dthompson2@worcester.edu> -;;; -;;; This program is free software: you can redistribute it and/or -;;; modify it under the terms of the GNU General Public License as -;;; published by the Free Software Foundation, either version 3 of the -;;; License, or (at your option) any later version. -;;; -;;; This program is distributed in the hope that it will be useful, -;;; but WITHOUT ANY WARRANTY; without even the implied warranty of -;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -;;; General Public License for more details. -;;; -;;; You should have received a copy of the GNU General Public License -;;; along with this program. If not, see -;;; <http://www.gnu.org/licenses/>. - -;;; Commentary: -;; -;; Live asset reloading. -;; -;;; Code: - -(define-module (2d live-reload) - #:use-module (srfi srfi-1) - #:use-module (2d agenda) - #:use-module (2d coroutine) - #:use-module (2d signal) - #:export (live-reload-interval - live-reload)) - -(define live-reload-interval 120) - -(define (live-reload proc) - "Return a new procedure that re-applies PROC whenever the associated -file is modified. The new procedure returns a signal that contains -the return value of PROC. The first argument to PROC must be a -filename string." - (lambda (filename . args) - (define (load-asset) - (apply proc filename args)) - - (define (current-mtime) - (stat:mtime (stat filename))) - - (let ((asset (make-signal (load-asset)))) - (coroutine - (let loop ((last-mtime (current-mtime))) - (wait live-reload-interval) - (let ((mtime (current-mtime))) - (when (> mtime last-mtime) - (signal-set! asset (load-asset))) - (loop mtime)))) - asset))) |