Sha256: 9cc9e1f4782135404cd6db848cb6c82dda470c8f655d342dedf223b7167e6315

Contents?: true

Size: 1.94 KB

Versions: 2

Compression:

Stored size: 1.94 KB

Contents

module Facades
  module SassExtensions
    module Icons
      class << self
        
        def glyph_sets
          @glyph_sets ||= {}
        end
        
      end
      
      ##
      # Creates a unicode entity for use in a content: description in css.
      # 
      def icon_glyph(name, set = 'facades')
        Sass::Script::String.new("\\#{icon_glyph_value(name, set)}")
      end
      
      ##
      # Creates a entity representation of the unicode character.
      # Used in IE7/legacy support.
      #
      def icon_entity(name, set = 'facades')
        Sass::Script::String.new("&#xf#{icon_glyph_value(name, set)};&nbsp;")
      end
      
      ##
      # Create a sass list of icon names from an icon pack.
      # 
      def icon_names(set = "facades")
        listing = icon_translations(set)
        keys = (listing.keys || [])
        keys = keys.collect{ |k| Sass::Script::String.new(k) }
        Sass::Script::List.new(keys, ',')
      end
      
      ##
      # Maps a "pack" name to a font name.
      # 
      def icon_font(name)
        Sass::Script::String.new({ 
          'facades'       => 'FacadesRegular',
          'font-awesome'  => 'FontAwesome'
        }[name])
      end
      
      private
      
      def icon_translations(set)
        set = set.value if set.respond_to?(:value)
        #glyphs = Icons.glyph_sets[set] || YAML::load(File.open(File.join(Facades.icon_path, "#{set}.yml")))
        glyphs = Icons.glyph_sets[set] || YAML::load(File.open(Facades::Config.icon_definitions[set.to_s.underscore.to_sym]))
        Icons.glyph_sets[set] ||= Hash[glyphs.map{ |k, v| [k.to_s.gsub("_", "-"), v] }]
        Icons.glyph_sets[set]
      end
      
      def icon_glyph_value(name, set = 'facades')
        name  = name.to_s
        value = icon_translations(set)[name]
        if value.nil?
          raise Sass::SyntaxError, "The icon '#{name}' does not exist within icon pack #{set}."
        end
        value
      end
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
facades-1.0.9 lib/facades/sass_extensions/icons.rb
facades-1.0.8 lib/facades/sass_extensions/icons.rb