Class: Middleman::Svg::Extension

Inherits:
Extension
  • Object
show all
Defined in:
lib/middleman/svg/extension.rb

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(app, options_hash = {}, &block) ⇒ Extension

Returns a new instance of Extension.



8
9
10
11
12
# File 'lib/middleman/svg/extension.rb', line 8

def initialize( app, options_hash={}, &block)
  super

  require 'active_support/core_ext/string'
end

Class Method Details

.asset_path(source) ⇒ Object



40
41
42
43
44
45
46
47
48
# File 'lib/middleman/svg/extension.rb', line 40

def self.asset_path(source)
  root = Middleman::Application.root
  source_path = File.join(root, 'source')
  if File.exists?(File.join(source_path, 'images', source))
    File.read(File.join(source_path, 'images', source))
  elsif File.exists?(File.join(source_path, 'fonts/svg', source))
    File.read(File.join(source_path, 'fonts/svg', source))
  end
end

.extension_hint(filename) ⇒ Object



61
62
63
# File 'lib/middleman/svg/extension.rb', line 61

def self.extension_hint(filename)
  filename.ends_with?(".svg") ? "" : "(Try adding .svg to your filename) "
end

.placeholder(filename) ⇒ Object



50
51
52
53
54
55
56
57
58
59
# File 'lib/middleman/svg/extension.rb', line 50

def self.placeholder(filename)
  css_class = Middleman::Svg.configuration.svg_not_found_css_class
  not_found_message = "'#{filename}' #{Middleman::Svg::Extension.extension_hint(filename)}"

  if css_class.nil?
    return "<svg><!-- SVG file not found: #{not_found_message}--></svg>".html_safe
  else
    return "<svg class='#{css_class}'><!-- SVG file not found: #{not_found_message}--></svg>".html_safe
  end
end

.read_svg(filename) ⇒ Object



32
33
34
35
36
37
38
# File 'lib/middleman/svg/extension.rb', line 32

def self.read_svg(filename)
  if Middleman::Svg::IOResource === filename
    Middleman::Svg::IOResource.read filename
  else
    Middleman::Svg::Extension.asset_path(filename)
  end
end

Instance Method Details

#inline_svg(filename, transform_params = {}) ⇒ Object



14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
# File 'lib/middleman/svg/extension.rb', line 14

def inline_svg(filename, transform_params={})
  begin
    svg_file = Middleman::Svg::Extension.read_svg(filename)
  rescue Middleman::Svg::AssetFile::FileNotFound
    return Middleman::Svg::Extension.placeholder(filename) unless transform_params[:fallback].present?

    if transform_params[:fallback].present?
      begin
        svg_file = Middleman::Svg::Extension.read_svg(transform_params[:fallback])
      rescue Middleman::Svg::AssetFile::FileNotFound
        Middleman::Svg::Extension.placeholder(filename)
      end
    end
  end

  Middleman::Svg::TransformPipeline.generate_html_from(svg_file, transform_params).html_safe
end