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 - помогает обновлять вышеперечесленные поля за одно действие.