A stylesheet language written in TypeScript that compiles to CSS
Você não pode selecionar mais de 25 tópicos Os tópicos devem começar com uma letra ou um número, podem incluir traços ('-') e podem ter até 35 caracteres.

rule.ts 931B

1234567891011121314151617181920212223242526272829
  1. import * as AST from '../ast';
  2. import Env, { EnvError } from '../env';
  3. export class Rule {
  4. public property: AST.Property;
  5. public values: AST.Value[];
  6. public constructor(
  7. property: AST.Property,
  8. values: AST.Value[]
  9. ) {
  10. this.property = property;
  11. this.values = values;
  12. }
  13. public compile(env: Env, opts: AST.Opts): string | EnvError {
  14. const wordSpacer = opts.prettyPrint ? ' ' : '';
  15. const indentSpacer = opts.prettyPrint ? ' ' + Array(opts.depth).fill(' ').join('') : '';
  16. const property = this.property.compile(env, opts);
  17. if (property instanceof EnvError) return property;
  18. const values: string[] = [];
  19. for (const value of this.values) {
  20. const compiledValue = value.compile(env, opts);
  21. if (compiledValue instanceof EnvError) return compiledValue;
  22. values.push(compiledValue);
  23. }
  24. return `${indentSpacer}${property}:${wordSpacer}${values.join(',')};`;
  25. }
  26. }