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

スポンサーサイト

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

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

とりあえず元々の機能を確認します。

ver.0
 標準入力からリストを受け取り、HTMLへと生成する
ver.1
 src.txtというファイルからリストを受け取り、htmlsrc.txtというファイルへ出力する

また新しく次のようなことが出来るようになりました。


  • ドラッグしてきた1つのファイルのパスを取得できる
  • ドラッグしてきた複数のファイルのパスを取得して標準出力へ出力できる
  • 絶対パスからファイル名に相当する場所を拡張子付きで取り出す


以上のことからVer.2として次のようなものを目指します。
ver.2
 ドラッグしてきたテキストファイルからリストを読み込み、HTMLへと整形する。
 出力先はhtml_(入力ファイル名.txt).txtという形にする

こんな感じです。
どうせなら複数ファイル同時読み込み同時出力を目指してもいいですが
とりあえず簡単なところで1ファイル限定と行きます。
さて、過去数回を参考にすると、main関数は次のように書くことが出来ます

※補足 次の関数はそれぞれ次のような関数でした。

getHtml
 一行ずつHTMLへ整形する関数
yenToSpace、split、reverse、head
 円マークをスペースに変える、スペースで絶対パスを分割する、処理をしてファイル名を取り出す

import IO
import System

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

main = do args <- getArgs
let ddfilepath = head args
ddfilename = head . reverse . words $ split ddfilepath
output = optemp ++ ddfilename ++ ".txt"
infile <- readFile ddfilepath
putStrLn infile
outhandle <- openFile output AppendMode
hPutStrLn outhandle header
hPutStr outhandle $ unlines $ map getHtml $ lines infile
hClose outhandle


今まで作成した関数をうまく使っています。
また記述が長くなりそうな部分はletを使ってローカル変数を宣言します。

ddfilepath
 D&Dしてきたファイルの絶対パス
ddfilename
 D&Dしてきたファイルのファイル名
output
 D&Dしてきたファイルの名前から作った出力先ファイル名

さて、これで準備完了です。
コンパイルしてsrc.txtを適当に用意します。

例 src_haskell.txt
  src_java.txt


srcには一行が 記事番号+タブ+タイトル で構成された情報が入っているのでした。
ここではそれぞれJavaとHaskellの記事についてリストを作ってみました。

これを出来たばかりの実行ファイルへD&Dすると

出力 html_src_haskel.txt.txt
   html_src_java.txt.txt


といったようなファイルが実行ファイルと同じディレクトリに作成されました。
作成されたHTMLソースを貼り付けて終了です。


※補足
二重拡張子、あまりかっこよくないですね。
簡単にとれるのですけど・・・

簡単に言うと、パターンマッチにピリオドも追加してスペースに変化させます。
するとファイル名の部分は一番後ろの一つ前になるので、そのリスト path を

path = ["d:", "taki", "program", "haskell", "blog", "src", "txt"]
head .tail . reverse path


のようにすればいい。(分かってるなら実装しなさい)


次回からはまた別のことをするか、それともまだ何かちょこまかするか。
おそらくどちらかです。




category of Haskell:
【Haskell】とても簡単なHaskellプログラムについて
【Haskell】標準入力(stdin)を読み込むために
【Haskell】結構頻繁に使う関数などの話
【Haskell】高階関数と型の定義について
【Haskell】リストの処理について
【Haskell】コマンドライン引数を得る方法
【Haskell】C言語の構造体のようなものをHaskellで利用する
【Haskell】Haskellを使ってブログに微妙に役立つプログラムを書きたい(Ver.0)
【Haskell】Haskellを使ってブログに微妙に役立つプログラムを書きたい(Ver.1)
【Haskell】コマンドライン引数の取得を活用する。
【Haskell】絶対パスからファイル名だけを取り出す
関連記事
スポンサーサイト

Comment

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

Page Top

Trackback

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

Page Top

訪問者

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

プロフィール

parabola0

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

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

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

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