Method: Deplate::Regions::Code#gvim_to_html

Defined in:
lib/deplate/mod/code-gvim.rb,
lib/deplate/mod/code-gvim71.rb

#gvim_to_html(syntax, style, text) ⇒ Object



31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
# File 'lib/deplate/mod/code-gvim.rb', line 31

def gvim_to_html(syntax, style, text)
    unless @deplate.allow_external
        return
    end
    gvim = %{#{Deplate::External.get_app('gvim')} -f +"syn on" +"let use_xhtml = 1" +"set ft=#{syntax}" +"colorscheme #{style || "default"}" +"run! syntax/2html.vim" +"wq" +"q" deplateGvim}
    # p "DBG #{gvim}"
    @deplate.in_working_dir(Dir.tmpdir) do
        FileUtils.rm("deplateGvim.html") if File.exist?("deplateGvim.html")
        Deplate::External.write_file(self, "deplateGvim") {|io| io.puts(text)}
        IO.popen(gvim) {|io| puts io.gets until io.eof }
        if File.exist?("deplateGvim.html")
            rv = [%{<div class="code">}]
            File.open("deplateGvim.html") do |io|
                until io.eof?
                    line = io.gets
                    line.chomp!
                    if line =~ /^<pre>$/ .. line =~ /^<\/pre\>$/
                        line.gsub!(/<font (\w+)="(.+?)">(.*?)<\/font>/,
                                   '<span style="\\1: \\2;">\\3</span>')
                        rv << line
                    end
                end
            end
            rv << %{</div>}
            # return rv.join("\n")
            return rv
        else
            log("Error when running gvim", :error)
        end
    end
    return nil
end