Sha256: de6db7dde46f7f76899a3c10c76565052bc7b74e5935578bc6b7bae1f6511e9c

Contents?: true

Size: 1.37 KB

Versions: 4

Compression:

Stored size: 1.37 KB

Contents

begin
  require 'open3_detach'
rescue LoadError
  require 'open3'
end

module GitHub
  module Markup
    extend self
    @@markups = {}

    def render(filename, content)
      if proc = renderer(filename)
        proc[content]
      else
        content
      end
    end

    def markup(file, pattern, &block)
      require file.to_s
      add_markup(pattern, &block)
    rescue LoadError
      nil
    end

    def command(command, regexp, &block)
      command = command.to_s
      if !File.exists?(command) && !command.include?('/')
        command = File.dirname(__FILE__) + '/commands/' + command.to_s
      end

      add_markup(regexp) do |content|
        rendered = execute(command, content)
        block ? block.call(rendered) : rendered
      end
    end

    def add_markup(regexp, &block)
      @@markups[regexp] = block
    end

    def can_render?(filename)
      !!renderer(filename)
    end

    def renderer(filename)
      @@markups.each do |key, value|
        if Regexp.compile("\\.(#{key})$") =~ filename
          return value
        end
      end
      nil
    end

    def execute(command, target)
      out = ''
      Open3.popen3(command) do |stdin, stdout, _|
        stdin.puts target
        stdin.close
        out = stdout.read
      end
      out.gsub("\r", '')
    end

    # Define markups
    instance_eval File.read(File.dirname(__FILE__) + '/markups.rb')
  end
end

Version data entries

4 entries across 4 versions & 2 rubygems

Version Path
github-markup-0.1.3 lib/github/markup.rb
github-markup-0.1.2 lib/github/markup.rb
github-markup-0.1.1 lib/github/markup.rb
github_markup-0.1.1 lib/github/markup.rb