class Asciidoctor::HTML5::InlineImageTemplate

def image(target, type, node)

def image(target, type, node)
  if type == 'icon' && (node.document.attr? 'icons', 'font') 
    style_class = "icon-#{target}"
    if node.attr? 'size'
      style_class = "#{style_class} icon-#{node.attr 'size'}"
    end
    if node.attr? 'rotate'
      style_class = "#{style_class} icon-rotate-#{node.attr 'rotate'}"
    end
    if node.attr? 'flip'
      style_class = "#{style_class} icon-flip-#{node.attr 'flip'}"
    end
    title_attribute = (node.attr? 'title') ? %( title="#{node.attr 'title'}") : nil
    img = %(<i class="#{style_class}"#{title_attribute}></i>)
  elsif type == 'icon' && !(node.document.attr? 'icons')
    img = "[#{node.attr 'alt'}]"
  else
    if type == 'icon'
      resolved_target = node.icon_uri target
    else
      resolved_target = node.image_uri target
    end
    attrs = ['alt', 'width', 'height', 'title'].map {|name|
      if node.attr? name
        %( #{name}="#{node.attr name}")
      else
        nil
      end
    }.join
    img = %(<img src="#{resolved_target}"#{attrs}>)
  end
  if node.attr? 'link'
    img = %(<a class="image" href="#{node.attr 'link'}"#{(node.attr? 'window') ? " target=\"#{node.attr 'window'}\"" : nil}>#{img}</a>)
  end
  if node.role?
    style_classes = %(#{type} #{node.role})
  else
    style_classes = type
  end
  style_attr = (node.attr? 'float') ? %( style="float: #{node.attr 'float'}") : nil
  %(<span class="#{style_classes}"#{style_attr}>#{img}</span>)
end

def result(node)

def result(node)
  image(node.target, node.type, node)
end

def template

def template
  :invoke_result
end