From 51366d53d6f183328cae023289664dc440792139 Mon Sep 17 00:00:00 2001 From: Gianni Moschini <gianni.moschini+github@gmail.com> Date: Fri, 25 Sep 2020 15:32:06 +0100 Subject: [PATCH 1/2] add css-font package --- package-lock.json | 69 +++++++++++++++++++++++++++++++++++++++++++++++ package.json | 1 + 2 files changed, 70 insertions(+) diff --git a/package-lock.json b/package-lock.json index 1e7f6ffb..fab9558e 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1386,6 +1386,52 @@ "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", "dev": true }, + "css-font": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/css-font/-/css-font-1.2.0.tgz", + "integrity": "sha512-V4U4Wps4dPDACJ4WpgofJ2RT5Yqwe1lEH6wlOOaIxMi0gTjdIijsc5FmxQlZ7ZZyKQkkutqqvULOp07l9c7ssA==", + "requires": { + "css-font-size-keywords": "^1.0.0", + "css-font-stretch-keywords": "^1.0.1", + "css-font-style-keywords": "^1.0.1", + "css-font-weight-keywords": "^1.0.0", + "css-global-keywords": "^1.0.1", + "css-system-font-keywords": "^1.0.0", + "pick-by-alias": "^1.2.0", + "string-split-by": "^1.0.0", + "unquote": "^1.1.0" + } + }, + "css-font-size-keywords": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/css-font-size-keywords/-/css-font-size-keywords-1.0.0.tgz", + "integrity": "sha1-hUh1rOmspqjS7g00WkSq6btttss=" + }, + "css-font-stretch-keywords": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/css-font-stretch-keywords/-/css-font-stretch-keywords-1.0.1.tgz", + "integrity": "sha1-UM7puboDH7XJUtRyMTnx4Qe1SxA=" + }, + "css-font-style-keywords": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/css-font-style-keywords/-/css-font-style-keywords-1.0.1.tgz", + "integrity": "sha1-XDUygT9jtKHelU0TzqhqtDM0CeQ=" + }, + "css-font-weight-keywords": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/css-font-weight-keywords/-/css-font-weight-keywords-1.0.0.tgz", + "integrity": "sha1-m8BGcayFvHJLV07106yWsNYE/Zc=" + }, + "css-global-keywords": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/css-global-keywords/-/css-global-keywords-1.0.1.tgz", + "integrity": "sha1-cqmupyeW0Bmx0qMlLeTlqqN+Smk=" + }, + "css-system-font-keywords": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/css-system-font-keywords/-/css-system-font-keywords-1.0.0.tgz", + "integrity": "sha1-hcbwhquk6zLFcaMIav/ENLhII+0=" + }, "cssom": { "version": "0.3.6", "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.6.tgz", @@ -5400,6 +5446,11 @@ "callsites": "^3.0.0" } }, + "parenthesis": { + "version": "3.1.7", + "resolved": "https://registry.npmjs.org/parenthesis/-/parenthesis-3.1.7.tgz", + "integrity": "sha512-iMtu+HCbLXVrpf6Ys/4YKhcFxbux3xK4ZVB9r+a2kMSqeeQWQoDNYlXIsOjwlT2ldYXZ3k5PVeBnYn7fbAo/Bg==" + }, "parse-json": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", @@ -5467,6 +5518,11 @@ "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=", "dev": true }, + "pick-by-alias": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/pick-by-alias/-/pick-by-alias-1.2.0.tgz", + "integrity": "sha1-X3yysfIabh6ISgyHhVqko3NhEHs=" + }, "pidtree": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/pidtree/-/pidtree-0.3.0.tgz", @@ -6282,6 +6338,14 @@ } } }, + "string-split-by": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/string-split-by/-/string-split-by-1.0.0.tgz", + "integrity": "sha512-KaJKY+hfpzNyet/emP81PJA9hTVSfxNLS9SFTWxdCnnW1/zOOwiV248+EfoX7IQFcBaOp4G5YE6xTJMF+pLg6A==", + "requires": { + "parenthesis": "^3.1.5" + } + }, "string-width": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", @@ -6621,6 +6685,11 @@ "set-value": "^2.0.1" } }, + "unquote": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/unquote/-/unquote-1.1.1.tgz", + "integrity": "sha1-j97XMk7G6IoP+LkF58CYzcCG1UQ=" + }, "unset-value": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", diff --git a/package.json b/package.json index 7ded3070..b58320e4 100644 --- a/package.json +++ b/package.json @@ -37,6 +37,7 @@ ], "main": "./lib/CSSStyleDeclaration.js", "dependencies": { + "css-font": "^1.2.0", "cssom": "~0.3.6" }, "devDependencies": { From 8f71677e38048cb6a5e988252b093ec58f2317ae Mon Sep 17 00:00:00 2001 From: Gianni Moschini <gianni.moschini+github@gmail.com> Date: Fri, 25 Sep 2020 15:36:02 +0100 Subject: [PATCH 2/2] use css-font to output font shorthand property --- lib/parsers.js | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/lib/parsers.js b/lib/parsers.js index 8ecdf5e3..fcf4a9ce 100644 --- a/lib/parsers.js +++ b/lib/parsers.js @@ -4,6 +4,8 @@ ********************************************************************/ 'use strict'; +const font = require('css-font'); + const namedColors = require('./named_colors.json'); const { hslToRgb } = require('./utils/colorSpace'); @@ -599,10 +601,17 @@ exports.shorthandGetter = function(property, shorthand_for) { if (this._values[property] !== undefined) { return this.getPropertyValue(property); } - return Object.keys(shorthand_for) + var obj = {} + Object.keys(shorthand_for) .map(function(subprop) { - return this.getPropertyValue(subprop); - }, this) + obj[subprop] = this.getPropertyValue(subprop); + }, this); + + if (property === 'font') { + return font.stringify(obj); + } + + return Object.values(obj) .filter(function(value) { return value !== ''; })