hugo

Unnamed repository; edit this file 'description' to name the repository.

git clone git://git.shimmy1996.com/hugo.git
commit cdc73526a80de2120df7aa44f7dc820df6de789d
parent 425c7d90f0422f41703a757e97a1370d3b08fc37
Author: Bjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>
Date:   Tue, 21 Dec 2021 09:39:05 +0100

media: Add PDF MIME type

Diffstat:
Mmedia/mediaType.go | 5++++-
Mmedia/mediaType_test.go | 13++++++-------
Amedia/testdata/resource.pdf | 198+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
3 files changed, 208 insertions(+), 8 deletions(-)
diff --git a/media/mediaType.go b/media/mediaType.go
@@ -169,7 +169,6 @@ func (m Type) IsText() bool {
 	switch m.SubType {
 	case "javascript", "json", "rss", "xml", "svg", TOMLType.SubType, YAMLType.SubType:
 		return true
-
 	}
 	return false
 }
@@ -239,6 +238,9 @@ var (
 	TrueTypeFontType = newMediaType("font", "ttf", []string{"ttf"})
 	OpenTypeFontType = newMediaType("font", "otf", []string{"otf"})
 
+	// Common document types
+	PDFType = newMediaType("application", "pdf", []string{"pdf"})
+
 	// Common video types
 	AVIType  = newMediaType("video", "x-msvideo", []string{"avi"})
 	MPEGType = newMediaType("video", "mpeg", []string{"mpg", "mpeg"})
@@ -282,6 +284,7 @@ var DefaultTypes = Types{
 	GPPType,
 	OpenTypeFontType,
 	TrueTypeFontType,
+	PDFType,
 }
 
 func init() {
diff --git a/media/mediaType_test.go b/media/mediaType_test.go
@@ -51,6 +51,7 @@ func TestDefaultTypes(t *testing.T) {
 		{XMLType, "application", "xml", "xml", "application/xml", "application/xml"},
 		{TOMLType, "application", "toml", "toml", "application/toml", "application/toml"},
 		{YAMLType, "application", "yaml", "yaml", "application/yaml", "application/yaml"},
+		{PDFType, "application", "pdf", "pdf", "application/pdf", "application/pdf"},
 		{TrueTypeFontType, "font", "ttf", "ttf", "font/ttf", "font/ttf"},
 		{OpenTypeFontType, "font", "otf", "otf", "font/otf", "font/otf"},
 	} {
@@ -62,7 +63,7 @@ func TestDefaultTypes(t *testing.T) {
 
 	}
 
-	c.Assert(len(DefaultTypes), qt.Equals, 30)
+	c.Assert(len(DefaultTypes), qt.Equals, 31)
 }
 
 func TestGetByType(t *testing.T) {
@@ -118,7 +119,8 @@ func TestGetFirstBySuffix(t *testing.T) {
 		c.Assert(found, qt.Equals, true)
 		c.Assert(f, qt.Equals, SuffixInfo{
 			Suffix:     suffix,
-			FullSuffix: "." + suffix})
+			FullSuffix: "." + suffix,
+		})
 		c.Assert(t, qt.Equals, expectedType)
 	}
 
@@ -126,7 +128,6 @@ func TestGetFirstBySuffix(t *testing.T) {
 	check("json", JSONType)
 	check("geojson", geoJSON)
 	check("gjson", geoJSON)
-
 }
 
 func TestFromTypeString(t *testing.T) {
@@ -150,7 +151,6 @@ func TestFromTypeString(t *testing.T) {
 	c.Assert(err, qt.IsNil)
 
 	c.Assert(f, qt.Equals, Type{MainType: "text", SubType: "xml", mimeSuffix: ""})
-
 }
 
 func TestFromStringAndExt(t *testing.T) {
@@ -178,7 +178,6 @@ func TestFromExtensionMultipleSuffixes(t *testing.T) {
 	c.Assert(found, qt.Equals, true)
 	c.Assert(ftp.String(), qt.Equals, "image/svg+xml")
 	c.Assert(found, qt.Equals, true)
-
 }
 
 func TestFromContent(t *testing.T) {
@@ -189,7 +188,8 @@ func TestFromContent(t *testing.T) {
 	mtypes := DefaultTypes
 
 	for _, filename := range files {
-		c.Run(filepath.Base(filename), func(c *qt.C) {
+		name := filepath.Base(filename)
+		c.Run(name, func(c *qt.C) {
 			content, err := ioutil.ReadFile(filename)
 			c.Assert(err, qt.IsNil)
 			ext := strings.TrimPrefix(paths.Ext(filename), ".")
@@ -252,7 +252,6 @@ func TestDecodeTypes(t *testing.T) {
 
 				_, found = tt.GetByType("application/hugo+hg")
 				c.Assert(found, qt.Equals, true)
-
 			},
 		},
 		{
diff --git a/media/testdata/resource.pdf b/media/testdata/resource.pdf
@@ -0,0 +1,198 @@
+%PDF-1.3
+%
+
+1 0 obj
+<<
+/Type /Catalog
+/Outlines 2 0 R
+/Pages 3 0 R
+>>
+endobj
+
+2 0 obj
+<<
+/Type /Outlines
+/Count 0
+>>
+endobj
+
+3 0 obj
+<<
+/Type /Pages
+/Count 2
+/Kids [ 4 0 R 6 0 R ] 
+>>
+endobj
+
+4 0 obj
+<<
+/Type /Page
+/Parent 3 0 R
+/Resources <<
+/Font <<
+/F1 9 0 R 
+>>
+/ProcSet 8 0 R
+>>
+/MediaBox [0 0 612.0000 792.0000]
+/Contents 5 0 R
+>>
+endobj
+
+5 0 obj
+<< /Length 1074 >>
+stream
+2 J
+BT
+0 0 0 rg
+/F1 0027 Tf
+57.3750 722.2800 Td
+( A Simple PDF File ) Tj
+ET
+BT
+/F1 0010 Tf
+69.2500 688.6080 Td
+( This is a small demonstration .pdf file - ) Tj
+ET
+BT
+/F1 0010 Tf
+69.2500 664.7040 Td
+( just for use in the Virtual Mechanics tutorials. More text. And more ) Tj
+ET
+BT
+/F1 0010 Tf
+69.2500 652.7520 Td
+( text. And more text. And more text. And more text. ) Tj
+ET
+BT
+/F1 0010 Tf
+69.2500 628.8480 Td
+( And more text. And more text. And more text. And more text. And more ) Tj
+ET
+BT
+/F1 0010 Tf
+69.2500 616.8960 Td
+( text. And more text. Boring, zzzzz. And more text. And more text. And ) Tj
+ET
+BT
+/F1 0010 Tf
+69.2500 604.9440 Td
+( more text. And more text. And more text. And more text. And more text. ) Tj
+ET
+BT
+/F1 0010 Tf
+69.2500 592.9920 Td
+( And more text. And more text. ) Tj
+ET
+BT
+/F1 0010 Tf
+69.2500 569.0880 Td
+( And more text. And more text. And more text. And more text. And more ) Tj
+ET
+BT
+/F1 0010 Tf
+69.2500 557.1360 Td
+( text. And more text. And more text. Even more. Continued on page 2 ...) Tj
+ET
+endstream
+endobj
+
+6 0 obj
+<<
+/Type /Page
+/Parent 3 0 R
+/Resources <<
+/Font <<
+/F1 9 0 R 
+>>
+/ProcSet 8 0 R
+>>
+/MediaBox [0 0 612.0000 792.0000]
+/Contents 7 0 R
+>>
+endobj
+
+7 0 obj
+<< /Length 676 >>
+stream
+2 J
+BT
+0 0 0 rg
+/F1 0027 Tf
+57.3750 722.2800 Td
+( Simple PDF File 2 ) Tj
+ET
+BT
+/F1 0010 Tf
+69.2500 688.6080 Td
+( ...continued from page 1. Yet more text. And more text. And more text. ) Tj
+ET
+BT
+/F1 0010 Tf
+69.2500 676.6560 Td
+( And more text. And more text. And more text. And more text. And more ) Tj
+ET
+BT
+/F1 0010 Tf
+69.2500 664.7040 Td
+( text. Oh, how boring typing this stuff. But not as boring as watching ) Tj
+ET
+BT
+/F1 0010 Tf
+69.2500 652.7520 Td
+( paint dry. And more text. And more text. And more text. And more text. ) Tj
+ET
+BT
+/F1 0010 Tf
+69.2500 640.8000 Td
+( Boring.  More, a little more text. The end, and just as well. ) Tj
+ET
+endstream
+endobj
+
+8 0 obj
+[/PDF /Text]
+endobj
+
+9 0 obj
+<<
+/Type /Font
+/Subtype /Type1
+/Name /F1
+/BaseFont /Helvetica
+/Encoding /WinAnsiEncoding
+>>
+endobj
+
+10 0 obj
+<<
+/Creator (Rave \(http://www.nevrona.com/rave\))
+/Producer (Nevrona Designs)
+/CreationDate (D:20060301072826)
+>>
+endobj
+
+xref
+0 11
+0000000000 65535 f
+0000000019 00000 n
+0000000093 00000 n
+0000000147 00000 n
+0000000222 00000 n
+0000000390 00000 n
+0000001522 00000 n
+0000001690 00000 n
+0000002423 00000 n
+0000002456 00000 n
+0000002574 00000 n
+
+trailer
+<<
+/Size 11
+/Root 1 0 R
+/Info 10 0 R
+>>
+
+startxref
+2714
+%%EOF