撰写博客并将其发布到不同的平台会带来很多繁琐的工作。
例如,我通常通过在代码编辑器中创建markdown文件来开始撰写文章。 在撰写本文时,我插入代码段和图像以使内容更易消化。
但是,当我需要将同样的降价发布到Medium时,会出现问题。 尽管他们的文本编辑器很漂亮,但是将我的markdown文件复制并粘贴到那里并不是绝对安全的。
这里有一些问题:
- 粘贴在反引号中的
fields
或someFunction
类的代码字未正确粘贴 - 较大的代码块当前不支持语法突出显示
function doSomething() {
return function(name) {
return 'Hello ' + name
}
}
- 粗体或斜体字保留其样式,但不与将它们包装在我的markdown文件中的* s分开
这是粘贴的这三个项目符号的屏幕截图:
叫我懒,但是写了2500多个单词后,我必须:
- 仔细检查每一行,确保我的语法有意义。
- 由于我的某些文章是教程,因此请确保我的代码示例能够正常工作。
- 通过Github Gists使我的代码看起来很漂亮,从而带来了全新的制表符大小调整。
- 清理所有markdown样式的超链接,并从突出显示的单词和短语中删除多余的星号或反引号。
这变得筋疲力尽 。 尝试生成可以交叉发布到多个站点的内容变得非常繁琐。 在一个站点上发布内容需要大量的工作。
为什么我不只参与并专门发布到dev.to或我自己的站点 ,而我实际上只是需要粘贴我的markdown文件?
因为那不是我的忍者。 我必须在整个互联网上无所不在。
清洗代码片段
让我们从获取最低限度的成果开始,即清理那些代码段。 我们应该怎么做?
好吧,蛮力的方法是照常复制和粘贴,删除表示代码块的反引号,按“ CMD + option + 6”创建一个Medium Codeblock™,然后处理代码块中笨拙的换行符和制表符。 别忘了,“中型”编辑器中的选项卡不会像在代码编辑器中那样起作用。
不。 我不会再这样做了。
下一个选项是手动创建Github要点,将代码格式委派给Github。 我们甚至可以从中突出显示语法。
但是,在我最近的工作中,要点的制表符大小似乎默认为8。这是我刚刚粘贴到要点的示例, 专门在编辑器中设置了大小为2的空格 。
似乎解决此问题的唯一方法是用空格替换制表符的所有实例(在我的情况下为2个空格)。 在此示例中,我可以手动执行此操作。 如果只需要清理一个片段,那还不错。
缺点是每个选项卡都必须用空格代替。 我以前的文章有18个JavaScript代码段。 那是一次痛苦的编辑经历。
介绍Gist发生器
* 我希望有个好主意
我决定利用我的开发排行榜,利用Github API来创建要点。 这个用Go语言编写的脚本将按以下步骤进行:
- 读入降价文件
- 解析语言片段,例如“ go”或“ javascript”
- 为每个代码段创建要点
- 保留一个带有摘要和要点引用的对象
- 将代码段替换为其各自的摘要URL
- 写入新的markdown文件,将代码段替换为“中”的要点
如果您有兴趣签出源代码,可以在此处签出仓库。 在决定出售任何产品之前,我想进行一些测试,但是无论如何它都是开源的。
当前用法如下:
./gist-generator -f example.md -token <GITHUB_ACCESS_TOKEN>
运行此脚本之后,我们最终得到一个名为example.medium.md
的文件,这意味着我们理想地将此文件发布在介质上,包括摘要和所有内容。
如果我创建了一个从中使用此脚本的Web客户端,则用户将使用其Github帐户签名,从而省去了手动生成个人访问令牌并将其粘贴到CLI的步骤。
那真是太好了,但现在还不在我的考虑范围之内-让我们看看一些更紧迫的问题。
遇到的问题
在编写此脚本的地方,我遇到了很多麻烦。
这样的问题之一是处理将要创建的要点的格式。 在我的降价代码段中看起来不错的内容不一定在要旨上看起来不错。
在我的第一遍中,由于换行符和选项卡过大,我的空白过多。 通过遍历代码片段中的字节,我可以删除不必要的换行符并将制表符替换为空格。 这是一个例子:
现在,在我为此脚本编写的所有Go代码中,为什么我显示了换行符和制表符的修剪?
这是因为空白问题是最容易产生最大结果的问题。
还有一些较低级别的问题,涉及如何最好地使用字节缓冲区解析文件或构建字符串。 我可能会在以后的文章中解决这个问题,因为它值得拥有— Go具有许多强大的内置方法,仅凭文档本身就无法充分发挥作用。
经验教训和未来项目
我喜欢这个项目有几个原因:
- 它足够小,不会太吓人
- 最终目标是明确而实际的:提高我的博客文章的质量
- 我有机会练习开发Go命令行工具
- 它可以轻松融入类似博客生产力工具的生态系统
到最后一点,我的意思是要点生成步骤可能是其中几个步骤之一。
我可以编写类似的脚本,以消除博客文本中多余的降价字符。 我发现了一种通过本文部分完成此步骤的方法 。
中号允许您将markdown文件粘贴到要点中(因为它需要URL)。 这使它可以正确处理反引号和星号包装的单词。 它甚至可以处理文本中的超链接。
为了处理语法错误,我可以补充一点,也许调用一个简单的grammarly怎么ISH API的一个步骤。 如果还没有开源解决方案,那可能是另一个未来的项目构想。
我什至可以创建一个仪表板,如果脚本中的错误导致其中任何一个出现错误,则可以轻松删除要点。 当前的官方要点仪表板在编辑或删除要点方面效率很低。
最后,我一直在围绕基于云的Markdown编辑器的想法,该编辑器可从移动设备访问。 您知道,当我在迪士尼乐园排队等候时,想编辑我的一篇文章。 像这样的时代。
包起来
要做的事太多了,似乎时间却很少。 我想我的下一步是涵盖与从降价导入故事有关的其他美学问题。
在这一点上,任何减少编写技术内容所涉及的摩擦的项目都是有价值的。
该项目源于我希望消除与大量冗余编辑相关的某些痛苦。 有些痛苦是由于对平台缺乏了解引起的,而另一些痛苦则是由于平台的实际限制所致。
编写这样的文章并着手进行类似的项目可以解决两个问题:您将始终学习该平台的功能,同时改善不足之处。
毫无疑问,以生产力为名的绝佳学习经历。
同样,如果您想调查项目的工作方式,则这里是项目回购的链接。
对更多帖子或机智的言论感到好奇吗? 给我鼓掌,并在Medium , Github和Twitter上关注我!
From: https://hackernoon.com/i-wrote-a-go-script-to-generate-gists-heres-what-i-learned-bca86435c878