Archive for 2018年1月|Monthly archive page

DOS コマンド版 get-url を使ってみる。

 昨日紹介した 拙作 DOS コマンド版 get-url を newLISP で使ってみます。
 Wikipedia から今日の記念日・年中行事を取り出して見ましょう。
 先ずはスクリプトから、

(define (whatstoday (day (1 2 (now ((now) -2)))))
  (letn (str (apply append (exec (string "get-url http://ja.wikipedia.org/wiki/"
                              (day 0)
                              "%E6%9C%88"
                              (day 1)
                              "%E6%97%A5" " UTF8 "
                              (if utf8 "UTF8" "")
                              )))
         pos (find {id=".E8.A8.98.E5.BF.B5.E6.97.A5.E3.83.BB.E5.B9.B4.E4.B8.AD.E8.A1.8C.E4.BA.8B">} str)
         pos (find "" str 1 pos)
         pos (+ pos 5)
         kday (0 (find "<h" (pos str)) (pos str))
         kparse (xml-parse kday (+ 1 2 4 8))
         res '())
        (dolist (li-pos (ref-all 'li kparse))
          (setf (li-pos -1) (+ $it 1))
          (let (tmp "")
            (dolist (x (ref-all "TEXT" (kparse li-pos)))
              (setf (x -1) (+ $it 1))
              (push ((kparse li-pos) x) tmp -1))
              (unless (null? tmp)
                (push tmp res -1))))
        res))

 UTF8 版 newLISP での動作は、

> (whatstoday)
("防災とボランティアの日(日本)1995年に発生した阪神・淡路大震災(兵庫県南部地震)では、国や地方自治体の危機管理体制の不備をはじめとするさまざまな問題が浮き彫りにされた一方で、ボランティア活動が活発化し「ボランティア元年」とも言われた。俳句の世界では季語「阪神忌」が存在する。" 
 "おむすびの日(日本)JA等でつくる「ごはんを食べよう国民運動推進協議会」が2000年11月に制定。阪神大震災ではボランティアの炊き出しで被災者が励まされたことから。" 
 "ひょうご安全の日(日本兵庫県)兵庫県が2006年に制定。" "尾崎紅葉祭(日本静岡県熱海市)尾崎紅葉の『金色夜叉』の中で、この日に熱海の海岸で主人公の貫一が恋人のお宮と別れる記述があることから。")
> 

 こんな感じ(1月17日)。
 ansi 版 newLISP なら

> (whatstoday '(1 18))
("\131^\131C\137\164\141\145\140R\130\204\147\250\129i\131^\131C\129j" "\147s\131o\131X\130\204\147\250\129i\147\250\150{\129j1924\148N1\140\14218\147\250\130\201\147\140\139\158\142s\137c\143\230\141\135\131o\131X\130\170\137c\139\198\130\240\138J\142n\130\181\130\189\130\177\130\198\130\201\151R\151\136\130\181\129A\147\140\139\158\147s\140\240\146\202\139\199\130\170\144\167\146\232\129B" 
 "118\148\212\130\204\147\250\129i\147\250\150{\129j\139\217\139}\146\202\149\241\151p\147d\152b\148\212\141\134118\148\212\130\204\146m\150\188\147x\140\252\143\227\130\204\130\189\130\223\129A2011\148N1\140\14218\147\250\130\230\130\232\138C\143\227\149\219\136\192\146\161\130\170\144\167\146\232\129B")
> 

 以上、如何でしょうか?