Today's the day

向软件大牛炫耀我会焊单片机,向硬件大牛炫耀我会写 Rails,向软硬件大牛炫耀我生物,向软硬件生物大牛炫耀我会折腾期货 -_-bbb

1.0rc 试验功能 -- Textile
GemBlog 1.0rc 中将要取消的东西

自动生成文章简介 & Rubyful Soup

galeki posted @ 2007年12月01日 18:24 in Chito with tags -chito- , 12084 阅读

用过 WP 的人都知道 WP 有一个自动生成文章简介的功能,在文章中插入 <!--more--> 标签,所有之前的内容都会自动作为文章简介,非常方便,而且这样文章的列表界面也不会光秃秃的只有文字。

 晚上折腾了一下,在 GemBlog 上也实现了,原理很简单,本来我也想是三下五除二的事情,结果让我郁闷了一下,等下再说,这是完成后的样子:

上面的文章没有自动生成简介,下面的文章自动把文章前面的部分当作简介,这样页面看上去丰富了很多~

和 WP 一样,也是用 <!--more--> 当作分隔符,之前的内容当作简介,不过这就涉及到一个 HTML 的截断问题,用户插入 <!--more--> 的位置不能确定,假如只是截断的话,有可能会把一些 HTML 标签拦腰咔嚓,这样简介里面就会留着半个没有关闭的 HTML 标签,在文章列表显示的话,会把页面搞得一团糟。

解决的办法就是通过程序自动闭合简介中没有闭合的 HTML 标签,去看了一下 WP,它也是这样处理的,到网上搜了一下,没有发现比较好的算法,最后发现 RubyfulSoup 这个库,解决的问题~

RubyfulSoup 是一个专门用来快速处理 HTML 和 XML 的 Ruby 库,对错误的 HTML 和 HTML 有很强的包容性,还可以对错误进行清理~

用法很简单:

  1. require 'rubyful_soup'
  2.  
  3. invalid_html  = <<END
  4. <div>
  5.    <ul>
  6.        <li><a href="http://www.google.com">Google
  7. END
  8.  
  9. soup = BeautifulSoup.new(invalid_html)
  10. puts soup.prettify
  11.  
  12. #  <div>
  13. #   <ul>
  14. #    <li>
  15. #     <a href="http://www.google.com" google="">Google
  16. #     </a>
  17. #    </li>
  18. #   </ul>
  19. #  </div>

很不错吧,只需要一个 prettify 方法,没有闭合的标签都正确闭合了~

本来一切顺利,结果让我郁闷的是,在单独的程序中测试通过,放在 Blog 中就是无法运行,卡在 BeautifulSoup.new 上,报告参数错误,百思不得其解,郁闷了很久……最后发现…… 原来是命名冲突~~!

RubyfulSoup 里面有个 Tag 类,代表 HTML 或者 XML 标签;Blog 的标签插件: Acts As Taggable 的类也叫  Tag …… RubyfulSoup 找错了类,自然出错了……

没办法,把 RubyfulSoup 的 Tag 改名了,总算一切正常了……

如果你也没法在你的 Rails 网站中用 RubyfulSoup 的话,先检查下命名冲突吧~

 

weskycn 说:
2008年4月18日 18:18 你好,我想问一下,RubyfulSoup能自动处理类似这种格式的吗?
  • hello world
。 谢谢
weskycn 说:
2008年4月18日 18:23

 上面的应该是自动识别了

就是类似这种形式的:


<UL>
  <LI>
   hello world
  </LI>
</UL
或者

<UL>

  <LI>
   hello world
  </LI>
</U
weskycn 说:
2008年4月25日 21:27

你好,在使用过程中遇到两个问题:

一是,

&nbsp; 会被转换成 %nbsp

这个可以通过

gsub(/%nbsp/, "&nbsp;")

转换解决掉

二是

<strong></strong>标签如果不齐的话,不能够自动补齐,整个页面就都是粗体了

这个问题,您是怎么解决的?

Avatar_small
galeki 说:
2008年4月26日 02:43

确实有 %nbsp 这个问题,应该是他库的问题,暂时也就只能这样解决了~

strong 标签的问题我没有遇到,测试了几个也成功了,能否给个导致错误的例子?

weskycn 说:
2008年4月26日 03:44 就是两个 strong标签,如果被截段的话,就不能把另外一半补回来,改成 b标签也一样, 表现为从被截断的位置往下,所有字体都粗体了,呵呵,你可以拿一些代码测试下。
Avatar_small
galeki 说:
2008年4月26日 05:43

给个代码吧,没听明白你说的是什么样子


weskycn 说:
2008年4月26日 21:44
require 'rubyful_soup'
 
invalid_html  = <<END
<div>
    <strong><a href="http://www.google.com">Google
END
 经过下面的处理
soup = BeautifulSoup.new(invalid_html)
puts soup.prettify
 生成结果是
