style-dictionary 3.0.3 → 3.7.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +3 -0
- package/bin/style-dictionary +2 -2
- package/examples/advanced/assets-base64-embed/package.json +1 -1
- package/examples/advanced/auto-rebuild-watcher/package.json +2 -2
- package/examples/advanced/component-cti/package.json +1 -1
- package/examples/advanced/create-react-app/package.json +2 -2
- package/examples/advanced/create-react-native-app/package.json +1 -1
- package/examples/advanced/custom-file-header/package.json +1 -1
- package/examples/advanced/custom-filters/README.md +99 -0
- package/examples/advanced/custom-filters/build.js +27 -0
- package/examples/advanced/custom-filters/config.json +21 -0
- package/examples/advanced/custom-filters/package.json +20 -0
- package/examples/advanced/custom-filters/tokens/spacing.json +20 -0
- package/examples/advanced/custom-formats-with-templates/package.json +1 -1
- package/examples/advanced/custom-parser/package.json +1 -1
- package/examples/advanced/custom-transforms/package.json +1 -1
- package/examples/advanced/format-helpers/package.json +1 -1
- package/examples/advanced/matching-build-files/package.json +1 -1
- package/examples/advanced/multi-brand-multi-platform/package.json +1 -1
- package/examples/advanced/node-modules-as-config-and-properties/package.json +1 -1
- package/examples/advanced/npm-module/package.json +1 -1
- package/examples/advanced/referencing_aliasing/package.json +1 -1
- package/examples/advanced/s3/package.json +1 -1
- package/examples/advanced/tokens-deprecation/package.json +1 -1
- package/examples/advanced/transitive-transforms/package.json +1 -1
- package/examples/advanced/variables-in-outputs/package.json +1 -1
- package/examples/advanced/yaml-tokens/package.json +1 -1
- package/examples/basic/config.json +17 -3
- package/examples/complete/package.json +1 -1
- package/index.js +2 -2
- package/lib/common/filters.js +30 -0
- package/lib/common/formatHelpers/createPropertyFormatter.js +18 -4
- package/lib/common/formatHelpers/fileHeader.js +1 -1
- package/lib/common/formatHelpers/formattedVariables.js +4 -3
- package/lib/common/formatHelpers/getTypeScriptType.js +42 -18
- package/lib/common/formatHelpers/index.js +2 -1
- package/lib/common/formatHelpers/setSwiftFileProperties.js +55 -0
- package/lib/common/formats.js +92 -14
- package/lib/common/templates/ios-swift/{class.swift.template → any.swift.template} +6 -3
- package/lib/common/templates/scss/map-deep.template +1 -15
- package/lib/common/transforms.js +23 -0
- package/lib/extend.js +1 -0
- package/lib/utils/combineJSON.js +1 -0
- package/lib/utils/es6_.js +6 -1
- package/lib/utils/jsonc.js +14 -0
- package/lib/utils/resolveObject.js +11 -0
- package/package.json +26 -23
- package/types/Format.d.ts +1 -1
- package/types/FormatHelpers.d.ts +1 -1
- package/types/TransformGroup.d.ts +1 -2
- package/types/index.d.ts +26 -5
- package/CHANGELOG.md +0 -280
- package/lib/common/templates/ios-swift/enum.swift.template +0 -26
package/README.md
CHANGED
|
@@ -22,6 +22,9 @@ For detailed usage head to https://amzn.github.io/style-dictionary
|
|
|
22
22
|
## Watch the Demo on Youtube
|
|
23
23
|
[](http://youtu.be/1HREvonfqhY)
|
|
24
24
|
|
|
25
|
+
## Experiment in the playground
|
|
26
|
+
Try the browser-based Style Dictionary playground: [https://www.style-dictionary-play.dev/](https://www.style-dictionary-play.dev/), built by the folks at [\<div\>RIOTS](https://divriots.com/).
|
|
27
|
+
|
|
25
28
|
## Contents
|
|
26
29
|
* [Installation](#installation)
|
|
27
30
|
* [Usage](#usage)
|
package/bin/style-dictionary
CHANGED
|
@@ -29,7 +29,7 @@ function getConfigPath(options) {
|
|
|
29
29
|
process.exit(1);
|
|
30
30
|
}
|
|
31
31
|
}
|
|
32
|
-
|
|
32
|
+
|
|
33
33
|
return configPath;
|
|
34
34
|
}
|
|
35
35
|
|
|
@@ -72,7 +72,7 @@ program
|
|
|
72
72
|
|
|
73
73
|
// error on unknown commands
|
|
74
74
|
program.on('command:*', function () {
|
|
75
|
-
console.error('Invalid command: %s\nSee --help for a list of available commands.',
|
|
75
|
+
console.error('Invalid command: %s\nSee --help for a list of available commands.', process.argv.slice(2).join(' '));
|
|
76
76
|
process.exit(1);
|
|
77
77
|
});
|
|
78
78
|
|
|
@@ -10,13 +10,13 @@
|
|
|
10
10
|
"scripts": {
|
|
11
11
|
"build": "node_modules/.bin/style-dictionary build",
|
|
12
12
|
"clean": "rm -rf build",
|
|
13
|
-
"watch": "npm run build && chokidar \"
|
|
13
|
+
"watch": "npm run build && chokidar \"tokens/**/*.json\" -c \"npm run build\"",
|
|
14
14
|
"test": "echo \"Error: no test specified\" && exit 1"
|
|
15
15
|
},
|
|
16
16
|
"author": "",
|
|
17
17
|
"license": "Apache-2.0",
|
|
18
18
|
"devDependencies": {
|
|
19
19
|
"chokidar-cli": "^1.2.0",
|
|
20
|
-
"style-dictionary": "3.0
|
|
20
|
+
"style-dictionary": "3.7.0"
|
|
21
21
|
}
|
|
22
22
|
}
|
|
@@ -3,14 +3,14 @@
|
|
|
3
3
|
"description": "",
|
|
4
4
|
"version": "1.0.0",
|
|
5
5
|
"dependencies": {
|
|
6
|
-
"node-sass": "^
|
|
6
|
+
"node-sass": "^7.0.0",
|
|
7
7
|
"react": "^17.0.1",
|
|
8
8
|
"react-dom": "^17.0.1",
|
|
9
9
|
"react-scripts": "^4.0.3",
|
|
10
10
|
"styled-components": "^5.3.0"
|
|
11
11
|
},
|
|
12
12
|
"devDependencies": {
|
|
13
|
-
"style-dictionary": "3.0
|
|
13
|
+
"style-dictionary": "3.7.0"
|
|
14
14
|
},
|
|
15
15
|
"resolutions": {
|
|
16
16
|
"immer": "8.0.1",
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
## Filters
|
|
2
|
+
|
|
3
|
+
This example shows how to use built-in and custom filters to the design tokens.
|
|
4
|
+
|
|
5
|
+
Filters are functions that might remove according to some conditions a design token from the output distribution.
|
|
6
|
+
|
|
7
|
+
#### Running the example
|
|
8
|
+
|
|
9
|
+
First of all, set up the required dependencies running the command `npm install` in your local CLI environment (if you prefer to use *yarn* update the commands accordingly).
|
|
10
|
+
|
|
11
|
+
At this point, if you want to build the tokens you can run `npm run build`. This command will generate the files in the `build` folder.
|
|
12
|
+
|
|
13
|
+
#### How does it work a built-in filter?
|
|
14
|
+
|
|
15
|
+
Currently StyleDictionary supports just the following built-in filters:
|
|
16
|
+
|
|
17
|
+
- removePrivate
|
|
18
|
+
|
|
19
|
+
You have to apply it in the `config.json` file:
|
|
20
|
+
|
|
21
|
+
```
|
|
22
|
+
"scss": {
|
|
23
|
+
"buildPath": "build/web/",
|
|
24
|
+
"files": [{
|
|
25
|
+
"destination": "colors.scss",
|
|
26
|
+
"filter": "removePrivate",
|
|
27
|
+
"format": "scss/variables"
|
|
28
|
+
}]
|
|
29
|
+
}
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
The StyleDictionary will take care of filtering out proper design tokens from the source of truth:
|
|
33
|
+
|
|
34
|
+
```
|
|
35
|
+
{
|
|
36
|
+
"color": {
|
|
37
|
+
"gray": {
|
|
38
|
+
"light" : {
|
|
39
|
+
"value": "#CCCCCC",
|
|
40
|
+
"group": "color",
|
|
41
|
+
"private": true
|
|
42
|
+
},
|
|
43
|
+
"medium": {
|
|
44
|
+
"value": "#999999",
|
|
45
|
+
"group": "color"
|
|
46
|
+
},
|
|
47
|
+
"dark" : {
|
|
48
|
+
"value": "#111111",
|
|
49
|
+
"group": "color"
|
|
50
|
+
}
|
|
51
|
+
},
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
#### How does it work a custom filter?
|
|
57
|
+
|
|
58
|
+
To declare a custom **filter**, you have to call the `registerFilter` method:
|
|
59
|
+
|
|
60
|
+
```
|
|
61
|
+
StyleDictionary.registerFilter({
|
|
62
|
+
name: 'isTextTransform',
|
|
63
|
+
matcher: function(token) {
|
|
64
|
+
return token.attributes.category === 'font' && token.value.includes['lowercase', 'uppercase]
|
|
65
|
+
}
|
|
66
|
+
});
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
You have to apply it in the `config.json` file:
|
|
70
|
+
|
|
71
|
+
```
|
|
72
|
+
"scss": {
|
|
73
|
+
"buildPath": "build/web/",
|
|
74
|
+
"files": [{
|
|
75
|
+
"destination": "fonts.scss",
|
|
76
|
+
"filter": "isTextTransform",
|
|
77
|
+
"format": "scss/variables"
|
|
78
|
+
}]
|
|
79
|
+
}
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
The StyleDictionary will take care of filtering out proper design tokens from the source of truth:
|
|
83
|
+
|
|
84
|
+
```
|
|
85
|
+
{
|
|
86
|
+
"fonts": {
|
|
87
|
+
"title-transform": {
|
|
88
|
+
"value": "uppercase", // included
|
|
89
|
+
"group": "font"
|
|
90
|
+
},
|
|
91
|
+
"title-size": {
|
|
92
|
+
"value": "36px", // excluded
|
|
93
|
+
"group": "font"
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
More information can be found on the [documentation](https://amzn.github.io/style-dictionary/#/api?id=registerfilter).
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
const StyleDictionary = require('../../../index');
|
|
2
|
+
|
|
3
|
+
console.log('Build started...');
|
|
4
|
+
console.log('\n==============================================');
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
// REGISTER THE CUSTOM FILTERS
|
|
8
|
+
|
|
9
|
+
StyleDictionary.registerFilter({
|
|
10
|
+
name: 'removeBigSpacing',
|
|
11
|
+
matcher: function(token) {
|
|
12
|
+
return token.group === 'spacing' && token.value < 0.5
|
|
13
|
+
}
|
|
14
|
+
});
|
|
15
|
+
|
|
16
|
+
// APPLY THE CONFIGURATION
|
|
17
|
+
// IMPORTANT: the registration of custom transforms
|
|
18
|
+
// needs to be done _before_ applying the configuration
|
|
19
|
+
const StyleDictionaryExtended = StyleDictionary.extend(__dirname + '/config.json');
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
// FINALLY, BUILD ALL THE PLATFORMS
|
|
23
|
+
StyleDictionaryExtended.buildAllPlatforms();
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
console.log('\n==============================================');
|
|
27
|
+
console.log('\nBuild completed!');
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
{
|
|
2
|
+
"source": ["tokens/**/*.json"],
|
|
3
|
+
"platforms": {
|
|
4
|
+
"web": {
|
|
5
|
+
"buildPath": "build/web/",
|
|
6
|
+
"files": [{
|
|
7
|
+
"destination": "tokens.js",
|
|
8
|
+
"filter": "removeBigSpacing",
|
|
9
|
+
"format": "javascript/es6"
|
|
10
|
+
}]
|
|
11
|
+
},
|
|
12
|
+
"scss": {
|
|
13
|
+
"buildPath": "build/web/",
|
|
14
|
+
"files": [{
|
|
15
|
+
"destination": "tokens.scss",
|
|
16
|
+
"filter": "removeBigSpacing",
|
|
17
|
+
"format": "scss/variables"
|
|
18
|
+
}]
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "style-dictionary-filters",
|
|
3
|
+
"version": "1.0.0",
|
|
4
|
+
"description": "",
|
|
5
|
+
"main": "build/index.js",
|
|
6
|
+
"files": [
|
|
7
|
+
"build",
|
|
8
|
+
"properties"
|
|
9
|
+
],
|
|
10
|
+
"scripts": {
|
|
11
|
+
"build": "node ./build.js",
|
|
12
|
+
"clean": "rm -rf build",
|
|
13
|
+
"test": "echo \"Error: no test specified\" && exit 1"
|
|
14
|
+
},
|
|
15
|
+
"author": "",
|
|
16
|
+
"license": "Apache-2.0",
|
|
17
|
+
"devDependencies": {
|
|
18
|
+
"style-dictionary": "3.7.0"
|
|
19
|
+
}
|
|
20
|
+
}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
{
|
|
2
|
+
"margin": {
|
|
3
|
+
"small" : {
|
|
4
|
+
"value": "0.15",
|
|
5
|
+
"group": "spacing"
|
|
6
|
+
},
|
|
7
|
+
"medium": {
|
|
8
|
+
"value": "0.25",
|
|
9
|
+
"group": "spacing"
|
|
10
|
+
},
|
|
11
|
+
"large" : {
|
|
12
|
+
"value": "0.6",
|
|
13
|
+
"group": "spacing"
|
|
14
|
+
},
|
|
15
|
+
"extralarge" : {
|
|
16
|
+
"value": "1",
|
|
17
|
+
"group": "spacing"
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
}
|
|
@@ -95,10 +95,25 @@
|
|
|
95
95
|
"transformGroup": "ios-swift",
|
|
96
96
|
"buildPath": "build/ios-swift/",
|
|
97
97
|
"files": [{
|
|
98
|
-
"destination": "StyleDictionary.swift",
|
|
98
|
+
"destination": "StyleDictionary+Class.swift",
|
|
99
99
|
"format": "ios-swift/class.swift",
|
|
100
|
-
"className": "
|
|
100
|
+
"className": "StyleDictionaryClass",
|
|
101
101
|
"filter": {}
|
|
102
|
+
},{
|
|
103
|
+
"destination": "StyleDictionary+Enum.swift",
|
|
104
|
+
"format": "ios-swift/enum.swift",
|
|
105
|
+
"className": "StyleDictionaryEnum",
|
|
106
|
+
"filter": {}
|
|
107
|
+
},{
|
|
108
|
+
"destination": "StyleDictionary+Struct.swift",
|
|
109
|
+
"format": "ios-swift/any.swift",
|
|
110
|
+
"className": "StyleDictionaryStruct",
|
|
111
|
+
"filter": {},
|
|
112
|
+
"options": {
|
|
113
|
+
"imports": "SwiftUI",
|
|
114
|
+
"objectType": "struct",
|
|
115
|
+
"accessControl": "internal"
|
|
116
|
+
}
|
|
102
117
|
}]
|
|
103
118
|
},
|
|
104
119
|
"ios-swift-separate-enums": {
|
|
@@ -117,7 +132,6 @@
|
|
|
117
132
|
"destination": "StyleDictionarySize.swift",
|
|
118
133
|
"format": "ios-swift/enum.swift",
|
|
119
134
|
"className": "StyleDictionarySize",
|
|
120
|
-
"type": "float",
|
|
121
135
|
"filter": {
|
|
122
136
|
"attributes": {
|
|
123
137
|
"category": "size"
|
package/index.js
CHANGED
|
@@ -43,8 +43,8 @@ var StyleDictionary = {
|
|
|
43
43
|
format: require('./lib/common/formats'),
|
|
44
44
|
action: require('./lib/common/actions'),
|
|
45
45
|
formatHelpers: require('./lib/common/formatHelpers'),
|
|
46
|
-
filter:
|
|
47
|
-
parsers: [], //
|
|
46
|
+
filter: require('./lib/common/filters'),
|
|
47
|
+
parsers: [], // we need to initialise the array, since we don't have built-in parsers
|
|
48
48
|
fileHeader: {},
|
|
49
49
|
|
|
50
50
|
registerTransform: require('./lib/register/transform'),
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright 2017 Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
|
3
|
+
*
|
|
4
|
+
* Licensed under the Apache License, Version 2.0 (the "License"). You may not use this file except in compliance with
|
|
5
|
+
* the License. A copy of the License is located at
|
|
6
|
+
*
|
|
7
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
8
|
+
*
|
|
9
|
+
* or in the "license" file accompanying this file. This file is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
|
|
10
|
+
* CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions
|
|
11
|
+
* and limitations under the License.
|
|
12
|
+
*/
|
|
13
|
+
|
|
14
|
+
/**
|
|
15
|
+
* @namespace Filters
|
|
16
|
+
*/
|
|
17
|
+
|
|
18
|
+
module.exports = {
|
|
19
|
+
/**
|
|
20
|
+
* Remove a token from the ditribution output if it contains a key `private` set to true
|
|
21
|
+
*
|
|
22
|
+
* @memberof Filters
|
|
23
|
+
*
|
|
24
|
+
* @param {Object} token
|
|
25
|
+
* @returns {Boolean}
|
|
26
|
+
*/
|
|
27
|
+
removePrivate: function(token) {
|
|
28
|
+
return (token && token.private) ? false : true
|
|
29
|
+
}
|
|
30
|
+
}
|
|
@@ -42,12 +42,21 @@ const defaultFormatting = {
|
|
|
42
42
|
* ```
|
|
43
43
|
* @param {Object} options
|
|
44
44
|
* @param {Boolean} options.outputReferences - Whether or not to output references. You will want to pass this from the `options` object sent to the formatter function.
|
|
45
|
+
* @param {Boolean} options.outputReferenceFallbacks - Whether or not to output css variable fallback values when using output references. You will want to pass this from the `options` object sent to the formatter function.
|
|
45
46
|
* @param {Dictionary} options.dictionary - The dictionary object sent to the formatter function
|
|
46
47
|
* @param {String} options.format - Available formats are: 'css', 'sass', 'less', and 'stylus'. If you want to customize the format and can't use one of those predefined formats, use the `formatting` option
|
|
47
48
|
* @param {Object} options.formatting - Custom formatting properties that define parts of a declaration line in code. The configurable strings are: prefix, indentation, separator, suffix, and commentStyle. Those are used to generate a line like this: `${indentation}${prefix}${prop.name}${separator} ${prop.value}${suffix}`
|
|
49
|
+
* @param {Boolean} options.themeable [false] - Whether tokens should default to being themeable.
|
|
48
50
|
* @returns {Function}
|
|
49
51
|
*/
|
|
50
|
-
function createPropertyFormatter({
|
|
52
|
+
function createPropertyFormatter({
|
|
53
|
+
outputReferences = false,
|
|
54
|
+
outputReferenceFallbacks = false,
|
|
55
|
+
dictionary,
|
|
56
|
+
format,
|
|
57
|
+
formatting = {},
|
|
58
|
+
themeable = false
|
|
59
|
+
}) {
|
|
51
60
|
let {prefix, commentStyle, indentation, separator, suffix} = Object.assign({}, defaultFormatting, formatting);
|
|
52
61
|
|
|
53
62
|
switch(format) {
|
|
@@ -105,7 +114,11 @@ function createPropertyFormatter({outputReferences, dictionary, format, formatti
|
|
|
105
114
|
if (ref.value && ref.name) {
|
|
106
115
|
value = value.replace(ref.value, function() {
|
|
107
116
|
if (format === 'css') {
|
|
108
|
-
|
|
117
|
+
if (outputReferenceFallbacks) {
|
|
118
|
+
return `var(${prefix}${ref.name}, ${ref.value})`;
|
|
119
|
+
} else {
|
|
120
|
+
return `var(${prefix}${ref.name})`;
|
|
121
|
+
}
|
|
109
122
|
} else {
|
|
110
123
|
return `${prefix}${ref.name}`;
|
|
111
124
|
}
|
|
@@ -117,7 +130,8 @@ function createPropertyFormatter({outputReferences, dictionary, format, formatti
|
|
|
117
130
|
|
|
118
131
|
to_ret_prop += prop.attributes.category === 'asset' ? `"${value}"` : value;
|
|
119
132
|
|
|
120
|
-
|
|
133
|
+
const themeable_prop = typeof prop.themeable === 'boolean' ? prop.themeable : themeable;
|
|
134
|
+
if (format === 'sass' && themeable_prop) {
|
|
121
135
|
to_ret_prop += ' !default';
|
|
122
136
|
}
|
|
123
137
|
|
|
@@ -135,4 +149,4 @@ function createPropertyFormatter({outputReferences, dictionary, format, formatti
|
|
|
135
149
|
}
|
|
136
150
|
}
|
|
137
151
|
|
|
138
|
-
module.exports = createPropertyFormatter;
|
|
152
|
+
module.exports = createPropertyFormatter;
|
|
@@ -38,7 +38,7 @@ const defaultFormatting = {
|
|
|
38
38
|
* StyleDictionary.registerFormat({
|
|
39
39
|
* name: 'myCustomFormat',
|
|
40
40
|
* formatter: function({ dictionary, file }) {
|
|
41
|
-
* return fileHeader({file, 'short') +
|
|
41
|
+
* return fileHeader({file, commentStyle: 'short'}) +
|
|
42
42
|
* dictionary.allTokens.map(token => `${token.name} = ${token.value}`)
|
|
43
43
|
* .join('\n');
|
|
44
44
|
* }
|
|
@@ -27,6 +27,7 @@ const defaultFormatting = {
|
|
|
27
27
|
* @param {Object} options.dictionary - The dictionary object that gets passed to the formatter method.
|
|
28
28
|
* @param {Boolean} options.outputReferences - Whether or not to output references
|
|
29
29
|
* @param {Object} options.formatting - Custom formatting properties that define parts of a declaration line in code. This will get passed to `formatHelpers.createPropertyFormatter` and used for the `lineSeparator` between lines of code.
|
|
30
|
+
* @param {Boolean} options.themeable [false] - Whether tokens should default to being themeable.
|
|
30
31
|
* @returns {String}
|
|
31
32
|
* @example
|
|
32
33
|
* ```js
|
|
@@ -38,7 +39,7 @@ const defaultFormatting = {
|
|
|
38
39
|
* });
|
|
39
40
|
* ```
|
|
40
41
|
*/
|
|
41
|
-
function formattedVariables({format, dictionary, outputReferences=false, formatting={}}) {
|
|
42
|
+
function formattedVariables({ format, dictionary, outputReferences = false, formatting = {}, themeable = false}) {
|
|
42
43
|
let {allTokens} = dictionary;
|
|
43
44
|
|
|
44
45
|
let {lineSeparator} = Object.assign({}, defaultFormatting, formatting);
|
|
@@ -56,9 +57,9 @@ function formattedVariables({format, dictionary, outputReferences=false, formatt
|
|
|
56
57
|
}
|
|
57
58
|
|
|
58
59
|
return allTokens
|
|
59
|
-
.map(createPropertyFormatter({ outputReferences, dictionary, format, formatting }))
|
|
60
|
+
.map(createPropertyFormatter({ outputReferences, dictionary, format, formatting, themeable }))
|
|
60
61
|
.filter(function(strVal) { return !!strVal })
|
|
61
62
|
.join(lineSeparator);
|
|
62
63
|
}
|
|
63
64
|
|
|
64
|
-
module.exports = formattedVariables;
|
|
65
|
+
module.exports = formattedVariables;
|