当前位置:  开发笔记 > 后端 > 正文

截断Markdown?

如何解决《截断Markdown?》经验,为你挑选了1个好方法。



1> dbr..:

编写/查找智能HTML截断功能

以下来自http://mikeburnscoder.wordpress.com/2006/11/11/truncating-html-in-ruby/,经过一些修改将正确截断HTML,并且可以轻松地在结束标记之前附加字符串.

>> puts "

Something

".truncate_html(5, at_end = "...") =>

Someth...

修改后的代码:

require 'rexml/parsers/pullparser'

class String
  def truncate_html(len = 30, at_end = nil)
    p = REXML::Parsers::PullParser.new(self)
    tags = []
    new_len = len
    results = ''
    while p.has_next? && new_len > 0
      p_e = p.pull
      case p_e.event_type
      when :start_element
        tags.push p_e[0]
        results << "<#{tags.last}#{attrs_to_s(p_e[1])}>"
      when :end_element
        results << ""
      when :text
        results << p_e[0][0..new_len]
        new_len -= p_e[0].length
      else
        results << ""
      end
    end
    if at_end
      results << "..."
    end
    tags.reverse.each do |tag|
      results << ""
    end
    results
  end

  private

  def attrs_to_s(attrs)
    if attrs.empty?
      ''
    else
      ' ' + attrs.to_a.map { |attr| %{#{attr[0]}="#{attr[1]}"} }.join(' ')
    end
  end
end

推荐阅读
mobiledu2402852357
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有