#:g1: cl-qprintの紹介

Posted 2014-10-22 15:00:00 GMT

(LISP Library 365参加エントリ)

 LISP Library 365 の296日目です。

cl-qprintとはなにか

 cl-qprintは、Robert Marlow氏とMax Rottenkolber氏によるRFC 2045のQuoted-Printableを扱うライブラリです。

パッケージ情報

パッケージ名cl-qprint
Quicklisp
CLiKiCLiki: cl-qprint
Quickdocscl-qprint | Quickdocs
CL Test Grid: ビルド状況cl-qprint | CL Test Grid

インストール方法

(ql:quickload :cl-qprint)

試してみる

 どんな関数があるかは、Quickdocsで確認できます。

 内容はシンプルにencodeとdecodeのみ。
入力にはオクテットかオクテットのストリームが使えます。

(qprint:encode (*:string-to-octets "Now's the time for all folk to come to the aid of their country."))
;=>  "Now's=20the=20time=20for=20all=20folk=20to=20come=20to=20the=20aid=20of=20th=^M
;    eir=20country."

(qprint:decode (qprint:encode (map 'vector #'char-code "Now's the time for all folk to come to the aid of their country."))) ;=> #(78 111 119 39 115 32 116 104 101 32 116 105 109 101 32 102 111 114 32 97 108 ; 108 32 102 111 108 107 32 116 111 32 99 111 109 101 32 116 111 32 116 104 101 ; 32 97 105 100 32 111 102 32 116 104 101 105 114 32 99 111 117 110 116 114 121 ; 46)

(with-open-stream (in (*:make-byte-array-input-stream (*:string-to-octets "Now's the time for all folk to come to the aid of their country."))) (qprint:encode in)) ;=> "Now's=20the=20time=20for=20all=20folk=20to=20come=20to=20the=20aid=20of=20th=^M ; eir=20country."

(with-open-stream (in (*:make-byte-array-input-stream (*:string-to-octets "おはよう日本おはよう日本おはよう日本"))) (qprint:encode in)) ;=> "=E3=81=8A=E3=81=AF=E3=82=88=E3=81=86=E6=97=A5=E6=9C=AC=E3=81=8A=E3=81=AF=E3=^M ; =82=88=E3=81=86=E6=97=A5=E6=9C=AC=E3=81=8A=E3=81=AF=E3=82=88=E3=81=86=E6=97=^M ; =A5=E6=9C=AC"

(*:octets-to-string (qprint:decode (qprint:encode (*:string-to-octets "おはよう日本おはよう日本おはよう日本")))) ;=> "おはよう日本おはよう日本おはよう日本"

まとめ

 今回は、cl-qprintを紹介してみました。
一発物は紹介が楽です。

comments powered by Disqus