on master help sign in
Web.Util.String → {Web.Util.Url, Core.Util.String}
49989eaJasper Van der Jeugt
hakyll.cabal+2−1
@@ -65,7 +65,7 @@ library
65 strict-concurrency >= 0.2
65 strict-concurrency >= 0.2
66 exposed-modules: Hakyll
66 exposed-modules: Hakyll
67 Hakyll.Main
67 Hakyll.Main
68− Hakyll.Web.Util.String
68+ Hakyll.Web.Util.Url
69 Hakyll.Web.Preview.Server
69 Hakyll.Web.Preview.Server
70 Hakyll.Web.Preview.Poll
70 Hakyll.Web.Preview.Poll
71 Hakyll.Web.CompressCss
71 Hakyll.Web.CompressCss
@@ -85,6 +85,7 @@ library
85 Hakyll.Core.UnixFilter
85 Hakyll.Core.UnixFilter
86 Hakyll.Core.Util.Arrow
86 Hakyll.Core.Util.Arrow
87 Hakyll.Core.Util.File
87 Hakyll.Core.Util.File
88+ Hakyll.Core.Util.String
88 Hakyll.Core.ResourceProvider
89 Hakyll.Core.ResourceProvider
89 Hakyll.Core.CompiledItem
90 Hakyll.Core.CompiledItem
90 Hakyll.Core.Compiler
91 Hakyll.Core.Compiler
src/Hakyll.hs+4−2
@@ -12,6 +12,7 @@ module Hakyll
12 , module Hakyll.Core.UnixFilter
12 , module Hakyll.Core.UnixFilter
13 , module Hakyll.Core.Util.Arrow
13 , module Hakyll.Core.Util.Arrow
14 , module Hakyll.Core.Util.File
14 , module Hakyll.Core.Util.File
15+ , module Hakyll.Core.Util.String
15 , module Hakyll.Core.Writable
16 , module Hakyll.Core.Writable
16 , module Hakyll.Main
17 , module Hakyll.Main
17 , module Hakyll.Web.CompressCss
18 , module Hakyll.Web.CompressCss
@@ -24,7 +25,7 @@ module Hakyll
24 , module Hakyll.Web.RelativizeUrls
25 , module Hakyll.Web.RelativizeUrls
25 , module Hakyll.Web.Tags
26 , module Hakyll.Web.Tags
26 , module Hakyll.Web.Template
27 , module Hakyll.Web.Template
27− , module Hakyll.Web.Util.String
28+ , module Hakyll.Web.Util.Url
28 ) where
29 ) where
29
30
30import Hakyll.Core.Compiler
31import Hakyll.Core.Compiler
@@ -38,6 +39,7 @@ import Hakyll.Core.Rules
38import Hakyll.Core.UnixFilter
39import Hakyll.Core.UnixFilter
39import Hakyll.Core.Util.Arrow
40import Hakyll.Core.Util.Arrow
40import Hakyll.Core.Util.File
41import Hakyll.Core.Util.File
42+import Hakyll.Core.Util.String
41import Hakyll.Core.Writable
43import Hakyll.Core.Writable
42import Hakyll.Main
44import Hakyll.Main
43import Hakyll.Web.CompressCss
45import Hakyll.Web.CompressCss
@@ -50,4 +52,4 @@ import Hakyll.Web.Pandoc
50import Hakyll.Web.RelativizeUrls
52import Hakyll.Web.RelativizeUrls
51import Hakyll.Web.Tags
53import Hakyll.Web.Tags
52import Hakyll.Web.Template
54import Hakyll.Web.Template
53−import Hakyll.Web.Util.String
55+import Hakyll.Web.Util.Url
src/Hakyll/Web/Util/String.hs → src/Hakyll/Core/Util/String.hsrenamed+1−26
@@ -1,17 +1,14 @@
1-- | Miscellaneous string manipulation functions.
1-- | Miscellaneous string manipulation functions.
2--
2--
3−module Hakyll.Web.Util.String
3+module Hakyll.Core.Util.String
4 ( trim
4 ( trim
5 , replaceAll
5 , replaceAll
6 , splitAll
6 , splitAll
7− , toUrl
8− , toSiteRoot
9 ) where
7 ) where
10
8
11import Data.Char (isSpace)
9import Data.Char (isSpace)
12import Data.Maybe (listToMaybe)
10import Data.Maybe (listToMaybe)
13
11
14−import System.FilePath (splitPath, takeDirectory, joinPath)
15import Text.Regex.PCRE ((=~~))
12import Text.Regex.PCRE ((=~~))
16
13
17-- | Trim a string (drop spaces, tabs and newlines at both sides).
14-- | Trim a string (drop spaces, tabs and newlines at both sides).
@@ -49,25 +46,3 @@ splitAll pattern = filter (not . null) . splitAll'
49 Just (o, l) ->
46 Just (o, l) ->
50 let (before, tmp) = splitAt o src
47 let (before, tmp) = splitAt o src
51 in before : splitAll' (drop l tmp)
48 in before : splitAll' (drop l tmp)
52−
53−-- | Convert a filepath to an URL starting from the site root
54−--
55−-- Example:
56−--
57−-- > toUrl "foo/bar.html"
58−--
59−-- Result:
60−--
61−-- > "/foo/bar.html"
62−--
63−toUrl :: FilePath -> String
64−toUrl = ('/' :)
65−
66−-- | Get the relative url to the site root, for a given (absolute) url
67−--
68−toSiteRoot :: String -> String
69−toSiteRoot = emptyException . joinPath . map parent . splitPath . takeDirectory
70− where
71− parent = const ".."
72− emptyException [] = "."
73− emptyException x = x
src/Hakyll/Web/CompressCss.hs+1−1
@@ -12,7 +12,7 @@ import Control.Arrow ((>>^))
12
12
13import Hakyll.Core.Compiler
13import Hakyll.Core.Compiler
14import Hakyll.Core.ResourceProvider
14import Hakyll.Core.ResourceProvider
15−import Hakyll.Web.Util.String
15+import Hakyll.Core.Util.String
16
16
17-- | Compiler form of 'compressCss'
17-- | Compiler form of 'compressCss'
18--
18--
src/Hakyll/Web/Feed.hs+1−1
@@ -33,7 +33,7 @@ import Hakyll.Web.Page
33import Hakyll.Web.Page.Metadata
33import Hakyll.Web.Page.Metadata
34import Hakyll.Web.Template
34import Hakyll.Web.Template
35import Hakyll.Web.Template.Read.Hakyll (readTemplate)
35import Hakyll.Web.Template.Read.Hakyll (readTemplate)
36−import Hakyll.Web.Util.String
36+import Hakyll.Web.Util.Url
37
37
38import Paths_hakyll
38import Paths_hakyll
39
39
src/Hakyll/Web/Page.hs+1−1
@@ -73,7 +73,7 @@ import Hakyll.Web.Page.Read
73import Hakyll.Web.Page.Metadata
73import Hakyll.Web.Page.Metadata
74import Hakyll.Web.Pandoc
74import Hakyll.Web.Pandoc
75import Hakyll.Web.Template
75import Hakyll.Web.Template
76−import Hakyll.Web.Util.String
76+import Hakyll.Web.Util.Url
77
77
78-- | Create a page from a body, without metadata
78-- | Create a page from a body, without metadata
79--
79--
src/Hakyll/Web/Page/Metadata.hs+1−1
@@ -24,7 +24,7 @@ import System.FilePath (takeFileName)
24import System.Locale (TimeLocale, defaultTimeLocale)
24import System.Locale (TimeLocale, defaultTimeLocale)
25
25
26import Hakyll.Web.Page.Internal
26import Hakyll.Web.Page.Internal
27−import Hakyll.Web.Util.String
27+import Hakyll.Core.Util.String
28
28
29-- | Get a metadata field. If the field does not exist, the empty string is
29-- | Get a metadata field. If the field does not exist, the empty string is
30-- returned.
30-- returned.
src/Hakyll/Web/Page/Read.hs+1−1
@@ -12,7 +12,7 @@ import Data.Map (Map)
12import qualified Data.Map as M
12import qualified Data.Map as M
13
13
14import Hakyll.Web.Page.Internal
14import Hakyll.Web.Page.Internal
15−import Hakyll.Web.Util.String
15+import Hakyll.Core.Util.String
16
16
17-- | We're using a simple state monad as parser
17-- | We're using a simple state monad as parser
18--
18--
src/Hakyll/Web/Preview/Server.hs+1−1
@@ -18,7 +18,7 @@ import Snap.Http.Server ( httpServe, setAccessLog, setErrorLog, addListen
18 , ConfigListen (..), emptyConfig
18 , ConfigListen (..), emptyConfig
19 )
19 )
20
20
21−import Hakyll.Web.Util.String (replaceAll)
21+import Hakyll.Core.Util.String (replaceAll)
22
22
23-- | The first file in the list that actually exists is returned
23-- | The first file in the list that actually exists is returned
24--
24--
src/Hakyll/Web/RelativizeUrls.hs+1−1
@@ -29,7 +29,7 @@ import Text.HTML.TagSoup
29
29
30import Hakyll.Core.Compiler
30import Hakyll.Core.Compiler
31import Hakyll.Web.Page
31import Hakyll.Web.Page
32−import Hakyll.Web.Util.String
32+import Hakyll.Web.Util.Url
33
33
34-- | Compiler form of 'compressCss' which automatically picks the right root
34-- | Compiler form of 'compressCss' which automatically picks the right root
35-- path
35-- path
src/Hakyll/Web/Tags.hs+2−1
@@ -55,10 +55,11 @@ import qualified Text.Blaze.Html5.Attributes as A
55
55
56import Hakyll.Web.Page
56import Hakyll.Web.Page
57import Hakyll.Web.Page.Metadata
57import Hakyll.Web.Page.Metadata
58−import Hakyll.Web.Util.String
58+import Hakyll.Web.Util.Url
59import Hakyll.Core.Writable
59import Hakyll.Core.Writable
60import Hakyll.Core.Identifier
60import Hakyll.Core.Identifier
61import Hakyll.Core.Compiler
61import Hakyll.Core.Compiler
62+import Hakyll.Core.Util.String
62
63
63-- | Data about tags
64-- | Data about tags
64--
65--
src/Hakyll/Web/Util/Url.hsnew file+30
@@ -0,0 +1,30 @@
1+-- | Miscellaneous URL manipulation functions.
2+--
3+module Hakyll.Web.Util.Url
4+ ( toUrl
5+ , toSiteRoot
6+ ) where
7+
8+import System.FilePath (splitPath, takeDirectory, joinPath)
9+
10+-- | Convert a filepath to an URL starting from the site root
11+--
12+-- Example:
13+--
14+-- > toUrl "foo/bar.html"
15+--
16+-- Result:
17+--
18+-- > "/foo/bar.html"
19+--
20+toUrl :: FilePath -> String
21+toUrl = ('/' :)
22+
23+-- | Get the relative url to the site root, for a given (absolute) url
24+--
25+toSiteRoot :: String -> String
26+toSiteRoot = emptyException . joinPath . map parent . splitPath . takeDirectory
27+ where
28+ parent = const ".."
29+ emptyException [] = "."
30+ emptyException x = x