class GitHub::Markup::CommandImplementation

def call_block(rendered, content)

def call_block(rendered, content)
  if block && block.arity == 2
    block.call(rendered, content)
  elsif block
    block.call(rendered)
  else
    rendered
  end
end

def execute(command, target)

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

def initialize(regexp, command, &block)

def initialize(regexp, command, &block)
  super regexp
  @command = command.to_s
  @block = block
end

def render(content)

def render(content)
  rendered = execute(command, content)
  rendered = rendered.to_s.empty? ? content : rendered
  call_block(rendered, content)
end