module Pro2

Public Class Methods

command_build(filter = nil) click to toggle source
# File lib/pro2-runner.rb, line 75
def command_build(filter = nil)
  javajava = parse_project!
  javajava = filter_javajava(javajava, filter) if filter
  javajava.each do |java|
    filename = java.fetch('filename')
    build_cmd = java.fetch('build')

    puts "Build #{filename} ..."
    puts %x(#{build_cmd})
    puts ""
  end
end
command_execute(filter = nil) click to toggle source
# File lib/pro2-runner.rb, line 88
def command_execute(filter = nil)
  javajava = parse_project!
  javajava = filter_javajava(javajava, filter) if filter
  javajava.each do |java|
    filename = java.fetch('filename')
    run_cmd = java.fetch('run')

    puts "Execute #{filename} ..."
    puts %x(#{run_cmd})
    puts ""
  end
end
command_init(prefix, num_file) click to toggle source

Int -> Int -> (project.yaml)

# File lib/pro2-runner.rb, line 67
def command_init(prefix, num_file)
  project_file = 'project.yaml'

  javajava = initialize_project(prefix, num_file)
  file_write!(project_file, javajava.to_yaml)
  generate_empty_javajava(javajava)
end
command_run(filter = nil) click to toggle source
# File lib/pro2-runner.rb, line 101
def command_run(filter = nil)
  command_build(filter)
  command_execute(filter)
end
file_write!(filename, content) click to toggle source
filename
String -> content

String -> (File write)

# File lib/pro2-runner.rb, line 61
def file_write!(filename, content)
  raise "#{filename} already exist!" if File.exists? filename
  File.write(filename, content)
end
filter_javajava(javajava, filter) click to toggle source

javajava -> filter -> javajava

# File lib/pro2-runner.rb, line 36
def filter_javajava(javajava, filter)
  javajava.select {|java| java.fetch('filename') == filter}
end
generate_empty_javajava(javajava) click to toggle source

javajava -> (Java files)

# File lib/pro2-runner.rb, line 53
def generate_empty_javajava(javajava)
  javajava.each do |java|
    filename = java.fetch('filename')
    file_write!(filename, generate_java(filename))
  end
end
generate_java(filename) click to toggle source

String -> String

# File lib/pro2-runner.rb, line 41
def generate_java(filename)
  class_name = File.basename(filename, '.java')

  content =
%(public class #{class_name} {
  public static void main(String[] args) {
    System.out.println("Hello World!");
  }
})
end
initialize_project(prefix, num_file) click to toggle source

prefix: X for ProbXY.java num_file: Y for ProbXY.java Int -> Int -> javajava

# File lib/pro2-runner.rb, line 14
def initialize_project(prefix, num_file)
  javajava = []
  1.upto(num_file) do |i|
    filename = "Prob#{prefix}#{i}"
    javajava.push({
      'filename' => "#{filename}.java",
      'build' => "javac #{filename}.java",
      'run' => "java #{filename}",
    })
  end
  javajava
end
parse_project!() click to toggle source

javajava

# File lib/pro2-runner.rb, line 28
def parse_project!
  project_file = 'project.yaml'
  raise "#{project_file} not found!! Run `pro2 init`" unless File.exists? project_file
  yaml = File.read(project_file)
  YAML.load yaml
end