💬 Красиво обработанные и синхронизированные файлы репо?

📑 Содержание

Medium использует Embed.ly для встраивания мультимедийных материалов. У Embed.ly есть провайдер GitHub, который красиво отображает Gists с помощью GitHub embedded Gists. Если вы пытались связать код на Medium с GitHub, вы наверняка попали в точку, о которой я собираюсь поговорить.

Я надеюсь, что, повышая осведомленность об этой проблеме, мы сможем достучаться до человека, который не только способен, но и способен решить ее. Если бы это был OSS, у меня была бы трещина, но, увы, это не так.

Текущее состояние

Провайдер Embed.ly GitHub принимает URL-адреса со следующими схемами:

http://gist.github.com/*
https://gist.github.com/*

Это означает, что он может действительно хорошо отображать Gists в Medium:

Подсветка кода GitHub для языка связанного файла Gist великолепна! Это намного лучше, чем стандартный рендеринг кода Medium.com:

export default () => <div>no code highlighting :(</div>

И мобильный рендеринг тоже на высоте!

Так в чем же тогда проблема, явно лучше ?!

Да, рендеринг идет, но поддержка репозиториев и отдельных файлов оставляет желать лучшего.

Если у вас есть Gist с двумя файлами и ссылка только на URL Gist, вы получите:

https://gist.github.com/jthegedus/2487ce5eb5db0b9da20451c345d2de68

Хорошо, я этого ожидал.

Если вы свяжете только один файл из Gist, вы ожидаете, что будет отображен только этот файл:

https://gist.github.com/jthegedus/2487ce5eb5db0b9da20451c345d2de68#file-gist1-js

Но он отображает оба файла Gist!

Это означает, что если вы пишете сообщение в блоге с несколькими файлами, которые хотите связать, каждый из них должен быть отдельным Gists! 😅 🔫

История разработчиков

Каждый раз, когда я пишу новый пост в блоге, я хочу включить и обсудить некоторые важные фрагменты кода. Каждый раз мне приходится создавать много Gists, чтобы воспользоваться прекрасным рендерингом. Мне не нравится читать посты, в которых не используются преимущества этого рендеринга, поэтому я стараюсь практиковать то, что я проповедую; Я создам эти Gists для всего, что представляет собой нечто большее, чем пара строк кода. Это расстраивает.

Повторяющиеся сны

Суть проблемы не в рендеринге Gist-файла, а в поддержке файлов из репозиториев GitHub! GitHub никоим образом не поддерживает это через провайдер GitHub Embed.ly.

Если я напишу сообщение в блоге о каком-то проекте и хочу поделиться своим примером кода, я могу связать только все репо, а не отдельные файлы. Создание Gists, отражающих файлы репозитория, которые я хочу связать, - это трудоемкое решение. Я использую распределенное управление версиями файлов, поэтому у меня нет двух несинхронизированных копий.

E.G.:

https://github.com/jthegedus/firebase-functions-graphql-example


https://github.com/jthegedus/firebase-functions-graphql-example/blob/master/package.json


Дает такой же рендер из Medium. В первом случае он отображает информацию, которую я ожидаю, но во втором - нет. Я ожидал, что содержимое файла будет отображаться как в Gist.

// Current supported URL scheme
http://gist.github.com/*
https://gist.github.com/*
// The Dream Schemes
https://gist.github.com/<gist-id>#<filename.ext>
https://github.com/<username>/<repository-name>/blob/<branch-name>/**/<filename.ext>

Я просто хочу, чтобы мои обновленные файлы кода (репозиторий git) хорошо отображались!

Заключение

Панацеей здесь является рендеринг одного файла из ссылок репозитория и Gist на Medium с Embed.ly через встраивание GitHub. Если вы знаете человека в GitHub, который может сделать это, или если есть способ, которым мы могли бы работать над решением как сообщество, тогда поделитесь, пожалуйста! Я бы с радостью вытащил волосы все выходные, работая с регулярным выражением, если бы это потребовалось, чтобы связать отдельные файлы из моего репо и заставить их отображать такие же, как эти прекрасные Gists.

/ rant