23
23. セクション構造
記事中に含まれるセクション名とそのレベル(例えば"== セクション名 =="なら1)を表示せよ
23.hs
{-# LANGUAGE OverloadedStrings, DeriveGeneric #-} import Data.Aeson as A import Control.Applicative import System.IO.UTF8 as I8 import System.Environment import Data.Maybe import Data.ByteString.Lazy.UTF8 as B import GHC.Generics import Text.Regex.Posix import Prelude as P data Article = Article { text :: String, title :: String } deriving (Eq, Show, Generic) instance FromJSON Article main = do filename <- head <$> getArgs body <- fromString <$> I8.readFile filename I8.writeFile "23.txt" $ unlines $ map f $ filter isHeadline $ concatMap P.lines $ map (text . fromJust . A.decode) $ B.lines $ body where f x = headline x ++ "," ++ depth x isHeadline = ((=~ ("^={2,6}.*={2,6}" :: String)) :: String -> Bool) headline = filter (\x -> (x /= ' ') && (x /= '=')) depth = show . P.length . ((=~ ("=+" :: String)) :: String -> String)