Task.rb - 1um/ejudge-on-rails GitHub Wiki

Данная модель имеет смысл только в контексте Контеста. Для того, что бы получить корректный экземпляр класса нужно вызвать some_contest.tasks.

Принцип работы

Эта модель не работает с БД, и ее работа похожа на работу Contest.

Файл для парсинга - statement.xml в каталоге self.path. Как видно - это xml файл, с заранее известной структурой, так что используется XmlSimple для превращения statement.xml файла в атрибут st.

Поля

Path - обьект класса PathName - каталог текущей задачи.

St - условия текущей задачи.

Методы

def id, name - имя задачи, могут быть и цифры и буквы.

def contest - создает объект класса контест, с директорией содержащей текущую задачу.

def title, def title= - чтение и запись длинного названия контеста.

def description,def description= - чтение и запись самого условия задачи.

def examples, def examples= - чтения и запись(!) специального хеша с примерами тестов.

def name= new_name - переименовать папку с задачей.

def input_format, def input_format= - чтение и запись описания формата входных данных.

def output_format, def output_format= - чтение и запись описания формата выходных данных.

def tests - возвращает хеш с условиями тестов(вход-выход).

def tl - установленное ограничение по времени исполнения на процессоре

def ml - ограничение на количество используемой памяти.

def settings - возвращают настройки задачи, которые лежать в конфигурации текущего контеста.

def initialize - конструктор, который парсит конфигурационный файл.

def save - сохраняет st в statement.txt

def update_attributes params - помогает обновлять вышеперечесленные поля за одно действие.