Class: Brotorift
- Inherits:
-
Object
- Object
- Brotorift
- Defined in:
- lib/brotorift.rb
Instance Method Summary collapse
- #find_generator(language, side) ⇒ Object
- #generate_all_code(runtime) ⇒ Object
- #generate_code(runtime, node, side) ⇒ Object
- #generate_sequence_diagrams(runtime) ⇒ Object
-
#initialize ⇒ Brotorift
constructor
A new instance of Brotorift.
- #load_generators ⇒ Object
- #print_compile_errors(errors) ⇒ Object
- #run(file_name) ⇒ Object
Constructor Details
#initialize ⇒ Brotorift
Returns a new instance of Brotorift.
27 28 29 |
# File 'lib/brotorift.rb', line 27 def initialize @generated_nodes = {} end |
Instance Method Details
#find_generator(language, side) ⇒ Object
87 88 89 |
# File 'lib/brotorift.rb', line 87 def find_generator language, side Generator.generators.find { |g| g.language == language and g.side == side } end |
#generate_all_code(runtime) ⇒ Object
48 49 50 51 52 53 54 55 |
# File 'lib/brotorift.rb', line 48 def generate_all_code runtime runtime.directions.each do |direction| generate_code runtime, direction.client, :client generate_code runtime, direction.server, :server end generate_sequence_diagrams runtime end |
#generate_code(runtime, node, side) ⇒ Object
68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 |
# File 'lib/brotorift.rb', line 68 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) ⇒ Object
58 59 60 61 62 63 64 65 |
# File 'lib/brotorift.rb', line 58 def generate_sequence_diagrams runtime begin Dir.mkdir 'docs' Dir.mkdir 'docs/diagrams' rescue end SequenceDiagramGenerator.generate runtime end |
#load_generators ⇒ Object
31 32 33 34 35 36 37 |
# File 'lib/brotorift.rb', line 31 def load_generators root_folder = File. 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) ⇒ Object
40 41 42 43 44 45 |
# File 'lib/brotorift.rb', line 40 def print_compile_errors errors errors.each do |e| puts e end puts 'Your brotorift files contain errors. Please fix them before go on.'.red end |
#run(file_name) ⇒ Object
91 92 93 94 95 96 97 98 99 100 101 |
# File 'lib/brotorift.rb', line 91 def run file_name load_generators compiler = Compiler.new compiler.compile file_name if compiler.errors.length > 0 print_compile_errors compiler.errors exit 1 else generate_all_code compiler.runtime end end |