Это сложная тема… как мне добавлять полезные ссылки в Discourse одной кнопкой.
Думаю, логика не сильно отличается от кнопки «Опубликовать в Discourse» в меню «Поделиться» на iOS.
Это можно запрограммировать следующим образом:
- Получить входные данные из меню «Поделиться»; имя кнопки в этом меню будет именем ярлыка.
- Извлечь
текстиз входных данных ярлыка. - Текст «ook» (часть слова Look, как в фразе «Look what i found on» — «Посмотрите, что я нашёл на»).
- Текст «I» (как в фразе «I found» — «Я нашёл»).
- Текст «Source:» (как в указании источника URL).
- Текст «heck» (часть слова Check, как в фразе «Check out what i found» — «Посмотрите, что я нашёл»).
- Если какой-либо из вышеуказанных текстов совпадает с входным текстом:
- Заменить «Source:» на «just want a link» (просто хочу ссылку).
- Извлечь URL из этого.
- Извлечь хост.
- Извлечь путь.
- Извлечь параметры запроса (query).
- Закодировать хост, путь, «?» и параметры запроса как URL.
- Сформировать текст:
https://yourdomain.co.uk/new-topic?title=Shared%20from%20iOS&body=https://[закодированный URL] - Открыть этот текст в Safari.
Иначе:
- Если входной текст ярлыка содержит «g.co»:
- Найти совпадение с регулярным выражением https?://(.*) в тексте.
- Получить группу с индексом 1 в совпадениях.
- Сформировать текст:
https://yourdomain.co.uk/new-topic?title=Shared%20from%20iOS&body=https://[найденный текст] - Открыть этот текст в Safari.
Иначе:
- Если входной текст ярлыка содержит «youtube»:
- Извлечь хост.
- Извлечь путь.
- Извлечь параметры запроса.
- Закодировать.
- Сформировать текст URL форума.
- Открыть в Safari.
Иначе:
- Текст — это просто текст.
- Пусть телом сообщения будет сам текст.
![]()