Tag: 漂亮打印

漂亮的印刷HTML

这是最初发布在我的博客上的文章的转载,但几经成熟……。 仅进行了微小的格式更改。 它也是系列文章的一部分,该系列旨在从基本原理出发,涵盖服务器端Swift的基础。 请考虑查看该系列中的其余内容: Swift中的类型安全HTML 在Swift中渲染HTML DSL Swift中的可组合HTML视图 在上一篇文章中,我们通过递归遍历节点树并渲染每个原子单元来实现朴素的HTML渲染器。 该实现非常简单,并且由于没有换行符或空格来使结果更具可读性,因此它生成了HTML的“精简版”。 有时我们想要产生一个易于理解的字符串表示形式,例如,在服务器的开发模式下,具有格式良好的HTML可能会有所帮助,并且对文档的“快照测试”很有用。 “漂亮打印”是获取一条数据并将其打印到某种意义上在美学上令人愉悦的字符串的行为。 例如,HTML是组成文档的节点树,并且可以通过多种方式将其打印为字符串: Hello world Hello world Hello world Hello world Hello world 这些打印中的每一个都代表相同的HTML文档,但最后一个最容易采用。但是,有时仅在节点上添加换行符和选项卡是不够的。 一行可能很长,您可能希望在流过特定页面宽度后换行。 例如,以下文档已经打印精美,以确保没有一行超过40个字符: Articles about math, functional programming and the Swift programming language. 注意,它会跟踪缩进,以使每行的第一个字符匹配。 它甚至可能变得更加复杂! 例如,标记的属性可能会变得很长,并且当您包装它们的值时,您要确保它们对齐在一起: <body id="home" style=”background: #fff;”> Articles about math, functional programming and the Swift programming language. 注意style如何与上面的id对齐,而不是简单地从<body缩进两个空格。 如果所有属性不能全部放在一行上,我们甚至可以通过要求所有属性都在换行符上来增加另一层复杂性: […]