2 # Provide an icons attribute on the site object
11 attr_reader :name, :id, :unicode, :created, :categories
13 def initialize(icon_object)
14 @icon_object = icon_object
16 # Class name used in CSS and HTML
17 @icon_object['class'] = icon_object['id']
18 # Normalize the aliases
19 @icon_object['aliases'] ||= []
21 @name = icon_object['name']
22 @id = icon_object['id']
23 @class = icon_object['class']
24 @aliases = icon_object['aliases']
25 @unicode = icon_object['unicode']
26 @created = icon_object['created']
27 @categories = icon_object['categories']
43 def_delegators :@icon_array, :each, :<<
45 def initialize(icon_array)
46 @original_icon_array = icon_array
49 icon_array.each { |icon_object|
50 @icon_array << Icon.new(icon_object)
65 def expand_aliases(icons)
69 # Remove the aliases since we are expanding them
70 expanded << icon.reject{ |k| k == 'aliases'}
72 icon['aliases'].each { |alias_id|
73 alias_icon = expanded[-1].dup
74 alias_icon['class'] = alias_id
75 alias_icon['alias_of'] = icon
77 expanded << alias_icon
84 def category(icons, cat)
85 icons.select { |icon| icon['categories'].include?(cat) }
88 def version(icons, version)
89 icons.select { |icon| icon['created'] == version }
92 def sort_by(icons, sort_key)
93 icons.sort_by! { |icon| icon[sort_key] }
97 Liquid::Template.register_filter(IconFilters)
116 # Reads the YAML file that stores all data about icons
118 @icons = IconList.new(YAML.load_file(self.config['icon_meta'])['icons'])
122 # After generation, runs a build of Font-Awesome
124 system("make build", :chdir => self.config['destination'], :out => :err)
129 "site" => self.config.merge({
131 "posts" => self.posts.sort { |a, b| b <=> a },
132 "pages" => self.pages,
133 "html_pages" => self.pages.reject { |page| !page.html? },
134 "categories" => post_attr_hash('categories'),
135 "tags" => post_attr_hash('tags')}),