<div>
    <strong><a href="http://www.google.com">Google</a>
</div>

而不是

<div>
    <strong><a href="http://www.google.com">Google</a></strong>
</div>

少了一个strong结束标签

Avatar_small
galeki 说:
2008年4月26日 23:39

我拿这个数据试了一下,可以正确闭合 strong 标签

weskycn 说:
2008年4月28日 00:20 哦,我再试试,
Anonymous 说:
2022年5月29日 15:39

I invite you to the page where you can read       with interesting information on similar topics. voice mail service

Anonymous 说:
2022年6月05日 01:21

Your blogs further more each else volume is so entertaining further serviceable It appoints me befall retreat encore. I will instantly grab your rss feed to stay informed of any updates. Tampa Exterminator

Anonymous 说:
2022年6月05日 01:22

There is so much in this article that I would never have thought of on my own. Your content gives readers things to think about in an interesting way. Orlando Exterminator

Anonymous 说:
2022年6月05日 01:23

I personally use them exclusively high-quality elements : you will notice these folks during: DeLand Brush Clearing

Anonymous 说:
2022年7月11日 15:48

Initial You got a awesome blog .I determination be involved in plus uniform minutes. i view you got truly very functional matters , i determination be always checking your blog blesss. فني تكييف

Anonymous 说:
2022年7月11日 15:49

Your texts on this subject are correct, see how I wrote        this site is really very good. فني كهربائي منازل

Anonymous 说:
2022年7月11日 15:49

Acknowledges for penmanship such a worthy column, I stumbled beside your blog besides predict a handful advise. I want your tone of manuscript... تصليح طباخات

Anonymous 说:
2022年7月11日 15:50

Why do only so much written on this subject? Here you see more.  مكافحة قوارض

Anonymous 说:
2022年7月30日 12:33

Can nicely write on similar topics! Welcome to      here you'll find out how it should look. Pollen Collection Showflat

Anonymous 说:
2022年7月30日 12:35

There is so much in this article that I would never have thought of on my own. Your content gives readers things to think about in an interesting way. Lentor Modern Showflat

Anonymous 说:
2022年8月06日 01:26

Listed here you'll learn it is important, them offers the link in an helpful webpage: clothing

Anonymous 说:
2022年8月10日 00:20

These things are very important, good think so - I think so too...  https://puffingbird.com/

Anonymous 说:
2022年8月15日 12:30

I invite you to the page where     see how much we have in common. lsd sheets for sale

Anonymous 说:
2022年8月17日 16:03

I exploit solely premium quality products -- you will observe these individuals on: Male Enhancement pill

Anonymous 说:
2022年8月21日 00:58

So it is interesting and very good written and see what they think about other people.  royalgreen

Anonymous 说:
2022年8月21日 00:59

This is very interesting content! I have thoroughly enjoyed reading your points and have come to the conclusion that you are right about many of them. You are great. sofa entsorgen berlin

Anonymous 说:
2022年8月22日 19:42

These you will then see the most important thing, the application provides you a website a powerful important internet page: 남자확대수술

Anonymous 说:
2022年8月24日 22:31

Such sites are important because they provide a large dose of useful information ...  fluyezcambios

Anonymous 说:
2022年8月27日 18:00

I should say only that its awesome! The blog is informational and always produce amazing things. 밤알바

Anonymous 说:
2022年8月28日 01:13

During this website, you will see this shape, i highly recommend you learn this review. north gaia singapore

Anonymous 说:
2022年8月28日 01:14

I am interested in such topics so I will address       page where it is cool described. copen grand singapore

Anonymous 说:
2022年8月28日 01:14

Great info! I recently came across your blog and have been reading along. I thought I would leave my first comment. I don’t know what to say except that I have. one bernam price

Anonymous 说:
2022年8月28日 01:14

I personally use them exclusively high-quality elements : you will notice these folks during: the landmark price

Anonymous 说:
2022年8月28日 01:15

It is very good, but look at the information at this address.  sceneca residence floor plan

Anonymous 说:
2022年8月28日 01:15

Hi there, I discovered your blog per Google bit searching for such kinda educational advise moreover your inform beholds very remarkable for me. lentor modern singapore

Anonymous 说:
2022年9月06日 13:03

Can nicely write on similar topics! Welcome to      here you'll find out how it should look. 먹튀

Anonymous 说:
2022年9月09日 13:42

Beaver says I also have such interest, you can read my profile here:  etrader license

Anonymous 说:
2022年9月23日 14:00

I just thought it may be an idea to post incase anyone else was having problems researching but I am a little unsure if I am allowed to put names and addresses on here. Coin Khakhra

Anonymous 说:
2022年10月13日 13:23

These websites are really needed, you can learn a lot.  crypto betting

Anonymous 说:
2022年10月20日 13:32

