Home Reference Source Test

source/parser.js

import LESS from 'less';

import * as SASS from 'sass';

import Stylus from 'stylus';

import YAML from 'yaml';


/**
 * @private
 *
 * @param {String} raw
 *
 * @return {String}
 */
export function css(raw) {  return raw;  }


/**
 * @private
 *
 * @param {String} raw
 * @param {String} path
 * @param {Object} [option] - http://lesscss.org/usage/#less-options
 *
 * @return {String}
 */
export async function less(raw, path, option) {

    return  (await LESS.render(raw,  { paths: [path], ...option })).css;
}


/**
 * @private
 *
 * @param {String} raw
 * @param {String} path
 * @param {Object} [option] - https://github.com/sass/node-sass#options
 *
 * @return {String}
 */
export function sass(raw, path, option) {

    return  SASS.renderSync({ data: raw,  includePaths: [path],  ... option }).css;
}

/**
 * @private
 *
 * @type {Function}
 */
export const scss = sass;


/**
 * @private
 *
 * @param {string} raw
 * @param {String} path
 * @param {Object} [option] - https://github.com/stylus/stylus/blob/HEAD/docs/js.md
 *
 * @return {Promise<string>} CSS source code
 */
export function stylus(raw,  path,  option = { }) {

    return  new Promise((resolve, reject) => Stylus.render(
        raw,
        { paths: [path], ...option },
        (error, CSS)  =>  error ? reject( error ) : resolve( CSS )
    ));
}


/**
 * @private
 *
 * @param {String} raw
 * @param {Object} [option] - https://eemeli.org/yaml/#options
 *
 * @return {String}
 */
export function yaml(raw, option) {  return  YAML.parse(raw, option);  }