git.iko.soy/typeable/pandoc
on master help sign in
Lua: use sha1 instead of hashname.

Better to leave control over the extension to the user.

commit8768f7e5b060b4024d88d12f4255d515dd4ca7fa authorJohn MacFarlane <jgm@berkeley.edu> dateSat 30 Sep 2017, 23:15 (9 years ago) parent9451d83
2 files changed+9−18
doc/lua-filters.md+4−5 src/Text/Pandoc/Lua/PandocModule.hs+5−13
doc/lua-filters.md+4−5
@@ -1130,18 +1130,17 @@ storage. The "media bag" is used when pandoc is called with the
11301130 local filename = "media/diagram.png"
11311131 local mt, contents = pandoc.mediabag.lookup(filename)
11321132
1133−[`hashname (mime_type, contents)`]{#mediabag-hashname}
1133+[`sha1 (contents)`]{#mediabag-sha1}
11341134
1135−: Returns a filename with a basename based on the SHA1 has of the
1136− contents and an extension based on the mime type.
1135+: Returns the SHA1 has of the contents.
11371136
11381137 Returns:
11391138
1140− - Filename based on SHA1 hash.
1139+ - SHA1 hash of the contents.
11411140
11421141 Usage:
11431142
1144− local fp = pandoc.mediabag.hashname("plain/text", "foobar")
1143+ local fp = pandoc.mediabag.sha1("foobar")
11451144
11461145[`fetch (source, base_url)`]{#mediabag-fetch}
11471146
src/Text/Pandoc/Lua/PandocModule.hs+5−13
@@ -47,7 +47,7 @@ import Text.Pandoc.Class (readDataFile, runIO,
4747import Text.Pandoc.Options (ReaderOptions(readerExtensions))
4848import Text.Pandoc.Lua.StackInstances ()
4949import Text.Pandoc.Readers (Reader (..), getReader)
50−import Text.Pandoc.MIME (MimeType, extensionFromMimeType)
50+import Text.Pandoc.MIME (MimeType)
5151import Data.Digest.Pure.SHA (sha1, showDigest)
5252
5353import qualified Foreign.Lua as Lua
@@ -93,7 +93,7 @@ pushMediaBagModule commonState mediaBagRef = do
9393 addFunction "lookup" (lookupMediaFn mediaBagRef)
9494 addFunction "list" (mediaDirectoryFn mediaBagRef)
9595 addFunction "fetch" (fetch commonState mediaBagRef)
96− addFunction "hashname" hashnameFn
96+ addFunction "sha1" sha1HashFn
9797 return ()
9898 where
9999 addFunction name fn = do
@@ -101,20 +101,12 @@ pushMediaBagModule commonState mediaBagRef = do
101101 Lua.pushHaskellFunction fn
102102 Lua.rawset (-3)
103103
104−hashnameFn :: OrNil MimeType
105− -> BL.ByteString
104+sha1HashFn :: BL.ByteString
106105 -> Lua NumResults
107−hashnameFn nilOrMime contents = do
108− Lua.push (getHashname (toMaybe nilOrMime) contents)
106+sha1HashFn contents = do
107+ Lua.push $ showDigest (sha1 contents)
109108 return 1
110109
111−getHashname :: Maybe MimeType -> BL.ByteString -> String
112−getHashname mbMime bs =
113− let ext = fromMaybe ""
114− (('.':) <$> (mbMime >>= extensionFromMimeType))
115− basename = showDigest $ sha1 bs
116− in basename ++ ext
117−
118110insertMediaFn :: IORef MB.MediaBag
119111 -> FilePath
120112 -> OrNil MimeType