Below you will understand what is important, the idea provides one of the links with an exciting site: Sim Đại Phát

Anonymous 说:
2022年10月27日 13:42

I propose merely very good along with reputable data, consequently visualize it: a1278 screen assembly

Anonymous 说:
2023年3月25日 01:31

For true fans of this thread I will address      is a free online! Dna test in ethiopia

Anonymous 说:
2023年3月31日 22:20

It is especially decent, though look into the tips during this home address. Gray Sectional Sofas

Anonymous 说:
2023年4月04日 12:23

Here you will learn what is important, it gives you a link to an interesting web page:  Deep cleaning services

Anonymous 说:
2023年4月04日 12:29

This is exciting, nevertheless it is vital for you to visit this specific url: Eco-friendly cleaning services in Silver Spring

Anonymous 说:
2023年4月04日 12:35

I use basically superior fabrics : you will discover these products by: Eco-friendly cleaning Westminster

Anonymous 说:
2023年4月04日 12:40

Your texts on this subject are correct, see how I wrote        this site is really very good. Residential cleaning Takoma Park

Anonymous 说:
2023年4月04日 12:46

For many people this is the best solution here      see how to do it. Maid service Salisbury

Anonymous 说:
2023年4月04日 12:50

I am always searching online for storys that can accommodate me. There is obviously a multiple to understand about this. I feel you made few salubrious points in Attributes moreover. Detain busy, awesome career! Commercial cleaning Rockville

Anonymous 说:
2023年4月04日 12:56

I can recommend primarily decent and even responsible tips, as a result view it: Laurel office cleaning

Anonymous 说:
2023年4月04日 13:02

The best article I came across a number of years, write something about it on this page.  Residential cleaning in Hagerstown

Anonymous 说:
2023年4月04日 13:07

It is quite beneficial, although think about the facts when it reaches this target. Deep cleaning Gaithersburg

Anonymous 说:
2023年4月07日 22:31

On that website page, you'll see your description, why not read through this. Physio Jobs Australia

Anonymous 说:
2023年4月09日 13:37

You possess lifted an essential offspring..Blesss for using..I would want to study better latest transactions from this blog..preserve posting.. Belize Real Estate

Anonymous 说:
2023年4月15日 19:33

I have a similar interest this is my page    read everything carefully and let me know what you think. daman games

anonymous 说:
2023年5月01日 12:18

Interesting and interesting information can be found on this topic here      profile worth to see it. Serrurier

slot5000 说:
2023年7月09日 10:43

I think this is an informative post and it is very useful and knowledgeable. therefore, I would like to thank you for the efforts you have made in writing this article.

英文補習 说:
2023年7月12日 23:01

All the contents you mentioned in post is too good and can be very useful. I will keep it in mind, thanks for sharing the information keep updating, looking forward for more posts.Thanks

Slot Deposit Pulsa 说:
2023年8月31日 11:44

Very useful information, thank you for sharing with us, it is very helpful in increasing our insight.

visit my website : <a href="https://thenewenglandnetwork.net/">Slot Deposit Pulsa</a>

slot zeus 说:
2023年9月02日 15:10

Thank you for making this article, I feel very helped by this article

slot77 说:
2023年9月02日 15:11

very useful information, i'm so thankful for the person who created this article

slot kamboja 说:
2023年9月02日 15:12

so good information, i'll be back for newest information

Ziyad 说:
2023年9月19日 20:53

Most appropriate the human race messages work to show your and present exclusive chance with special couple. Beginer appear system in advance of raucous people will most likely always be aware most of the golden value off presentation, which is a person’s truck. best man jokes แทงบอลออนไลน์

AAA 说:
2023年9月23日 17:58

I think you did an awesome job explaining it. Sure beats having to research it on my own. Thanks เว็บบอลไม่ผ่านเอเย่นต์

akun prot thailand s 说:
2023年10月31日 12:46

<a href="https://heylink.me/AkunProThailandSlot/">akun pro thailand slot</a> yang ada disini semua memiliki kelebihan yang belum ada pada semua serve thailand yang ada pada saat ini. Dalam pembuatan akun yang sudah pasti kegacorannnya, kalian juga dijadikan member special setelah mendapatkan akun vip thailand yang disini. Dengan sistem setoran awal yang rendah serta winrate kemenangan yang sangat tinggi membuat kalian bisa memenang semua jenis permainan yang ingin kalian mainkan atau yang biasa kalian mainkan.

pg slot mahjong 说:
2023年11月01日 14:43

Permainan Slot Online Dari PG Soft Menghadirkan Jenis Permainan PG Slot mahjong Yang Memberikan Kemenangan Besar Hanya Modal Kecil Saja.

situs judi slot thai 说:
2023年12月07日 13:01

The articles shared and the information provided were very useful for me and added to my insight.


登录 *


loading captcha image...
(输入验证码)
or Ctrl+Enter