#=============================================================================== # ПАРСЕР ТЕКСТА #=============================================================================== Утилита создана для получения информации в виде хэша из текста. Предпологается что будет использоваться нейтральный текст, такой как заметки и комментарии. По стандарту комментарии читаются только первые в странице события, но читается все идущие подряд. Комментарии события читаются со всемх страниц. Структура языка в форме ABNF-like с регулярками: # Лексемы описаны регулярками begin = // separator = /<+>/ end = // # Данные 3 лексемы настраиваются в настройках junk = /.*/ key = /[^\s]+/ value = /.+/ # Остальная часть описана ABNF text = junk *(closed_data/open_data) closed_data = begin (key value *(separator key value)) end text open_data = begin (key value *(separator key value)) #----------------------------------------------------------------------ИНТЕРФЕЙС Amphicore::TextParser.get_note((Object) item) # => (Hash) ► Получить данные заметки по предмету (любому, который имеет заметки). (Game_Event).parse_data #=> (Hash) ► Получить данные по событию по набору события. (Game_Event).parse_page((Integer) page_num = nil) #=> (Hash) ► Получить данные по странице с номером = page_num по набору страницы. (Game_Troop).parse_data #=> (Hash) ► -//- (Game_Troop).parse_page((Integer) page_num = nil) #=> (Hash) ► -//- (Game_CommonEvent).parse_data #=> (Hash) ► Получить данные по событию по набору страницы. (Game_CommonEvent).parse_page #=> (Hash) ► У общих событий одна страница. Это то же самое что и часть выше. #------------------------------------------------------------------------ПРИМЕРЫ Amphicore::TextParser.parse_text(" Файербол требует газ, конечно же require_item 16 => 1 Ну и анимация конечно же cast_animation 4 <+> fail_animation 7 Я забыл что делает этот ключ, но без него все ломается sacrifice_to_baal blood of virgin", Amphicore::TextParser::NOTE_PARSEKIT) # => {:require_item => "16 => 1", :cast_animation => "4", :fail_animation => "7", :sacrifice_to_baal => "blood of virgin"} #=============================================================================== # СЕРИАЛИЗАЦИЯ #=============================================================================== Автоматизирует создание, сохранение и загрузку объектов в глобальном пространстве. Оперирует именем и классом. #----------------------------------------------------------------------ИНТЕРФЕЙС Amphicore.serialize((String) name, (Class) klass) ► Сериализует класс = klass под именем = name #------------------------------------------------------------------------ПРИМЕРЫ Amphicore.serialize("game_hash", Hash) # ... meanwhile somewhere in game $game_hash[:some_key] = "some_value" #=============================================================================== # ПСЕВДОНИМЫ #=============================================================================== Скрипт имеет псевдонимы для свитчей и переменных. #----------------------------------------------------------------------ИНТЕРФЕЙС var #=> $game_variables swi #=> $game_switches sswi #=> $game_self_switches svar #=> (Game_SelfVariables)$game_self_variables ► Как собственные свитчи, но переменные #------------------------------------------------------------------------ПРИМЕРЫ var[1] = var[2] # присвоить первой переменной значение 2й #=============================================================================== # НАСТРОЙКИ #=============================================================================== TEXT_NOTE_PARSER = [(String)begin, (String)separator, (String)end] TEXT_EVENT_PARSER = [(String)begin, (String)separator, (String)end] TEXT_EVENT_PAGE_PARSER = [(String)begin, (String)separator, (String)end] ► Массив из 3 строк представляет собой 3 лексемы - начала блока данных, разделителя данных и конца блока данных. Оформляеть надо с учетом того, что эта строка будет переведена в регулярное выражение. TEXT_PARSER_CASE = 1|0 ► Индикацие чуствительности к регистру