Sha256: b0aa5bb029e24fa706ad3f20fa54c51c2d49857b9e2a322a43175f3504b8693f
Contents?: true
Size: 1.88 KB
Versions: 2
Compression:
Stored size: 1.88 KB
Contents
require 'zlib' require 'digest' module Esvg class Svg include Esvg::Utils attr_reader :asset, :vesion, :name def initialize(name, symbols, config={}) @name = name @config = config @symbols = symbols @asset = File.basename(name).start_with?('_') @version = @config[:version] || Digest::MD5.hexdigest(symbols.map(&:mtime).join) end def embed %Q{if (!document.querySelector('#esvg-#{id}')) { document.querySelector('body').insertAdjacentHTML('afterbegin', '#{svg}') }} end def named?(names=[]) [names].flatten.map { |n| dasherize(n) }.include? dasherize(@name) end def id if @name == '.' 'symbols' else dasherize "#{@config[:prefix]}-#{name_key}" end end def path @path ||= begin name = name_key if name.start_with?('_') # Is it an asset? File.join @config[:assets], "#{name}.js" else # or a build file? # User doesn't want a fingerprinted build file and hasn't set a version if !@config[:fingerprint] && !@config[:version] File.join @config[:build], "#{name}.js" else File.join @config[:build], "#{name}-#{@version}.js" end end end end private def name_key if @name == '_' # Root level asset file "_#{@config[:filename]}".sub(/_+/, '_') elsif @name == '.' # Root level build file @config[:filename] else @name end end def optimize @symbols.map(&:optimize).join.gsub("\n",'') end def svg attr = { "data-symbol-class": @config[:class], "data-prefix": @config[:prefix], "version": "1.1", "style": "height:0;position:absolute" } %Q{<svg id="esvg-#{id}" #{attributes(attr)}>#{optimize}</svg>} end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
esvg-4.2.1 | lib/esvg/svg.rb |
esvg-4.2.0 | lib/esvg/svg.rb |