Module: BadgesToSVG

Defined in:
lib/badges2svg.rb

Constant Summary collapse

RULES =

see shields.io/

[
  { :name    => :travis_branch,
    :pattern => 'https?://(?:secure.)?travis-ci.org/%{user}/%{repo}.png' +
                  '\\?branch=%{branch}',
    :string  => '/travis/%{user}/%{repo}/%{branch}.svg'
  },
  {
    :name    => :travis,
    :pattern => 'https?://(?:secure.)?travis-ci.org/%{user}/%{repo}.png',
    :string  => '/travis/%{user}/%{repo}.svg'
  },
  {
    :name    => :gittip,
    :pattern => 'https?://img.shields.io/gittip/%{user}.png',
    :string  => '/gittip/%{user}.svg'
  },
  {
    :name    => :coveralls_branch,
    :pattern => 'https?://coveralls.io/r(epos)?/%{user}/%{repo}/badge.png' +
                  '\\?branch=%{branch}',
    :string  => '/coveralls/%{user}/%{repo}/%{branch}.svg'
  },
  {
    :name    => :coveralls,
    :pattern => 'https?://coveralls.io/r(epos)?/%{user}/%{repo}/badge.png',
    :string  => '/coveralls/%{user}/%{repo}.svg'
  },
  {
    :name    => :gemnasium,
    :pattern => 'https?://gemnasium.com/%{user}/%{repo}.png',
    :string  => '/gemnasium/%{user}/%{repo}.svg'
  },
  {
    :name    => :code_climate,
    :pattern => 'https://codeclimate.com/github/%{user}/%{repo}.png',
    :string  => '/codeclimate/github/%{user}/%{repo}.svg'
  },

  {
    :name    => :gem_version,
    :pattern => 'https?://badge.fury.io/rb/%{repo}(?:@2x)?.png',
    :string  => '/gem/v/%{repo}.svg'
  },
  {
    :name    => :npm_version,
    :pattern => 'https?://badge.fury.io/js/%{repo}(?:@2x)?.png',
    :string  => '/npm/v/%{repo}.svg'
  },
  {
    :name    => :pypi_version,
    :pattern => 'https?://badge.fury.io/py/%{repo}(?:@2x)?.png',
    :string  => '/pypi/v/%{repo}.svg'
  },
  {
    :name    => :packagist_version,
    :pattern => 'https?://poser.pugx.org/%{user}/%{repo}/version.png',
    :string  => '/packagist/v/%{user}/%{repo}.svg'
  },

  {
    :name    => :packagist_downloads,
    :pattern => 'https?://poser.pugx.org/%{user}/%{repo}/d/total.png',
    :string  => '/packagist/dm/%{user}/%{repo}.svg'
  },
  {
    :name    => :pypi_downloads,
    :pattern => 'https?://pypip.in/d/%{repo}/badge.png',
    :string  => '/pypi/dm/%{repo}.svg'
  },

  {
    :name    => :misc_png,
    :pattern => 'https?://img.shields.io/%{path}.png',
    :string  => '/%{path}.svg'
  },
]

Class Method Summary collapse

Class Method Details

.compile_pattern(pat, *a) ⇒ Object



94
95
96
97
# File 'lib/badges2svg.rb', line 94

def compile_pattern(pat, *a)
  pat = pat.gsub(/\./, '\\.')
  Regexp.new ("\\b#{pat.gsub(/%\{(\w+)\}/, "(?<\\1>.+?)")}\\b")
end

.replace(content, opts = {}) ⇒ Object



99
100
101
102
103
104
105
106
107
108
# File 'lib/badges2svg.rb', line 99

def replace content, opts={}
  root = root_url(opts)
  RULES.each do |r|
    pat  = compile_pattern(r[:pattern])
    repl = root + r[:string].gsub(/%\{(\w+)\}/, "\\\\k<\\1>")
    content.gsub!(pat, repl)
  end

  content
end

.root_url(opts = {}) ⇒ Object



90
91
92
# File 'lib/badges2svg.rb', line 90

def root_url(opts={})
  "#{opts[:protocol] || @protocol}://#{opts[:domain] || @domain}"
end

.versionObject



86
87
88
# File 'lib/badges2svg.rb', line 86

def version
  '0.1.3'
end