class Brotorift

Public Class Methods

new() click to toggle source
# File lib/brotorift.rb, line 27
def initialize
        @generated_nodes = {}
end

Public Instance Methods

find_generator(language, side) click to toggle source
# File lib/brotorift.rb, line 99
def find_generator language, side
        Generator.generators.find { |g| g.language == language and g.side == side }
end
generate_all_code(runtime, generate_diagram) click to toggle source
# File lib/brotorift.rb, line 48
def generate_all_code runtime, generate_diagram
        runtime.directions.each do |direction|
                generate_code runtime, direction.client, :client
                generate_code runtime, direction.server, :server
                generate_bot_code runtime, direction.client
        end

        generate_sequence_diagrams runtime if generate_diagram
end
generate_bot_code(runtime, node) click to toggle source
# File lib/brotorift.rb, line 88
def generate_bot_code runtime, node
        generator = find_generator 'bot', :client
        if generator == nil
                puts "Generator for bot is not found.".red
                return
        end

        puts "Generating bot code for node '#{node.name}'..."
        generator.generate node, runtime
end
generate_code(runtime, node, side) click to toggle source
# File lib/brotorift.rb, line 69
def generate_code runtime, node, side
        old_sides = @generated_nodes[node.name]
        return if old_sides != nil and old_sides.include? side

        generator = find_generator node.language, side
        if generator == nil
                puts "Generator for language '#{node.language}' and side #{side} is not found.".red
                return
        end

        puts "Generating #{node.language} #{side} code for node '#{node.name}'..."
        generator.generate node, runtime
        if old_sides != nil
                old_sides.push side
        else
                @generated_nodes[node.name] = [side]
        end
end
generate_sequence_diagrams(runtime) click to toggle source
# File lib/brotorift.rb, line 59
def generate_sequence_diagrams runtime
        begin
                Dir.mkdir 'docs'
                Dir.mkdir 'docs/diagrams'
        rescue
        end
        SequenceDiagramGenerator.generate runtime
end
load_generators() click to toggle source
# File lib/brotorift.rb, line 31
def load_generators
        root_folder = File.expand_path File.dirname __FILE__
        generators_pattern = root_folder + '/generators/*.rb'
        Dir.glob generators_pattern do |generator_file|
                require generator_file
        end
end
print_compile_errors(errors) click to toggle source
run(file_name, generate_diagram) click to toggle source
# File lib/brotorift.rb, line 103
def run file_name, generate_diagram
        load_generators
        compiler = Compiler.new
        compiler.compile file_name, true
        if compiler.errors.length > 0
                print_compile_errors compiler.errors
                exit 1
        else
                generate_all_code compiler.runtime, generate_diagram
        end
end