- Разработайте конвертер из Markdown-разметки в HTML.
-
Конвертер должен поддерживать следующие возможности:
- Абзацы текста разделяются пустыми строками.
- Элементы строчной разметки: выделение (* или _), сильное выделение (** или __), зачеркивание (--), код (`)
- Заголовки (# * уровень заголовка)
- Конвертер должен называться Md2Html и принимать два аргумента: название входного файла с Markdown-разметкой и название выходного файла c HTML-разметкой. Оба файла должны иметь кодировку UTF-8.
- Напишите Web Crawler, обходящий HTML-страницы на заданную глубину и вытаскивающий из них картинки.
-
Информация о HTML странице (класс
Page
:String url
– URL страницы (идентификатор);String title
– заголовок страницы (содержимое элементаtitle
);List<Page> links
– ссылки (атрибутhref
элементаa
), в порядке появления на странице;List<Page> backLinks
– ссылки, ведущие на страницу;List<Image> images
– Картинки на странице (элементimg
), в порядке появления на странице.
-
Информация о картинке (класс
Image
):String url
– URL картинки (идентификатор);String file
– имя файла, в котором сохранена картинка;List<String> pages
– страницы, на которых встречается картинка.
-
Интерфес Web Crawler:
public interface WebCrawler { Page crawl(String url, int depth); }
- При загрузке на глубину два, должны быть загружены и проанализированы переданная страница и страницы, на которые она ссылается.
- Для загрузки страниц и картинок можно использовать метод openStream класса URL.
- Вы можете считать, что все страницы имеют кодировку UTF-8.
- Напишите Offline Browser, обходящий HTML-страницы на заданную глубину и сохраняющий их для offline-просмотра.
- Вместе с HTML-страницами должны быть загружены сопутствующие ресурсы: картинки, скрипты и css-файлы. При сохранении не должны создаваться лишние копии ресурсов.
- Ссылки на сохраненные страницы должны быть изменены так, чтобы работать без подключения к Интернету. Ссылки на другие страницы должны остаться без изменений.
- Вы можете считать, что все страницы имеют кодировку UTF-8.
- Примечание. В результате работы наивного offline-браузера, некоторые страницы (например, использующие динамическую загрузку скриптов и CSS) могут отображаться некорректно. Правильная загрузка таких сайтов не входит в данное домашнее задание.
-
Определите интерфейс очереди
Queue
и опишите его контракт. -
Реализуйте класс
LinkedQueue
— очередь на связном списке. -
Выделите общие части классов
LinkedQueue
иArrayQueue
в базовый классAbstractQueue
.