D.H.Q的烂笔头

Just code for fun~

Articles about: Erlang

Zotonic 模块制作 -- HTML Sitemap

其实 Zotonic 已经有一个sitemap 的模块 -- mod_seo_sitemap,在 /moudules/mod_seo_sitemap 目录下,不过这个模块只生成 xml 格式的 sitemap,不方便浏览。恰好之前了解了下 Zotonic 模块结构 一些相关知识,学以致用,所以就仿照 mod_seo_sitemap 模块,做一个 HTML 版的sitemap -- mod_html_sitemap。

下面是 mod_html_sitemap 模块的目录结构图:

|----mod_sitemap_html
| |----dispatch
| | |----dispatch
| |----mod_sitemap_html.erl
| |----templates
| | |----_sitemap_html.tpl
| | |----sitemap_html.tpl

继续阅读 »

zotonic 的模块结构

zotonic 的模块是把跟模块功能相关的一些文件或文件夹统一放在一个以模块名命名的文件夹里。以之前介绍过的 mod_syntaxhighlighter 模块为例,它的目录架构如下:

|----mod_syntaxhighlighter
| |----lib
| | |----css
| | |----js
| |----templates
| | |----_html_body.tpl
| |----mod_syntaxhighlighter.erl

从上往下,mod_syntaxhighlighter 是模块的文件夹,模块文件夹下包含有资源文件夹lib、模板文件夹templates和模块的初始信息文件 mod_syntaxhighlighter.erl (跟模块名一样的erl文件),资源文件夹lib下还包含有css 文件夹和js文件夹(这两个文件夹里还含有若干css和js文件,由于篇幅省略)。

其实,zotonic 的模块一般由以下文件或文件夹组成:

继续阅读 »

Erlang 的 dict 模块函数方法介绍

Erlang 的 dict 模块比较完整的实现了一个键值(Key - Value)字典。通过这个模块,你可以插入,附加(append),删除,更新字典里的键值对,它也提供了获取字典大小和检查键是否存在等调用接口,而且还包含一些对字典键值进行操作的函数方法,例如:递归(fold)、过滤(filter)、遍历映射(map)字典等特殊操作函数。

new() -> dictionary()

初始构造一个新的字典(其实是返回一个内部定义的dict记录record)

dict:new().
%% 下面是返回的dict记录的初始值,具体请看\lib\stdlib-1.18.2\src\dict.erl
-record(dict, {
	size=0		      	:: non_neg_integer(),   	% Number of elements
	n=?seg_size	      	:: non_neg_integer(),   	% Number of active slots
	maxn=?seg_size	   	:: non_neg_integer(),		% Maximum slots
	bso=?seg_size div 2	:: non_neg_integer(),   	% Buddy slot offset
	exp_size=?exp_size 	:: non_neg_integer(),   	% Size to expand at
	con_size=?con_size 	:: non_neg_integer(),   	% Size to contract at
	empty		      	:: tuple(),					% Empty segment
	segs		      	:: tuple()	      			% Segments
}).

store(Key, Value, Dict1) -> Dict2

以键值(Key - Value)对的形式存储在字典里。如果字典里已经存在 Key 的键,则把跟 Key 相关的值替换为 Value

D = dict:new(),
D1 = dict:store(k1, v1, D).
%% D2 = dict:store(k2, v2, D1).
%% D3 = dict:store(k2, v3, D2).

from_list(List) -> Dict

把一个 Key-Value 形式的列表转换为一个字典

dict:from_list([{k1, v1}, {k2, v2}, {k3, v3}]).
%% 相当于
D = dict:new(),
D1 = dict:store(k1, v1, D),
D2 = dict:store(k2, v2, D1),
D3 = dict:store(k3, v3, D2).

继续阅读 »
返回顶部