import Control.Arrow.Unicode
import qualified Codec.Binary.UTF8.Generic as UTF8
import Control.Monad.Trans
+import qualified Data.ByteString.Char8 as C8
import Data.Maybe
import Data.Monoid.Unicode
import Data.Text (Text)
import qualified Data.Text as T
import Data.Time
import qualified Data.Time.RFC1123 as RFC1123
+import qualified Data.Time.W3C as W3C
import Network.HTTP.Lucu
import Network.URI hiding (query, fragment)
import Prelude.Unicode
import Rakka.Storage
import Rakka.SystemConfig
import Rakka.Utils
-import Rakka.W3CDateTime
import Rakka.Wiki.Engine
import System.FilePath
import Text.HyperEstraier hiding (getText)
+= attr "name" (arr (T.unpack ∘ hpPageName) ⋙ mkText)
+= attr "lastModified" ( arrIO (utcToLocalZonedTime ∘ hpLastMod)
⋙
- arr formatW3CDateTime
+ arr W3C.format
⋙
mkText
)
+= sattr "class" "date"
+= ( getAttrValue "lastModified"
⋙
- arr (zonedTimeToUTC . fromJust . parseW3CDateTime)
+ arr (zonedTimeToUTC . fromJust . W3C.parse)
⋙
arrIO utcToLocalZonedTime
⋙
= arr $ \ (query, (order, section))
-> baseURI {
uriPath = uriPath baseURI </> "search.html"
- , uriQuery = '?' : mkQueryString ( [ ("q" , query)
- , ("from", show $ section * resultsPerSection)
- , ("to" , show $ (section + 1) * resultsPerSection - 1)
- ]
- ++
- case order of
- Just o -> [("order", o)]
- Nothing -> []
- )
+ , uriQuery = '?' : C8.unpack (mkQueryString ( [ ("q" , T.pack query)
+ , ("from", T.pack ∘ show $ section ⋅ resultsPerSection )
+ , ("to" , T.pack ∘ show $ (section + 1) ⋅ resultsPerSection - 1)
+ ]
+ ++
+ case order of
+ Just o -> [("order", T.pack o)]
+ Nothing -> []
+ ))
}
uriToText :: ArrowXml a => a URI XmlTree