class Purpur::Generator
Public Class Methods
new()
click to toggle source
# File lib/purpur/generator.rb, line 8 def initialize @templates_dir = File.expand_path('../../templates', __FILE__) end
Public Instance Methods
files()
click to toggle source
# File lib/purpur/generator.rb, line 12 def files Purpur.icons end
generate(template, destination_path)
click to toggle source
# File lib/purpur/generator.rb, line 49 def generate(template, destination_path) file = File.new(destination_path, 'w') file.write sprite(template) file.close end
icons()
click to toggle source
# File lib/purpur/generator.rb, line 20 def icons files.map do |name| file = read_svg(name) doc = Nokogiri::HTML::DocumentFragment.parse(file) doc.css('*').remove_attr('fill') svg = doc.at_css('svg') viewbox = svg['viewbox'] g = svg.search('g') container = g.empty? ? svg : g shape = container.children.map {|c| c.to_s}.join('') name = File.basename(name, Purpur::ICON_EXTENTION) { name: name, viewbox: viewbox, shape: shape } end end
optimize(code, template)
click to toggle source
# File lib/purpur/generator.rb, line 39 def optimize(code, template) template == 'sprite.svg' ? code.gsub(/$\s+/, '') : code end
read_svg(filename)
click to toggle source
# File lib/purpur/generator.rb, line 16 def read_svg(filename) File.read(filename) end
sprite(template)
click to toggle source
# File lib/purpur/generator.rb, line 43 def sprite(template) view = File.read File.join(@templates_dir, "#{template}.erb") result = ERB.new(view).result(binding) optimize(result, template) end