require 'rouge'
require 'open-uri'
require 'uri'

class RemoteSnippet < Liquid::Tag
  def initialize(tag_name, text, tokens)
    super
    args = text.strip.split(' ', 3)
    @path = args[0]
    if args.length() > 2
      @type = args[1]
      @range = args[2]
    elsif args.length() > 1
      @type = args[1]
      @range = "all"
    else
      @type = "text"
      @range = "all"
    end
  end

  def openLink(url)
    begin
      URI.open(url)
    rescue OpenURI::HTTPError
      $stderr.print "Failed to download #{url}"
      raise
    end
  end

  def render(context)
    title = context.registers[:site].config['title']
    prefix = context.registers[:site].config['gitbox_url']
    url = "#{prefix};a=blob_plain;hb=HEAD;f=#{@path}"
    pretty_url = "#{prefix};a=blob;hb=HEAD;f=#{@path}"
    content = ""
    if @range == "all"
      openLink(url) {|f| content = f.read }
    else
      rangenums = @range.split(",", 2)
      first = 0
      second = 0
      if rangenums.length() == 2
        first = Integer(rangenums[0])
        second = Integer(rangenums[1]) - first
        openLink(url) {|f| content = f.each_line.drop(first).take(second).join() }
      else
        first = Integer(rangenums[0])
        openLink(url) {|f| content = f.each_line.drop(first).join() }
      end
    end
    snippet_type = "snippet"
    content = ""
    if @type == "direct"
      content = Kramdown::Document.new(content).to_html
      snippet_type = "page"
    else
      content = content.force_encoding("utf-8")
      formatter = Rouge::Formatters::HTMLLegacy.new
      lexer = Rouge::Lexer.find_fancy(@type, content)
      content = formatter.format(lexer.lex(content))
    end
    #content = CGI::escapeHTML(content)
    return """
#{content}
<p class=\"snippet_footer\">This #{snippet_type} was generated by #{title}'s <strong>source tree docs</strong>:
<a href=\"#{pretty_url}\">#{@path}</a>
</p>
      """
  end
end

Liquid::Template.register_tag('remote_snippet', RemoteSnippet)

