From c4e6ce494233e40816d52aceccc090a8c358ca43 Mon Sep 17 00:00:00 2001 From: Bendik Lynghaug Date: Fri, 1 Jun 2018 14:09:38 -0400 Subject: [PATCH] add image-size data --- lib/readPage.js | 9 +++++++++ lib/readPageSync.js | 8 ++++++++ package.json | 1 + test.js | 10 ++++++++++ 4 files changed, 28 insertions(+) diff --git a/lib/readPage.js b/lib/readPage.js index 3bcee63..b8c6a5d 100644 --- a/lib/readPage.js +++ b/lib/readPage.js @@ -4,6 +4,7 @@ var smarkt = require('smarkt') var xtend = require('xtend') var path = require('path') var pify = require('pify') +var sizeOf = require('image-size') var utilFile = require('../utils/file') var defaults = require('./defaults') @@ -76,6 +77,14 @@ async function readPage (pathPage, opts) { try { var fileMeta = pathFile + fileExtname var pathMeta = path.join(pathPage, fileMeta) + + if (fileParsed.type === 'image') { + var imageBuffer = await fs.readFile(path.join(pathPage, pathFile)) + var dimentions = sizeOf(imageBuffer) + delete dimentions.type + Object.assign(fileParsed, dimentions) + } + var text = await fs.readFile(pathMeta, encoding) // set result[fileParsed.filename] = xtend(parse(text), fileParsed) diff --git a/lib/readPageSync.js b/lib/readPageSync.js index e81901b..0dc4ed3 100644 --- a/lib/readPageSync.js +++ b/lib/readPageSync.js @@ -3,6 +3,7 @@ var assert = require('assert') var smarkt = require('smarkt') var xtend = require('xtend') var path = require('path') +var sizeOf = require('image-size') var utilFile = require('../utils/file') var defaults = require('./defaults') @@ -69,6 +70,13 @@ function readPageSync (pathPage, opts) { try { var fileMeta = pathFile + fileExtname var text = fs.readFileSync(slash(path.join(pathPage, fileMeta)), encoding) + + if (fileParsed.type === 'image') { + var dimentions = sizeOf(fs.readFileSync(path.join(pathPage, pathFile))) + delete dimentions.type + Object.assign(fileParsed, dimentions) + } + // set result[fileParsed.filename] = xtend(parse(text), fileParsed) files.splice(files.indexOf(fileMeta), 1) diff --git a/package.json b/package.json index b4f70b5..ce64114 100644 --- a/package.json +++ b/package.json @@ -19,6 +19,7 @@ }, "dependencies": { "glob": "^7.1.2", + "image-size": "^0.6.2", "js-yaml": "^3.10.0", "normalize-path": "^3.0.0", "object-keys": "^1.0.11", diff --git a/test.js b/test.js index 8449756..bbc80d3 100644 --- a/test.js +++ b/test.js @@ -19,6 +19,16 @@ test('readPageSync and readPage outputs are the same', async function (t) { t.deepEqual(syncPage, asyncPage) }) +test('readPage includes image files sizes', function (t) { + var page = hypha.readPageSync('example/content/about') + for (var file in page.files) { + if (page.files[file].type === 'image') { + t.is(page.files[file].width, 316) + t.is(page.files[file].height, 230) + } + } +}) + test('readSiteSync works', function (t) { var site = hypha.readSiteSync('example/content') t.is(site['/example/content'].title, 'Example')