diff options
author | Timothee Cour <timothee.cour2@gmail.com> | 2021-01-13 14:52:59 -0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-01-13 14:52:59 -0800 |
commit | fee5fbc722295a49aad4980a915ff2d41c1fa701 (patch) | |
tree | 984f34ce88dd7365ad2478d1eafb1a7b84b630a3 /lib | |
parent | 165d39738def9264156da9309e1d4c524fe499c8 (diff) | |
download | Nim-fee5fbc722295a49aad4980a915ff2d41c1fa701.tar.gz |
fix #16703; revert most of #16480; add tests/stdlib/tmimetypes.nim (#16711)
Diffstat (limited to 'lib')
-rw-r--r-- | lib/pure/mimetypes.nim | 66 |
1 files changed, 19 insertions, 47 deletions
diff --git a/lib/pure/mimetypes.nim b/lib/pure/mimetypes.nim index 880ccdff1..89054fc38 100644 --- a/lib/pure/mimetypes.nim +++ b/lib/pure/mimetypes.nim @@ -8,7 +8,25 @@ # ## This module implements a mimetypes database -import strtabs, std/private/since + +runnableExamples: + var m = newMimetypes() + doAssert m.getMimetype("mp4") == "video/mp4" + doAssert m.getExt("text/html") == "html" + ## Values can be uppercase too. + doAssert m.getMimetype("MP4") == "video/mp4" + doAssert m.getExt("TEXT/HTML") == "html" + ## If values are invalid then ``default`` is returned. + doAssert m.getMimetype("INVALID") == "text/plain" + doAssert m.getExt("INVALID/NONEXISTENT") == "txt" + doAssert m.getMimetype("") == "text/plain" + doAssert m.getExt("") == "txt" + ## Register new Mimetypes. + m.register(ext = "fakext", mimetype = "text/fakelang") + doAssert m.getMimetype("fakext") == "text/fakelang" + doAssert m.getMimetype("FaKeXT") == "text/fakelang" + +import strtabs from strutils import startsWith, toLowerAscii, strip type @@ -1916,49 +1934,3 @@ func register*(mimedb: var MimeDB, ext: string, mimetype: string) = assert mimetype.strip.len > 0, "mimetype argument can not be empty string" {.noSideEffect.}: mimedb.mimes[ext.toLowerAscii()] = mimetype.toLowerAscii() - - -since (1, 5): - func mimesLongest(): array[2, int] {.compiletime.} = - runnableExamples: - static: - doAssert mimesLongest() >= (ext: 24, mime: 73) - var currentKeyLength, currentValLength: int - for item in mimes: - currentKeyLength = item[0].len - currentValLength = item[1].len - if currentKeyLength > result[0]: result[0] = currentKeyLength - if currentValLength > result[1]: result[1] = currentValLength - - const - ctValue = mimesLongest() # Use 2 const instead of func, save tuple unpack. - mimesExtMaxLen*: int = ctValue[0] ## \ - ## The length of the longest "ext" from `mimes`, - ## this is useful for optimizations with `newStringOfCap` and `newString`. - mimesMaxLen*: int = ctValue[1] ## \ - ## The length of the longest "mime" from `mimes`, - ## this is useful for optimizations with `newStringOfCap` and `newString`. - ## - ## See also: - ## * `newStringOfCap <system.html#newStringOfCap>`_ - ## * `newString <system.html#newString>`_ - - -runnableExamples: - static: - block: - var m = newMimetypes() - doAssert m.getMimetype("mp4") == "video/mp4" - doAssert m.getExt("text/html") == "html" - ## Values can be uppercase too. - doAssert m.getMimetype("MP4") == "video/mp4" - doAssert m.getExt("TEXT/HTML") == "html" - ## If values are invalid then ``default`` is returned. - doAssert m.getMimetype("INVALID") == "text/plain" - doAssert m.getExt("INVALID/NONEXISTENT") == "txt" - doAssert m.getMimetype("") == "text/plain" - doAssert m.getExt("") == "txt" - ## Register new Mimetypes. - m.register(ext = "fakext", mimetype = "text/fakelang") - doAssert m.getMimetype("fakext") == "text/fakelang" - doAssert m.getMimetype("FaKeXT") == "text/fakelang" |