X-Git-Url: http://git.cielonegro.org/gitweb.cgi?p=Rakka.git;a=blobdiff_plain;f=Rakka%2FPage.hs;h=24f037bc4a31096cd9f7c60b527062fce3dda1e9;hp=e396c1b32915fa29568e84c2b26a1ae0c2c18a35;hb=bea735cd0409bc96e2962ee9e97cae5f7bf4d585;hpb=0fd09a6316e0be424e6eb454124f0cab6ade40b4 diff --git a/Rakka/Page.hs b/Rakka/Page.hs index e396c1b..24f037b 100644 --- a/Rakka/Page.hs +++ b/Rakka/Page.hs @@ -1,3 +1,8 @@ +-- -*- coding: utf-8 -*- +{-# LANGUAGE + Arrows + , UnicodeSyntax + #-} module Rakka.Page ( PageName , Page(..) @@ -27,27 +32,31 @@ module Rakka.Page , parseXmlizedPage ) where +import Control.Arrow +import qualified Data.Ascii as Ascii +import qualified Data.Text as T import qualified Data.ByteString.Lazy as Lazy (ByteString) import qualified Data.ByteString.Lazy as L hiding (ByteString) import qualified Data.ByteString.Lazy.Char8 as L8 hiding (ByteString) -import Data.Char -import Data.Map (Map) +import Data.Char +import Data.Map (Map) import qualified Data.Map as M -import Data.Time +import Data.Time import qualified Data.Time.W3C as W3C -import Network.HTTP.Lucu hiding (redirect) -import Network.URI hiding (fragment) -import OpenSSL.EVP.Base64 -import Rakka.Utils -import Subversion.Types -import System.FilePath.Posix -import Text.XML.HXT.XPath +import Network.HTTP.Lucu hiding (redirect) +import Network.URI hiding (fragment) +import Rakka.Utils +import Subversion.Types +import System.FilePath.Posix +import Text.XML.HXT.DOM.TypeDefs +import Text.XML.HXT.XPath +import Text.XML.HXT.Arrow.XmlArrow +import Prelude.Unicode +type PageName = T.Text -type PageName = String - -type LanguageTag = String -- See RFC 3066: http://www.ietf.org/rfc/rfc3066.txt -type LanguageName = String -- i.e. "日本語" +type LanguageTag = Ascii -- See RFC 3066: http://www.ietf.org/rfc/rfc3066.txt +type LanguageName = T.Text -- i.e. "日本語" data Page @@ -363,15 +372,10 @@ parseEntity , entityContent = content , entityUpdateInfo = updateInfo } - where - dropWhitespace :: String -> String - dropWhitespace [] = [] - dropWhitespace (x:xs) - | x == ' ' || x == '\t' || x == '\n' - = dropWhitespace xs - | otherwise - = x : dropWhitespace xs +dropWhitespace :: String -> String +{-# INLINE dropWhitespace #-} +dropWhitespace = filter ((¬) ∘ isSpace) parseUpdateInfo :: (ArrowXml a, ArrowChoice a) => a XmlTree UpdateInfo parseUpdateInfo @@ -383,5 +387,3 @@ parseUpdateInfo uiOldRevision = oldRev , uiOldName = oldName } - -