- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
这可能是徒劳的努力,但我个人认为这是可能的。
我不是最擅长 Javascript 或 jQuery 的,但我认为我找到了一种为 html 制作简单 pretty-print 的简单方法。
这个prettyprint中有四种类型的代码:
为了风格化,我想将 elements
、attibutes
和 values
包装在自己的类中。
我这样做的第一种方法是存储每一种元素和属性(如下所示),然后用相应的 span 包装它们
$(document).ready(function() {
$('pre.prettyprint.html').each(function() {
$(this).css('white-space','pre-line');
var code = $(this).html();
var html-element = $(code).find('a, abbr, acronym, address, area, article, aside, audio, b, base, bdo, bdi, big, blockquote, body, br, button, canvas, caption, cite, code, col, colgroup, command, datalist, dd, del, details, dfn, div, dl, dt, em, embed, fieldset, figcaption, figure, footer, form, h1, h2, h3, h4, h5, h6, head, header, hgroup, hr, html, i, img, input, ins, kbd, keygen, label, legend, li, link, map, mark, meta, meter, nav, noscript, object, ol, optgroup, option, output, p, param, pre, progress, q, rp, rt, ruby, samp, script, section, select, small, source, span, strong, summary, style, sub, sup, table, tbody, td, textarea, tfoot, th, thead, title, time, tr, track, tt, ul, var, video, wbr');
var html-attribute = $(code).find('abbr, accept-charset, accept, accesskey, actionm, align, alink, alt, archive, axis, background, bgcolor, border, cellpadding, cellspacing, char, charoff, charset, checked, cite, class, classid, clear, code, codebase, codetype, color, cols, colspan, compact, content, coords, data, datetime, declare, defer, dir, disabled, enctype, face, for, frame, frameborder, headers, height, href, hreflang, hspace, http-equiv, id, ismap, label, lang, language, link, longdesc, marginheight, marginwidth, maxlength, media, method, multiple, name, nohref, noresize, noshade, nowrap, object, onblur, onchange,onclick ondblclick onfocus onkeydown, onkeypress, onkeyup, onload, onmousedown, onmousemove, onmouseout, onmouseover, onmouseup, onreset, onselect, onsubmit, onunload, profile, prompt, readonly, rel, rev, rows, rowspan, rules, scheme, scope, scrolling, selected, shape, size, span, src, standby, start, style, summary, tabindex, target, text, title, type, usemap, valign, value, valuetype, version, vlink, vspace, width');
var html-value = $(code).find(/* Any instance of text inbetween two parenthesis */);
$(element).wrap('<span class="element" />');
$(attribute).wrap('<span class="attribute" />');
$(value).wrap('<span class="value" />');
$(code).find('<').replaceWith('<');
$(code).find('>').replaceWith('>');
});
});
我想到的第二种方法是将 elements
检测为被两个 < > 包围的任意数量的文本,然后将 attributes
检测为 中的文本>element
由两个空格包围或紧跟在其后的 =
。
$(document).ready(function() {
$('pre.prettyprint.html').each(function() {
$(this).css('white-space','pre-line');
var code = $(this).html();
var html-element = $(code).find(/* Any instance of text inbeween two < > */);
var html-attribute = $(code).find(/* Any instance of text inside an element that has a = immeadiatly afterwards or has spaces on either side */);
var html-value = $(code).find(/* Any instance of text inbetween two parenthesis */);
$(element).wrap('<span class="element" />');
$(attribute).wrap('<span class="attribute" />');
$(value).wrap('<span class="value" />');
$(code).find('<').replaceWith('<');
$(code).find('>').replaceWith('>');
});
});
如果可能的话,将如何编码这些中的任何一个
Again you can see this as a jsfiddle here: http://jsfiddle.net/JamesKyle/L4b8b/
最佳答案
不要那么确定您已经掌握了在这么少的几行中 pretty-print HTML 的所有内容。我花了一年多一点的时间和 2000 行代码才真正确定了这个主题。您可以直接使用我的代码或重构它以满足您的需要:
https://github.com/prettydiff/prettydiff/blob/master/lib/markuppretty.js (和 Github project)
您可以在 http://prettydiff.com/?m=beautify&html 进行演示
之所以需要这么多代码,是因为人们似乎真的不理解或不重视文本节点的重要性。如果您在美化期间添加新的和空的文本节点,那么您做错了并且可能会破坏您的内容。此外,以另一种方式搞砸它并从内容中删除空白也很容易。您必须小心这些,否则您将完全破坏文档的完整性。
此外,如果您的文档包含 CSS 或 JavaScript 怎么办。这些也应该打印得很好,但与 HTML 有非常不同的要求。甚至 HTML 和 XML 也有不同的要求。请相信我的话,这不是一件容易弄清楚的事情。 HTML Tidy 在这方面已经有十多年了,但仍然搞砸了很多边缘情况。
据我所知,我的 markup_beauty.js 应用程序是有史以来为 HTML/XML 编写的最完整的 pretty-print 。我知道这是一个非常大胆的声明,也许是傲慢的,但到目前为止它从未受到挑战。看看我的代码,如果有您需要但它没有做的事情,请告诉我,我会设法添加它。
关于javascript - 简单的 HTML pretty-print ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8348545/
我已经和 Lua 搞了几天,我想出了一些让我三思而后行的事情。 Lua 5.3 的引用手册我还没有看,因为它似乎很复杂,我会尽快查看。 好的,在 lua 5.3 中,我们知道 print() 返回 n
计算时IO (IO ()) , 两个 (IO ())和 ()是计算出来的,所以为什么 main :: IO (IO ()) main = print (print "Hello, World!")
我不太理解从以下位置收到的输出: print(print(print('aaa'))) aaa None None 先aaa清楚了。但我认为第二个 print(aaa) 会抛出一个错误,因为变量 aa
当我运行下面的 Perl one-liner 时,它会打印 1在每一行的前面,我不想要它。它应该做的只是注释匹配 root 的行. $ cat /etc/passwd | perl -ne 'prin
我发现由于 Xcode 将不再消化 println() 我是 留下 Swift.print() 或 print() 。我的问题是, 两者有什么区别?我没能 在网上或在 swift 前卫郎。 (Swif
我正在开发一个内部 Google Chrome 扩展,它需要一种方法来启动将当前页面打印到打印机。我不希望出现默认的打印对话框(因此,javascript:window.print() 是不可能的)。
我正在将 Perl6 Terminal::Print 模块用于基于控制台的应用程序。 它运行良好 - 但是,现在我需要提示用户输入一串文本。 有什么好的方法可以做到这一点? 最佳答案 这是使用 Ter
在学习第三方的Lua代码时,我发现在主脚本文件的顶部 local insert = table.insert local match = string.match local gsub = strin
在学习第三方的Lua代码时,我发现在主脚本文件的顶部 local insert = table.insert local match = string.match local gsub = strin
我目前正在学习 Python,并开始了一个项目,为 2000-2005 年 MLB 摊牌纸牌游戏创建棒球模拟游戏。这些程序包含棒球比赛的事件,作为单独代码段中间的打印语句(“Jeff 击中单打”,“B
我的问题:在没有多余括号的情况下漂亮地打印表达式的最干净的方法是什么? 我有以下 lambda 表达式的表示: Term ::= Fun(String x, Term t) | App(
为了在 Julia 中创建可打印的新类型,应该定义哪些方法?我认为应该只定义 show,然后它将引发其他函数的行为,例如: 打印 字符串 repl_show 显示紧凑 展示 需要为新类型定义以下哪些方
我有一个页面,用户可以在其中打印一些带有图像和数据的 pdf。我希望他们能够打印他们想要的文件数量,并且能够暂停它们——这意味着他们可以停止打印并防止打印尚未发送到打印机的文件;当然,已经发送到打印机
CLHS 说 An attempt to print a circular structure with *print-circle* set to nil may lead to looping
正如标题所示,在 Pycharm 中使用自动完成功能时,显示的唯一自动完成选项是:print(args,kwargs) 内置 我希望自动完成功能以“print”完成,因为这是我通常使用的。我正在使用
是否有可能使用 fmt.Println("...") 打印一个 shell 居中对齐的字符串? 最佳答案 作为对这个长期回答问题的更新,可以通过使用 fmt 包中的 * 符号来改进@miltonb 发
我想在控制台屏幕上显示使用 DO 循环完成的计算进度。我可以像这样将进度变量打印到终端: PROGRAM TextOverWrite_WithLoop IMPLICIT NONE INTEGER ::
我正在尝试为我的新对象定义打印方法,并使用传递给 print 的对象名称。使用 deparse(substitute(y)) .这可以完美地使用 print功能明确: obj function (x
我需要安装 dompdf 方面的帮助。我应该将解压的 zip 文件放在目录中的哪个位置?我按照 INSTALL.txt 进行操作,它显示“将下载的包的内容提取到支持的路径之一”。这是否意味着放入“Mo
我的应用程序中有一个 webkit 小部件,您可以打印它。打印效果很好,除了打印时没有图像,即使屏幕上有图像。 打印代码如下: void MainWindow::printPage() { Q
我是一名优秀的程序员,十分优秀!