module Fontastic2Sass

Constants

VERSION

Public Class Methods

run!(source, font_path, sass_path, options = {}) click to toggle source
# File lib/fontastic2sass.rb, line 13
def self.run!(source, font_path, sass_path, options = {})
  defaults = {
    scss: false,
    compatible: false,
    oocss: false,
    demo_path: options[:"demo-path"]
  }

  options = defaults.merge options.symbolize_keys

  utilities = Fontastic2Sass::Utilities.new

  if source.end_with? '.zip'
    files = Fontastic2Sass::Zip.new source

  elsif ::Dir.exists? source
    files = Fontastic2Sass::Dir.new source

  else
    raise 'Source must be either a directory or .zip file!'

  end

  # raise 'Source must contain \'selection.json\'.' unless files.files['selection.json']

  font = Fontastic2Sass::Font.new files.metadata_file

  syntax = options[:scss] ? 'scss' : 'sass'

  compatible = options[:compatible] || false

  sass = Fontastic2Sass::Sass.new font, syntax, compatible


  # Save the Sass file
  utilities.create_file "#{sass_path}/_icons.#{sass.syntax}", sass.code

  if options[:oocss]
    utilities.create_file "#{sass_path}/_oocss_icons.#{sass.syntax}", sass.oocss
  end

  files.font_files.each do |filename, content|
    utilities.create_file "#{font_path}/#{filename.sub('fonts/', '')}", content
  end

  if options[:demo_path]
    files.demo_files.each do |filename, content|
      utilities.create_file "#{options[:demo_path]}/#{filename}", content
    end

    files.font_files.each do |filename, content|
      utilities.create_file "#{options[:demo_path]}/demo-files/fonts/#{filename.sub('fonts/', '')}", content
    end

    utilities.gsub_file "#{options[:demo_path]}/icons-reference.html", /href="styles.css">/, 'href="demo-files/styles.css">'
  end
end