diff --git a/lib/cssModules.es6 b/lib/cssModules.es6 index 0e2a7c7..7573403 100644 --- a/lib/cssModules.es6 +++ b/lib/cssModules.es6 @@ -26,6 +26,15 @@ export default (cssModulesPath) => { function getCssClassName(cssModulesPath, cssModuleName) { + if (typeof cssModulesPath === 'string') { + return getCssClassNameFromPath(cssModulesPath, cssModuleName); + } else { + return getCssClassNameFromObject(cssModulesPath, cssModuleName); + } +} + + +function getCssClassNameFromPath(cssModulesPath, cssModuleName) { if (fs.lstatSync(cssModulesPath).isDirectory()) { let cssModulesDir = cssModulesPath; let cssModuleNameParts = cssModuleName.split('.'); @@ -36,6 +45,11 @@ function getCssClassName(cssModulesPath, cssModuleName) { const cssModules = getCssModules(path.resolve(cssModulesPath)); + return getCssClassNameFromObject(cssModules, cssModuleName); +} + + +function getCssClassNameFromObject(cssModules, cssModuleName) { return cssModuleName.trim().split(' ') .map(cssModuleName => { const cssClassName = _get(cssModules, cssModuleName); @@ -43,7 +57,7 @@ function getCssClassName(cssModulesPath, cssModuleName) { throw getError('CSS module "' + cssModuleName + '" is not found'); } else if (typeof cssClassName !== 'string') { throw getError('CSS module "' + cssModuleName + '" is not a string'); - } + } return cssClassName; }) .join(' '); diff --git a/test/cssModules.js b/test/cssModules.js index 20fb40b..013ab0e 100644 --- a/test/cssModules.js +++ b/test/cssModules.js @@ -5,6 +5,7 @@ import cssModules from '..'; const classesPath = path.join(__dirname, 'classes.json'); const classesDir = path.dirname(classesPath); +const classesObj = require(classesPath); describe('posthtml-css-modules', () => { @@ -51,6 +52,15 @@ describe('posthtml-css-modules', () => { }); + it('should inline CSS module from the object', () => { + return init( + '
', + '
', + classesObj + ); + }); + + it('should throw an error if the file with the CSS modules is not found', () => { return init( '
',