SmartyPants 1.3

SmartyPants 1.3。看到完整的项目页面下载链接和细节。

主要是bug修复有关边界条件SmartyPants冰壶引用字符错误的方式我固定每一个报道的案例中,如果你遇到任何与SmartyPants mis-curled报价1.3,请让我知道。

的细节

一个错误特别是正在困扰着我自从SmartyPants 1.0教育的主要技巧报价在HTML标记你需要注意不要碰引号内部标签——周围的引用HTML属性值需要保持纯ASCII直引号。

所以什么SmartyPants标记输入文本每一块文本分为令牌,令牌是一个标签(因此忽略)或运行标记之间的文本(因此过滤)例如,这篇文章:

“你说< em > < / em >什么?”

将分成五个令牌:

令牌 类型
“你说 文本
< em > 标签
什么 文本
< / em > 标签
?” 文本

独立SmartyPants过滤器每个令牌因此,在上面的例子中,它将滤波器第一个令牌(冰壶打开双引号),跳过下一个记号,因为它是一个标记,过滤器第三令牌(但实际上没有做任何事情因为没有标点符号),跳过下一个,然后过滤最后令牌(冰壶关闭双引号)。

很简单。

输入的问题是这样的:

< p > " <我>棘手! < / i > " < / p >

下列哪分裂成七个令牌:

令牌 类型
< p > 标签
" 文本
<我> 标签
棘手的! 文本
< / i > 标签
" 文本
< / p > 标签

问题是,引用字符得到分成单个字符的令牌,全靠自己没有成功前或字符提供上下文,SmartyPants没有提示的报价应该卷曲。

甚至高价票令牌通常可以提供足够的上下文作出准确的猜测是否打开或关闭报价但它是不可能只有一个字符。

我尴尬的解决方案似乎如此明显,没有想到这几个月前SmartyPants现在所做的就是作弊通过记住之前的最后一个字符的文本标记然后,每当遇到一个单字符引用标记,它使用这个角色作为上下文来猜这卷发引用的方法。

咄。