UNPKG

@stylable/core

Version:

CSS for Components

35 lines (27 loc) 1.08 kB
import { extract, parseWithComments } from 'jest-docblock'; import { StylableMeta, StylableSymbol } from './stylable-meta'; export interface CssDoc { description: string; tags: Record<string, string>; } export function getCssDocsForSymbol(meta: StylableMeta, symbol: StylableSymbol): CssDoc | null { let commentNode; if (symbol._kind === 'class' || symbol._kind === 'element') { commentNode = meta.simpleSelectors[symbol.name] && meta.simpleSelectors[symbol.name].node.prev(); } else if (symbol._kind === 'var') { commentNode = symbol.node.prev(); } if (commentNode && commentNode.type === 'comment') { const { comments, pragmas } = parseWithComments(extract(commentNode.toString())); const res: CssDoc = { description: comments, tags: {}, }; for (const [pragmaName, pragmaValue] of Object.entries(pragmas)) { res.tags[pragmaName] = Array.isArray(pragmaValue) ? pragmaValue.join(' ') : pragmaValue; } return res; } return null; }