class MagLove::Commands::Fonts

Public Instance Methods

compile() click to toggle source
# File lib/maglove/commands/fonts.rb, line 5
def compile
  # clean up
  FileUtils.rm_rf("dist/fonts")
  FileUtils.mkdir_p("dist/fonts")

  # 1: Build font map
  debug("▸ building font map")
  font_map = {}
  font_files = Dir.glob("src/fonts/*/*.ttf")
  font_files.each do |font_file|
    (_root_dir, _font_dir, font_id, font_filename) = font_file.split("/")
    font_variant = font_filename.gsub("#{font_id}-", '').gsub(".ttf", '')
    font_map[font_id] = [] if font_map[font_id].nil?
    font_map[font_id].push(font_variant)
  end

  # 2: Generate stylesheets
  info("▸ compiling fonts:")
  FileUtils.touch("dist/fonts/fonts.css")
  open("dist/fonts/fonts.css", 'wb') do |master_file|
    font_map.each do |font_id, variants|
      debug("~▸ compiling font '#{font_id}'")
      FileUtils.mkdir_p("dist/fonts/#{font_id}")
      variants.each do |variant|
        FileUtils.copy("src/fonts/#{font_id}/#{font_id}-#{variant}.ttf", "dist/fonts/#{font_id}/#{font_id}-#{variant}.ttf")
      end
      font_style_file = "dist/fonts/#{font_id}/font.css"
      FileUtils.touch(font_style_file)
      open(font_style_file, 'wb') do |file|
        master_file << "/* #{font_id} (#{variants.join(', ')}) */\n"
        variants.each do |variant|
          file << get_font_styles(font_id, variant)
          master_file << get_font_styles(font_id, variant, "#{font_id}/")
        end
        master_file << "\n"
      end
    end
  end
end
push() click to toggle source
# File lib/maglove/commands/fonts.rb, line 47
def push
  invoke(Fonts, :compile, [], {})
  info("▸ pushing fonts to gcs")
  `gsutil -m rsync -r dist/fonts/ gs://#{options.bucket}/fonts/`
end

Private Instance Methods

get_font_styles(font_id, variant, append_dir = '') click to toggle source
# File lib/maglove/commands/fonts.rb, line 55
def get_font_styles(font_id, variant, append_dir = '')
  font_name = font_id.tr('-', ' ').titleize
  case variant
  when "regular"
    "@font-face{font-family:'#{font_name}';src:url('#{append_dir}#{font_id}-#{variant}.ttf');}\n"
  when "bold"
    "@font-face{font-family:'#{font_name}';src:url('#{append_dir}#{font_id}-#{variant}.ttf');font-weight:bold;}\n"
  when "italic"
    "@font-face{font-family:'#{font_name}';src:url('#{append_dir}#{font_id}-#{variant}.ttf');font-style:italic;}\n"
  when "bolditalic"
    "@font-face{font-family:'#{font_name}';src:url('#{append_dir}#{font_id}-#{variant}.ttf');font-weight:bold;font-style:italic;}\n"
  when "light"
    "@font-face{font-family:'#{font_name}';src:url('#{append_dir}#{font_id}-#{variant}.ttf');font-weight:300;}\n"
  end
end