1. Top » 
  2. スポンサー広告 » 
  3. 【Haskell】Haskellを使ってブログに微妙に役立つプログラムを書きたい(Ver.0)
  4. プログラミング全般 » 
  5. Haskell » 
  6. 【Haskell】Haskellを使ってブログに微妙に役立つプログラムを書きたい(Ver.0)

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
  • Genre:

【Haskell】Haskellを使ってブログに微妙に役立つプログラムを書きたい(Ver.0)

Haskellの話のように、連続的に書いているような記事はよくあります。
そのとき、たとえばHaskellの記事であれば


category of Haskell:
【Haskell】とても簡単なHaskellプログラムについて
【Haskell】標準入力(stdin)を読み込むために
【Haskell】結構頻繁に使う関数などの話
【Haskell】高階関数と型の定義について
【Haskell】リストの処理について
【Haskell】コマンドライン引数を得る方法
【Haskell】C言語の構造体のようなものをHaskellで利用する


こんな感じの記事リストを付けていることがある。
実はこのリストは、いつもちまちまとHTMLのコードを自分で手打ちしている。
これを円滑に作成出来たらいいなぁと思ったことがあった。
せっかくHaskellを勉強しているので、これを題材としてプログラムを書いてみる。


このリストを作成するときに、次のような記事番号とタブ、記事タイトルが書かれたテキストファイルを適当に作る。

3	【Haskell】とても簡単なHaskellプログラムについて
8 【Haskell】標準入力(stdin)を読み込むために
36 【Haskell】結構頻繁に使う関数などの話
37 【Haskell】高階関数と型の定義について
489 【Haskell】リストの処理について
509 【Haskell】C言語の構造体のようなものをHaskellで利用する

このリストから上のリンクリストを作成するようなHaskellプログラムを作成する。
とりあえず簡単にするために、標準入力からこのリストを読み込み、標準出力へ出力する。
つまり

mbh.exe < src.txt > href.txt

のように使えるようにする。
まずは次のようにヘッダの部分(水平線の表示)と、リンクのひな形部分を定義しておく。

header = "<hr size=\"1\">category of Haskell:"
hreftp = "http://parabola0.blog86.fc2.com/blog-entry-"

標準入力を読むため、次のように書く。

main = do cs <- getContents
putStrLn header
putStrLn $ unlines $ map getHtml $ lines cs

標準入力から得られる上のテキストファイルのリストを一つずつ処理する。
つまり数値+タブ+タイトルの文字列からHTMLのリンクタグを返す関数getHtmlを作る。

getHtml :: String -> String
getHtml h = let wh = words h
number = head $ wh
title = head $ tail $ wh
in do "<a href=\""
++ hreftp
++ number
++ ".html\"><strong>" ++ title ++ "</strong></a>"

letなど、多少適当に書いていると思う。
(まだここら辺はあまりなれていないのでよく分からない感じもあったり)
これを利用すると次のようなHTMLのソースが出力される。

<hr size="1">category of Haskell:
<a href="http://parabola0.blog86.fc2.com/blog-entry-3.html"><strong>【Haskell】とても簡単なHaskellプログラムについて</strong></a>
<a href="http://parabola0.blog86.fc2.com/blog-entry-8.html"><strong>【Haskell】標準入力(stdin)を読み込むために</strong></a>
<a href="http://parabola0.blog86.fc2.com/blog-entry-36.html"><strong>【Haskell】結構頻繁に使う関数などの話</strong></a>
<a href="http://parabola0.blog86.fc2.com/blog-entry-37.html"><strong>【Haskell】高階関数と型の定義について</strong></a>
<a href="http://parabola0.blog86.fc2.com/blog-entry-489.html"><strong>【Haskell】リストの処理について</strong></a>
<a href="http://parabola0.blog86.fc2.com/blog-entry-509.html"><strong>【Haskell】C言語の構造体のようなものをHaskellで利用する</strong></a>

これをコピペすると、はいブログで使ってるようなリストのできあがり。


category of Haskell:
【Haskell】とても簡単なHaskellプログラムについて
【Haskell】標準入力(stdin)を読み込むために
【Haskell】結構頻繁に使う関数などの話
【Haskell】高階関数と型の定義について
【Haskell】リストの処理について
【Haskell】コマンドライン引数を得る方法
【Haskell】C言語の構造体のようなものをHaskellで利用する
関連記事
スポンサーサイト

Comment

コメントフォーム
このエントリへコメントを書く
(任意)
(任意)
(任意)
(必須) HTMLタグは使用できません
(任意) ID生成と編集に使用します
(任意) 非公開コメントにする

Page Top

Trackback

Trackback URI
http://parabola0.blog86.fc2.com/tb.php/511-2763a320 この記事にトラックバックする(FC2ブログユーザーのみ)

Page Top

訪問者

お引っこし。 http://parabola.sblog.jp/

プロフィール

parabola0

Author:parabola0
Twitter用ですが…。
プロフィール

最新記事
最新コメント
最新トラックバック
カテゴリ
月別アーカイブ
検索フォーム
リンク

このブログをリンクに追加する

QRコード
QRコード
RSSリンクの表示
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。