Sha256: 0d3cf4a466f6394bd45b71a04a5df0e972ad5aea8b1ef85a6d4453f8378fac8d

Contents?: true

Size: 1.7 KB

Versions: 5

Compression:

Stored size: 1.7 KB

Contents

require 'rexml/document'

# Build browserconfig XML
class Browserconfig
  attr_accessor :document

  def load(source_path, config, prefix)
    @document = if File.exist? source_path
                  REXML::Document.new File.read source_path
                else
                  REXML::Document.new
                end
    add_browserconfig_schema
    add_browserconfig_elements config, prefix
  end

  def add(path, element, attributes = {}, text = nil)
    parent = @document.elements[path]
    parent.elements[element] = REXML::Element.new element
    attributes.each do |key, value|
      parent.elements[element].add_attribute key, value
    end
    parent.add_text text if text
  end

  def dump
    output = ''
    formatter = REXML::Formatters::Pretty.new 2
    formatter.compact = true
    formatter.write @document, output
    output
  end

  private

  def add_browserconfig_schema
    browserconfig = @document.elements['browserconfig']
    browserconfig ||= @document.elements.add 'browserconfig'
    msapplication = browserconfig.elements['msapplication']
    msapplication ||= browserconfig.elements.add 'msapplication'
    tile = msapplication.elements['tile']
    tile || msapplication.elements.add('tile')
  end

  def add_browserconfig_elements(config, prefix)
    path = 'browserconfig/msapplication/tile'
    pathname = Pathname.new prefix
    add path, 'square70x70logo', 'src' => pathname.join('favicon-128x128.png')
    add path, 'square150x150logo', 'src' => pathname.join('favicon-270x270.png')
    add path, 'wide310x150logo', 'src' => pathname.join('favicon-558x270.png')
    add path, 'square310x310logo', 'src' => pathname.join('favicon-558x558.png')
    add path, 'TileColor', {}, config['tile-color']
  end
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
jekyll-favicon-0.2.9 lib/browserconfig.rb
jekyll-favicon-0.2.8 lib/browserconfig.rb
jekyll-favicon-0.2.7 lib/browserconfig.rb
jekyll-favicon-0.2.6 lib/browserconfig.rb
jekyll-favicon-0.2.5 lib/browserconfig.rb