Introduction
Introduction Statistics Contact Development Disclaimer Help
[CONSISTENCY] colors are declared in a cleaner way - clic - Clic is an command …
git clone git://bitreich.org/clic/ git://enlrupgkhuxnvlhsf6lc3fziv5h2hhfrinws65…
Log
Files
Refs
Tags
README
LICENSE
---
commit 69e7fed7881b7f7419c7783072311b72be4212a5
parent 79b490169672f05baa3b5fab99f834e8fb7e47a9
Author: Solene Rapenne <[email protected]>
Date: Fri, 3 Nov 2017 20:19:59 +0000
[CONSISTENCY] colors are declared in a cleaner way
Diffstat:
M clic.lisp | 67 ++++++++++++++++-------------…
1 file changed, 34 insertions(+), 33 deletions(-)
---
diff --git a/clic.lisp b/clic.lisp
@@ -12,20 +12,23 @@
(format nil "~a[~a;~am" #\Escape num1 num2))
(defparameter *links* (make-hash-table))
-(defparameter *types* (list "0" "1" "2" "3" "4" "5" "6" "i"
- "h" "7" "8" "9" "+" "T" "g" "I"))
-
-;; ansi colors
-(defparameter *red* (color 1 31))
-(defparameter *white* (color 0 70))
-(defparameter *color-folder* (color 4 34))
-(defparameter *green* (color 1 32))
-(defparameter *color-file* (color 0 33))
-(defparameter *cyan* (color 0 46))
-
-(defun print-with-color(text &optional (color *white*) (line-number nil))
+(defparameter *colors* (make-hash-table))
+(defparameter *allowed-selectors* (list "0" "1" "2" "3" "4" "5" "6" "i"
+ "h" "7" "8" "9" "+" "T" "g" "I"))
+
+;; ANSI colors
+(defun addcolor(name type hue) (setf (gethash name *colors*) (color type hue)))
+(defun getcolor(name) (gethash name *colors*))
+(addcolor 'red 1 31)
+(addcolor 'white 0 70)
+(addcolor 'folder 4 34)
+(addcolor 'green 1 32)
+(addcolor 'file 0 33)
+(addcolor 'cyan 0 46)
+
+(defun print-with-color(text &optional (color 'white) (line-number nil))
"Used to display a line with a color"
- (format t "~3A| ~a~a~a~%" (if line-number line-number "") color text *white*…
+ (format t "~3A| ~a~a~a~%" (if line-number line-number "") (getcolor color) t…
(defmacro check(identifier &body code)
"Syntax to make a when easier for formatted-output func"
@@ -38,8 +41,7 @@
counting char into count
when (char= char separator)
collect
-
- ;; we look at the position of the left separator
+ ;; we look at the position of the left separator from right to left
(let ((left-separator-position (position separator text :from-end t …
(subseq text
;; if we can't find a separator at the left of the current…
@@ -56,14 +58,13 @@
;; section 3.8
(when (and
(= (length infos) 4)
- (member line-type *types* :test #'equal))
+ (member line-type *allowed-selectors* :test #'equal))
(let ((text (car infos))
(uri (cadr infos))
(host (caddr infos))
(port (parse-integer (cadddr infos))))
-
;; RFC, page 4
(check "i"
(print-with-color text))
@@ -72,13 +73,13 @@
(check "0"
(setf (gethash line-number *links*)
(make-location :host host :port port :uri uri :type line-…
- (print-with-color text *color-file* line-number))
+ (print-with-color text 'file line-number))
;; 1 directory
(check "1"
(setf (gethash line-number *links*)
(make-location :host host :port port :uri uri :type line-…
- (print-with-color text *color-folder* line-number))
+ (print-with-color text 'folder line-number))
;; 2 CSO phone-book
;; WE SKIP
@@ -86,7 +87,7 @@
;; 3 Error
(check "3"
- (print-with-color "error" *red* line-number))
+ (print-with-color "error" 'red line-number))
;; 4 BinHexed Mac file
(check "4"
@@ -118,7 +119,7 @@
;; h html link
(check "h"
- (print-with-color text *color-file* "url"))
+ (print-with-color text 'file "url"))
;; I image
(check "I" 'unimplemented)))))
@@ -126,12 +127,12 @@
(defun getpage(host port uri &optional (type "1"))
"connect and display"
-
-
;; we reset the links table
- ;; if we have a new folder
+ ;; ONLY if we have a new folder
(when (string= "1" type)
(setf *links* (make-hash-table))
+
+ ;; here we store the location for using "previous" command
(setf (gethash 0 *links*)
(make-location :host host :port port :uri uri :type type)))
@@ -139,6 +140,7 @@
(let* ((address (sb-bsd-sockets:get-host-by-name host))
(host (car (sb-bsd-sockets:host-ent-addresses address)))
(socket (make-instance 'sb-bsd-sockets:inet-socket :type :stream :pro…
+
(sb-bsd-sockets:socket-connect socket host port)
;; we open a stream for input/output
@@ -148,18 +150,17 @@
;; if the selector is 1 we omit it
(format stream "~a~%" uri)
(force-output stream)
-
+
;; for each line we receive we display it
(loop for line = (read-line stream nil nil)
counting line into line-number
- while line
- do
- (cond ((string= "1" type)
- (formatted-output line line-number))
-
- ((string= "0" type)
- (format t "~a~%" line))))))
- (format t "~aRequested gopher://~a:~a/~a~a~a~%" *cyan* host port type uri *w…
+ while line do
+ (cond
+ ((string= "1" type)
+ (formatted-output line line-number))
+ ((string= "0" type)
+ (format t "~a~%" line))))))
+ (format t "~aRequested gopher://~a:~a/~a~a~a~%" (getcolor 'cyan) host port t…
(defun g(key)
"browse to the N-th link"
You are viewing proxied material from bitreich.org. The copyright of proxied material belongs to its original authors. Any comments or complaints in relation to proxied material should be directed to the original authors of the content concerned. Please see the disclaimer for more details.