// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. /// Common definitions used for setting up the test environment. library; import 'package:csslib/parser.dart'; import 'package:csslib/visitor.dart'; export 'package:csslib/src/preprocessor_options.dart'; const PreprocessorOptions simpleOptionsWithCheckedAndWarningsAsErrors = PreprocessorOptions( useColors: false, checked: true, warningsAsErrors: true, inputFile: 'memory', ); const PreprocessorOptions simpleOptions = PreprocessorOptions(useColors: false, inputFile: 'memory'); const PreprocessorOptions options = PreprocessorOptions( useColors: false, warningsAsErrors: true, inputFile: 'memory'); /// Spin-up CSS parser in checked mode to detect any problematic CSS. Normally, /// CSS will allow any property/value pairs regardless of validity; all of our /// tests (by default) will ensure that the CSS is really valid. StyleSheet parseCss(String cssInput, {List? errors, PreprocessorOptions? opts}) => parse(cssInput, errors: errors, options: opts ?? simpleOptionsWithCheckedAndWarningsAsErrors); /// Spin-up CSS parser in checked mode to detect any problematic CSS. Normally, /// CSS will allow any property/value pairs regardless of validity; all of our /// tests (by default) will ensure that the CSS is really valid. StyleSheet compileCss(String cssInput, {List? errors, PreprocessorOptions? opts, bool polyfill = false, List? includes}) => compile(cssInput, errors: errors, options: opts ?? simpleOptionsWithCheckedAndWarningsAsErrors, polyfill: polyfill, includes: includes); StyleSheet polyFillCompileCss(String input, {List? errors, PreprocessorOptions? opts}) => compileCss(input, errors: errors, polyfill: true, opts: opts); /// Pretty printer for CSS. String prettyPrint(StyleSheet ss) { // Walk the tree testing basic Visitor class. walkTree(ss); return (CssPrinter()..visitTree(ss, pretty: true)).toString(); } /// Helper function to emit compact (non-pretty printed) CSS for suite test /// comparisons. Spaces, new lines, etc. are reduced for easier comparisons of /// expected suite test results. String compactOutput(StyleSheet ss) { walkTree(ss); return (CssPrinter()..visitTree(ss, pretty: false)).toString(); } String printExpressions(Expressions node) { var printer = CssPrinter(); // TODO: It would be nice if TreeNode had an `accept` method. printer.visitExpressions(node); return printer.toString(); } /// Walks the style sheet tree does nothing; insures the basic walker works. void walkTree(StyleSheet ss) { Visitor().visitTree(ss); } String dumpTree(StyleSheet ss) => treeToDebugString(ss);