Module: Asciidoctor::Diagram::CliGenerator

Included in:
Stupid
Defined in:
lib/asciidoctor-diagram-stupid.rb

Instance Method Summary collapse

Instance Method Details

#generate(opts, target_file, open3_opts = {}) ⇒ Object



45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
# File 'lib/asciidoctor-diagram-stupid.rb', line 45

def generate(opts, target_file, open3_opts = {})
    case opts
        when Array
            args = opts
            out_file = nil
        when Hash
            args = opts[:args]
            out_file = opts[:out_file]
        else
            raise "Block passed to generate_file should return an Array or a Hash"
        end

    output = ::Asciidoctor::Diagram::Cli.run(*args, open3_opts)

    raise "#{args[0]} failed: #{output}" unless File.exist?(out_file || target_file.path)

    if out_file
        File.rename(out_file, target_file.path)
    end

    File.binread(target_file.path)
end

#generate_file(tool, input_ext, output_ext, code) ⇒ Object



23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
# File 'lib/asciidoctor-diagram-stupid.rb', line 23

def generate_file(tool, input_ext, output_ext, code)
    tool_name = File.basename(tool)

    source_file = Tempfile.new([tool_name, ".#{input_ext}"])
    begin
        File.write(source_file.path, code)

        target_file = Tempfile.new([tool_name, ".#{output_ext}"])
        begin
            target_file.close

            opts = yield tool, source_file.path, target_file.path

            generate(opts, target_file)
        ensure
            target_file.unlink
        end
    ensure
        source_file.unlink
    end
end

#generate_stdin(tool, format, code) ⇒ Object



8
9
10
11
12
13
14
15
16
17
18
19
20
21
# File 'lib/asciidoctor-diagram-stupid.rb', line 8

def generate_stdin(tool, format, code)
    tool_name = File.basename(tool)

    target_file = Tempfile.new([tool_name, ".#{format}"])
    begin
        target_file.close

        opts = yield tool, target_file.path

        generate(opts, target_file, :stdin_data => code)
    ensure
        target_file.unlink
    end
end