From 8f473a2aea856759b0cf9b5fbc9bd6b59df3488f Mon Sep 17 00:00:00 2001 From: Linus Nordberg Date: Mon, 27 Jul 2009 13:43:26 +0200 Subject: * src/playground.lisp: Add fun for reading from file instead of network socket. Add small pattern matching example (fare-matcher). --- src/playground.lisp | 37 +++++++++++++++++++++++++++++++++++-- 1 file changed, 35 insertions(+), 2 deletions(-) diff --git a/src/playground.lisp b/src/playground.lisp index bc11db6..4936cd0 100644 --- a/src/playground.lisp +++ b/src/playground.lisp @@ -78,17 +78,50 @@ (usocket:socket-close sock)) ;;;; -(defun play () - (let ((reader (new-reader "victoria.tug" 50001)) +(defun read-stream-into-list (host port) + (let ((reader (new-reader host port)) (xmls-builder (cxml-xmls:make-xmls-builder))) (do ((e (next-xml-blurb reader "BGP_MESSAGE") (next-xml-blurb reader "BGP_MESSAGE"))) ((null e)) (print (cxml:parse e xmls-builder))) (close-reader))) + +;; +(let ((s nil)) + (defun file-reader (fn) + (when s + (close s)) + (setf s (open fn :element-type '(unsigned-byte 8))) + (lambda (n) + (read-byte s nil))) + (defun close-file () + (close s))) +;; +(defun read-file-into-list (fn) + (let ((reader (file-reader fn)) + (xmls-builder (cxml-xmls:make-xmls-builder))) + (do ((e (next-xml-blurb reader "BGP_MESSAGE") + (next-xml-blurb reader "BGP_MESSAGE"))) + ((null e)) + (print (cxml:parse e xmls-builder))) + (close-file))) ;; (next-xml-blurb (new-reader "victoria.tug.nordu.net" 50001) "BGP_MESSAGE") +;;;; Pattern matching using fare-matcher. +(require :fare-matcher) +(let ((expr '(foo bar))) + (letm + (list a b) ;pattern + expr + (list a b))) +(let ((expr '(foo kaka bar))) + (match + expr + ((list a b) (list 'plain a b)) + ((list a 'kaka b) (list 'cookie a b)))) + ;;;; db ;; SQL "select * from bgp_message where timestamp != 0 order by id desc limit 3;" -- cgit v1.1