Source: fur.js

Source: fur.js

/**
 * A fur context.
 * @memberof module:fur/lib
 * @inner
 * @constructor Fur
 */

'use strict'

const argx = require('argx')

const furLogger = require('fur-logger')
const BannerGenerator = require('./generators/banner_generator')
const FaviconGenerator = require('./generators/favicon_generator')

const noMoreCallbackError = () => new Error('Callback is no longer supported. Use promise interface instead.')

/** @lends Fur **/
function Fur (config) {
  Object.assign(this, config)
}

Fur.prototype = {
  /**
   * Generate banner
   * @param {string} filename - Filename to generate
   * @param {object} options - Optional settings.
   * @returns {Promise}
   */
  async banner (filename, options) {
    let args = argx(arguments)
    if (args.pop('function')) {
      throw noMoreCallbackError()
    }
    filename = args.shift('string')
    options = args.pop('object') || {}

    let logger = furLogger(options.verbose)
    let generator = new BannerGenerator({
      width: options.width,
      height: options.height,
      shape: options.shape,
      color: options.color,
      font: options.font,
      text: options.text,
      format: options.format,
      fontSize: options.fontSize
    })
    await generator.generate(filename)
    logger.logImageGenerated(filename)
  },
  /**
   * Generate favicon
   * @param {string} filename - Filename to generate
   * @param {object} options - Optional settings.
   * @returns {Promise}
   */
  async favicon (filename, options) {
    let args = argx(arguments)
    if (args.pop('function')) {
      throw noMoreCallbackError()
    }
    filename = args.shift('string')
    options = args.pop('object') || {}

    let logger = furLogger(options.verbose)
    let generator = new FaviconGenerator({
      size: options.size,
      shape: options.shape,
      color: options.color,
      font: options.font,
      text: options.text,
      format: options.format,
      fontSize: options.fontSize
    })
    await generator.generate(filename)
    logger.logImageGenerated(filename)
  }
}

module.exports = Fur