module Gobstones::BatchParser
Public Class Methods
parse(request)
click to toggle source
# File lib/gobstones/batch_parser.rb, line 3 def parse(request) test = parse_test(request) options = parse_options(test).merge(parse_settings(request)) examples = parse_examples test, options Gobstones::Batch.new request.content, examples, request.extra, options end
Private Class Methods
parse_example(options, example)
click to toggle source
# File lib/gobstones/batch_parser.rb, line 34 def parse_example(options, example) return example unless options[:subject] return_value = example[:postconditions][:return] if return_value example[:name] = "#{options[:subject]}() -> #{return_value}" unless example[:name] options[:show_final_board] = false end example end
parse_examples(test, options)
click to toggle source
# File lib/gobstones/batch_parser.rb, line 22 def parse_examples(test, options) examples = test[:examples] examples.each_with_index.map do |example, index| parse_example options, { id: index, name: example[:title], preconditions: example.slice(*preconditions), postconditions: example.slice(*postconditions) } end end
parse_options(test)
click to toggle source
# File lib/gobstones/batch_parser.rb, line 46 def parse_options(test) [ struct(key: :show_initial_board, default: true), struct(key: :show_final_board, default: true), struct(key: :check_head_position, default: false), struct(key: :expect_endless_while, default: false), struct(key: :interactive, default: false), struct(key: :subject, default: nil) ].map { |it| [ it.key, if test[it.key].nil? it.default else test[it.key] end ] }.to_h end
parse_settings(request)
click to toggle source
# File lib/gobstones/batch_parser.rb, line 14 def parse_settings(request) { game_framework: !!request.dig(:settings, 'game_framework') } end
parse_test(request)
click to toggle source
# File lib/gobstones/batch_parser.rb, line 18 def parse_test(request) YAML.load(request.test).deep_symbolize_keys end
postconditions()
click to toggle source
# File lib/gobstones/batch_parser.rb, line 69 def postconditions [:final_board, :error, :return] end
preconditions()
click to toggle source
# File lib/gobstones/batch_parser.rb, line 65 def preconditions [:initial_board, :arguments] end