kenlistian

勤学多思

  IT博客 :: 首页 :: 新随笔 ::  :: 聚合  :: 管理 ::
  412 随笔 :: 0 文章 :: 23 评论 :: 0 Trackbacks

ruby作为动态语言,不仅用于rail,还可以作为胶水语言广泛用于其他。

在我们常常采用config。ini来处理设置,在ruby中,采用yaml包来解决来解决在config。ini做设置。

先开始认识yaml是什么,(具体看:http://www.yaml.org/

YAML是"Yet Another Markup Language(另一种标记语言)"的缩写,读音"yamel",或者"雅梅尔"。这种格式大约是2001年出现的,目前为止已经有多种语言的YAML解析器。

YAML是一种直观的能够被电脑识别的的数据数据序列化格式,它并且容易被人类阅读,容易与脚本语言交互的。

换种说法,YAML是一种非常简单的类似于XML的数据描述语言,语法比XML简单很多。他在描述可以被转化成数组或者hash的数据是非常有用。

在YAML里面,

1.结构通过缩进来表示,

2.连续的项目通过减号"-"来表示,

3.map结构里面的key/value对用冒号":"来分隔。

YAML也有用来描述好几行相同结构的数据的缩写语法,数组用'[]'包括起来,hash用'{}'来包括。因此,YAML表达一个简单的config.ini文件

[sys]

database=pubs

username=sa

pwd=sa

可以写到一个points.yml文件中

sys :

{database : pubs , username : sa pwd : sa}

注意:冒号2边要留空格,否则yaml 中的hash解析不出

在ruby中,写一个读取例子,

require 'yaml'
points = YAML.load(IO.read('points.yml'))

points.each{|point|
p point
ss = point[1]
print "database :", ss["database"], "\n"
print "user:" , ss["user"], "\n"
print "pwd:" , ss["pwd"], "\n"
}

---------- ruby ----------
["sys", {"user"=>"sa", "pwd"=>"sa", "database"=>"pubs"}]
database :pubs
user:sa
pwd:sa

这篇文章介绍yaml比我深,一并备注;

http://blog.csdn.net/smilewater/archive/2007/07/05/1679835.aspx

********************

yaml的语法标记;

YAML语言元素

1 列表(List)

表示一个列表很简单,在每个条目前加入一个短横线。比如

- Item1
- Item2
- Item3


在Ruby中会被解释为数组对象(Array),上例为:

["Item1", "Item2", "Item3"]

2.哈希表(Hash)

哈希表的键/值之间用冒号(:)进行分隔。

key1 : value1
key2 : value2
key3 : value3

在Ruby中会被解释为如下的哈希对象:

{"key1"=>"value1", "key2"=>"value2", "key3"=>"value3"}

3. 字符串和其它基本类型

YAML会自动判断类型,一般性的文字都会被解释为字符串。在有可能发生歧义的情况下,可以为字符串加上单引号或者双引号(在双引号下转义字符会被转义,转义方式与C语言类似)来避免歧义。

下面是一个例子,包含了字符串、整数、浮点数和日期类型:

1 : 1.0
1.0 : "1.0"
"1.0" : 2006-01-01

它会被解释为:

{1=>1.0, "1.0"=>#<Date: 4907473/2,0,2299161>, 1.0=>"1.0"}

可以看出它的类型被很好的识别出来。

4. 字符串块

字符串可能会占据多行,可以用两种方式来处理这种情况,一种是保留换行符,另外一种则去除换行符。

用| 表示保留换行符:

|
This is line1.
This is line2.
This is line3.

解释为:

"This is line1.\nThis is line2.\nThis is line3."

用>表示删除换行符:

>
Hello,
world.

解释为:

"Hello, world."

以上是一些常用的基本类型,当然它们还可以组合为更复杂的结构,比如列表的内容可以是列表本身,也可以是哈希表;哈希表的内容也可以是列表或哈希表,它们可以嵌套使用,来获得非常复杂的结构。

posted on 2008-03-26 15:05 kenlistian 阅读(3240) 评论(0)  编辑 收藏 引用
只有注册用户登录后才能发表评论。