1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/chinasoft_ohos-Commonmark-java

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.md

commonmark-java

Проектное описание

  • Название проекта: commonmark-java
  • Серия: адаптация и портирование третьих сторон для OpenHarmony
  • Функционал: расширение имени таблицы
  • Состояние портирования: основные функции завершены
  • Различия при вызове: отсутствуют
  • Версия SDK: sdk6, DevEco Studio2.2 beta1
  • Базовая версия: Release 0.17.2

Демонстрация эффекта

Демонстрация эффекта

Инструкции по установке

  1. В файле build.gradle в корневой директории проекта:
allprojects {
   repositories {
       maven {
           url 'https://s01.oss.sonatype.org/content/repositories/releases/'
       }
   }
}
  1. В файле build.gradle модуля entry:
dependencies {
   implementation('com.gitee.chinasoft_ohos:commonmark:1.0.0')

   ...
}

Проект может быть запущен непосредственно с использованием sdk6 и DevEco Studio2.2 beta1. Если проект не запускается, удалите файлы .gradle, .idea, build, gradle, build.gradle, и создайте новый проект в соответствии со своей версией, а затем скопируйте соответствующие файлы нового проекта в корневую директорию.

Инструкции по использованию

Распознавание и преобразование в HTML

import org.commonmark.node.*;
import org.commonmark.parser.Parser;
import org.commonmark.renderer.html.HtmlRenderer;

Parser parser = Parser.builder().build();
Node document = parser.parse("Это *Sparta*");
HtmlRenderer renderer = HtmlRenderer.builder().build();
renderer.render(document);  // "<p>Это <em>Sparta</em></p>\n"

Это будет использовать парсер и рендерер с базовым конфигурационным набором. Оба этих конструктора имеют методы для настройки их поведения:- escapeHtml(true) защищает HTML-теги и блоки от экранирования в HtmlRenderer.

  • sanitizeUrls(true) очищает потенциально опасные URL в <a> и <img> тегах в HtmlRenderer.

Для получения полного списка доступных опций обратитесь к методам конструктора.

Обратите внимание, что библиотека не пытается очистить результирующий HTML от недопустимых тегов. Это обязанность вызывающего кода, который может применять дополнительные меры очистки после использования результата HTML.

Для представления как чистого текста также существует TextContentRenderer, имеющий очень похожий API.

Использование гостей для обработки уже распарсенного дерева узлов

После распознавания исходного текста, результат представляет собой дерево узлов. Это дерево можно модифицировать до его рендера или проверять без рендера:

Node node = parser.parse("Пример\n=======\n\nНекоторый другой текст");
WordCountVisitor visitor = new WordCountVisitor();
node.accept(visitor);
visitor.wordCount; // 4

Класс WordCountVisitor, расширяющий AbstractVisitor

class WordCountVisitor extends AbstractVisitor {
    int wordCount = 0;

    @Override
    public void visit(Text text) {
        // Это вызывается для всех узлов типа Text. Переопределите методы visit для других типов узлов.

        // Подсчет слов (это просто пример, не делайте так в реальном проекте по различным причинам).
        wordCount += text.getLiteral().split("\\W+").length;

        // Пробегаемся по дочерним узлам (можно было бы опустить этот шаг, если бы узлы типа Text не имели дочерних узлов).
        visitChildren(text);
    }
}
```### Добавление собственного типа узла
Иногда вам может потребоваться настроить отображение HTML. Если вы хотите добавить или изменить атрибуты некоторых элементов, существует простой способ сделать это.
В этом примере мы регистрируем `AttributeProvider` фабрику на рендере, чтобы установить атрибут `class="border"` для элемента `img`.

```java
Parser parser = Parser.builder().build();
HtmlRenderer renderer = HtmlRenderer.builder()
        .attributeProviderFactory(new AttributeProviderFactory() {
            public AttributeProvider create(AttributeProviderContext context) {
                return new ImageAttributeProvider();
            }
        })
        .build();

Node document = parser.parse("![текст](/url.png)");
renderer.render(document);
// "<p><img src=\"/url.png\" alt=\"текст\" class=\"border\" /></p>\n"

class ImageAttributeProvider implements AttributeProvider {
    @Override
    public void setAttributes(Node node, String tagName, Map<String, String> attributes) {
        if ("img".equals(tagName)) {
            attributes.put("class", "border");
        }
    }
}

Самостоятельное управление представлением HTML

Если вы хотите контролировать представление HTML более глубоко, чем просто изменять атрибуты, можно полностью управлять образом HTML. В этом примере мы изменили представление отступов кодовых блоков, чтобы они были заключены только в pre, а не в pre и code:

Parser parser = Parser.builder().build();
HtmlRenderer renderer = HtmlRenderer.builder()
        .nodeRendererFactory(new HtmlNodeRendererFactory() {
            public NodeRenderer create(HtmlNodeRendererContext context) {
                return new IndentedCodeBlockNodeRenderer(context);
            }
        })
        .build();

Node document = parser.parse("Пример:\n\n    код");
renderer.render(document);
// "<p>Пример:</p>\n<pre>код\n</pre>\n"

Добавление собственного типа узлаЕсли вы хотите хранить в документах другие данные или включать пользовательские элементы в результате HTML, можно создать свои подклассы, такие как CustomNode, и добавить экземпляры этих узлов в качестве дочерних узлов существующих узлов.

Для определения HTML-рендера для таких узлов можно использовать NodeRenderer, как показано выше.

Тестирование

Кодовая проверка прошла успешно

Облачная проверка кода прошла успешно

Проверка безопасности отсутствия вирусов пройдена

Функционал демонстрационной версии практически не отличается от оригинального компонента

Версионирование

  • 1.0.0
  • 0.0.1-SNAPSHOT

Информация о правах и лицензиях

Copyright (c) 2015-2019 Atlassian и другие.

Лицензировано по лицензии BSD (двухабзацное соглашение), см. файл LICENSE.txt.

Комментарии ( 0 )

Вы можете оставить комментарий после Вход в систему

Введение

Пользовательское расширение таблицы. Развернуть Свернуть
Java
BSD-2-Clause
Отмена

Обновления

Пока нет обновлений

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://api.gitlife.ru/oschina-mirror/chinasoft_ohos-Commonmark-java.git
git@api.gitlife.ru:oschina-mirror/chinasoft_ohos-Commonmark-java.git
oschina-mirror
chinasoft_ohos-Commonmark-java
chinasoft_ohos-Commonmark-java
main