Skip to content

Commit

Permalink
fixup! Feat(variables-scss): Export to javascript #DS-1437
Browse files Browse the repository at this point in the history
  • Loading branch information
literat committed Sep 26, 2024
1 parent 939f4d6 commit 06c7119
Showing 1 changed file with 28 additions and 16 deletions.
44 changes: 28 additions & 16 deletions exporters/variables-scss/src/generators/contentGenerator.ts
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
import { Token, TokenGroup, TokenType } from '@supernovaio/sdk-exporters';
import { generateStylesFromTokens } from './stylesGenerator';
import { StylesObjectType, generateStylesObjectFromTokens } from './stylesObjectGenerator';
import { FileData } from '../config/fileConfig';
import { indentAndFormat } from '../formatters/stylesFormatter';
import { convertToJs, convertToScss, deepMergeObjects } from '../helpers/objectHelper';
import { FileData } from '../config/fileConfig';
import { generateStylesFromTokens } from './stylesGenerator';
import { StylesObjectType, generateStylesObjectFromTokens } from './stylesObjectGenerator';

// Add disclaimer to the top of the content
export const addDisclaimer = (content: string): string => {
Expand All @@ -20,24 +20,36 @@ export const filterTokensByTypeAndGroup = (tokens: Token[], type: TokenType, gro
});
};

export const generateJsObjectOutput = (stylesObject: StylesObjectType): string => {
const entries = Object.entries(stylesObject);
const addEmptyLineBetweenTokenGroups = (index: number, length: number): string => {
return index !== length - 1 ? '\n\n' : '\n';
};

return entries
.map(([key, obj], index) => {
return `export const ${key} = {\n${convertToJs(obj as StylesObjectType)}\n};${index !== entries.length - 1 ? '\n\n' : '\n'}`;
})
.join('');
type ExportTemplateCallback = (entriesLength: number) => (entry: [string, unknown], index: number) => string;

const jsExportTemplate: ExportTemplateCallback = (entriesLength) => {
return ([key, obj], index) => {
return `export const ${key} = {\n${convertToJs(obj as StylesObjectType)}\n};${addEmptyLineBetweenTokenGroups(index, entriesLength)}`;
};
};

export const generateScssObjectOutput = (stylesObject: StylesObjectType): string => {
const scssExportTemplate: ExportTemplateCallback = (entriesLength) => {
return ([key, obj], index) => {
return `${key}: (\n${convertToScss(obj as StylesObjectType)}\n) !default;${addEmptyLineBetweenTokenGroups(index, entriesLength)}`;
};
};

const generateObjectOutput = (stylesObject: StylesObjectType, callback: ExportTemplateCallback) => {
const entries = Object.entries(stylesObject);

return entries
.map(([key, obj], index) => {
return `${key}: (\n${convertToScss(obj as StylesObjectType)}\n) !default;${index !== entries.length - 1 ? '\n\n' : '\n'}`;
})
.join('');
return entries.map(callback(entries.length)).join('');
};

export const generateJsObjectOutput = (stylesObject: StylesObjectType): string => {
return generateObjectOutput(stylesObject, jsExportTemplate);
};

export const generateScssObjectOutput = (stylesObject: StylesObjectType): string => {
return generateObjectOutput(stylesObject, scssExportTemplate);
};

export const getGroups = (tokens: Token[], excludeGroupNames: string[] | null, groupNames: string[]): string[] => {
Expand Down

0 comments on commit 06c7119

Please sign in to comment.