functions: Add read-org-sbfs.
This commit is contained in:
parent
45e4feaee0
commit
17ffa3eb81
1 changed files with 17 additions and 1 deletions
|
@ -41,7 +41,8 @@
|
||||||
[tbf-tabulate (-> tbf? (listof (listof (or/c 0 1))))]
|
[tbf-tabulate (-> tbf? (listof (listof (or/c 0 1))))]
|
||||||
[tbf-tabulate*/boolean (-> (listof tbf?) (listof (listof boolean?)))]
|
[tbf-tabulate*/boolean (-> (listof tbf?) (listof (listof boolean?)))]
|
||||||
[sbf (-> (vectorof number?) tbf?)]
|
[sbf (-> (vectorof number?) tbf?)]
|
||||||
[list->sbf (-> (listof number?) sbf?)])
|
[list->sbf (-> (listof number?) sbf?)]
|
||||||
|
[read-org-sbfs (->* (string?) (#:headers boolean?) (listof sbf?))])
|
||||||
;; Predicates
|
;; Predicates
|
||||||
(contract-out
|
(contract-out
|
||||||
[sbf? (-> any/c boolean?)]))
|
[sbf? (-> any/c boolean?)]))
|
||||||
|
@ -391,3 +392,18 @@
|
||||||
|
|
||||||
(module+ test
|
(module+ test
|
||||||
(check-equal? (list->sbf '(1 -1)) (tbf '#(1 -1) 0)))
|
(check-equal? (list->sbf '(1 -1)) (tbf '#(1 -1) 0)))
|
||||||
|
|
||||||
|
;;; Reads a list of SBF from an Org-mode string containing a sexp,
|
||||||
|
;;; containing a list of lists of numbers. If headers is #t, drops
|
||||||
|
;;; the first list, supposing that it contains the headers of the
|
||||||
|
;;; table.
|
||||||
|
;;;
|
||||||
|
;;; The input is typically what read-org-sexp reads.
|
||||||
|
(define (read-org-sbfs str #:headers [headers #f])
|
||||||
|
(define sexp (read-org-sexp str))
|
||||||
|
(define sexp-clean (cond [headers (cdr sexp)] [else sexp]))
|
||||||
|
(map list->sbf sexp-clean))
|
||||||
|
|
||||||
|
(module+ test
|
||||||
|
(check-equal? (read-org-sbfs "((1 1) (1 -1))")
|
||||||
|
(list (tbf '#(1 1) 0) (tbf '#(1 -1) 0))))
|
||||||
|
|
Loading…
Reference in a new issue