, encodePageName
, decodePageName
- , entityFileName'
- , defaultFileName
-
, mkPageURI
, mkPageFragmentURI
, mkObjectURI
entityName :: !PageName
, entityType :: !MIMEType
, entityLanguage :: !(Maybe LanguageTag)
- , entityFileName :: !(Maybe String)
, entityIsTheme :: !Bool -- text/css 以外では無意味
, entityIsFeed :: !Bool -- text/x-rakka 以外では無意味
, entityIsLocked :: !Bool
isEntity :: Page -> Bool
-isEntity (Entity _ _ _ _ _ _ _ _ _ _ _ _ _ _ _) = True
-isEntity _ = False
+isEntity (Entity _ _ _ _ _ _ _ _ _ _ _ _ _ _) = True
+isEntity _ = False
pageName :: Page -> PageName
encodeFragment = escapeURIString isSafeChar . UTF8.encodeString
-entityFileName' :: Page -> String
-entityFileName' page
- = fromMaybe (defaultFileName (entityType page) (entityName page)) (entityFileName page)
-
-
-defaultFileName :: MIMEType -> PageName -> String
-defaultFileName pType pName
- = let baseName = takeFileName pName
- in
- case pType of
- MIMEType "text" "x-rakka" _ -> baseName <.> "rakka"
- MIMEType "text" "css" _ -> baseName <.> "css"
- _ -> baseName
-
-
mkPageURI :: URI -> PageName -> URI
mkPageURI baseURI name
= baseURI {
<page name="Foo/Bar"
type="text/x-rakka"
lang="ja" -- 存在しない場合もある
- fileName="bar.rakka" -- 存在しない場合もある
isTheme="no" -- text/css の場合のみ存在
isFeed="no" -- text/x-rakka の場合のみ存在
isLocked="no"
Just x -> sattr "lang" x
Nothing -> none
)
- += ( case entityFileName page of
- Just x -> sattr "fileName" x
- Nothing -> none
- )
+= ( case entityType page of
MIMEType "text" "css" _
-> sattr "isTheme" (yesOrNo $ entityIsTheme page)
mimeTypeStr <- withDefault (getXPathTreesInDoc "/page/@type/text()" >>> getText) "" -< tree
lang <- maybeA (getXPathTreesInDoc "/page/@lang/text()" >>> getText) -< tree
- fileName <- maybeA (getXPathTreesInDoc "/page/@filename/text()" >>> getText) -< tree
isTheme <- (withDefault (getXPathTreesInDoc "/page/@isTheme/text()" >>> getText) "no"
>>> parseYesOrNo) -< tree
entityName = name
, entityType = mimeType
, entityLanguage = lang
- , entityFileName = fileName
, entityIsTheme = isTheme
, entityIsFeed = isFeed
, entityIsLocked = isLocked