zen-coding for aptana 的插件下载地址 http://code.google.com/p/zen-coding/downloads/list 自己找最新的版本。
1. 下载完后解压,在 aptana 的项目根目录,新建一个文件夹 scripts 目录。如果与项目中的目录命名冲突了,可以改用 monkey 命名。可以参考 -> aptana的原文
2. 将解压出来的的文件放到里面(解压后里面有个.svn的目录没清除,可以自己清除一下)。
3. aptana的菜单栏的 script 里面就出现zen coding ,默认的快捷键 alt+e, alt+f
4. 配置自己需要的快捷键,在 scripts(monkey) 目录中的每个js文件头的注释里面修改相应的快捷键。aptana的默认快捷键用的是 M1 M2 M3 + key 来配置的,意思为
- M1 (Command or Ctrl)
- M2 (Shift)
- M3 (Option or Alt)
- M4 (Ctrl on Mac)
可以参考 -> aptana原文
5. 如果项目使用了svn 和 ftp,而不想将次目录同步到svn 和ftp 可以将整个目录屏蔽。因为这些文件对与网站来说是无用的。
6. 自定义想要的缩写方式和代码片段。找到 zen_setting.js 里面是 json格式的一些 缩写对应表,和片段对应表。自己根据个人喜爱修改。
晚上逛了blueidea 看了 Zen Coding:快速编写HTML/CSS代码 http://www.blueidea.com/tech/web/2009/7272.asp 这篇文章。 发现 zen Coding 非常强大..
视频时Mac 的机器的,开始一想没戏了… 没往下看。点进了他的官网 http://code.google.com/p/zen-coding/
,发现完美支持 Aptana。 狂喜中… 哈哈
于是马上下了 zen Coding 配到 aptana 上用,真的太爽了。 编写代码的速度可以 30% 了。 哈哈.. 后面又试了下 Ultraedit+ zen coding,也很强大了。。
这下有得折腾一回了。 哈哈…
/**
*@jsonDataHandler.diff(json1,json2)
*/
Array.prototype.compareTo = function(compareAry) {
if (this.length === compareAry.length) {
var i;
for (i = 0; i < compareAry.length; i+=1) {
if (Object.isArray(this[i]) === true) {
if (this[i].compareTo(compareAry[i]) === false) {
return false;
}
continue;
}
else if (this[i] !== compareAry[i]) {
return false;
}
}
return true;
}
return false;
};
(function() {
var _toString = Object.prototype.toString;
function extend(destination, source) {
for (var property in source)
destination[property] = source[property];
return destination;
}
function keys(object) {
var results = [];
for (var property in object)
results.push(property);
return results;
}
function isArray(object) {
return _toString.call(object) == "[object Array]";
}
extend(Object, {
extend: extend,
keys: keys,
isArray: isArray
});
})();
(function() {
var arrayProto = Array.prototype;
function indexOf(item, i) {
i || (i = 0);
var length = this.length;
if (i < 0) i = length + i;
for (; i < length; i++)
if (this[i] === item) return i;
return -1;
}
if (!arrayProto.indexOf) arrayProto.indexOf = indexOf;
})();
var jsonDataHandler = {
merge: function(j1, j2) {
if (typeof this.merging === "undefined" || this.merging === 0) {
this.mergeCyclicCheck = [];
this.merging = 0;
}
this.merging += 1;
if (typeof j1 === "undefined") {
j1 = {};
}
if (typeof j2 === "undefined") {
j2 = {};
}
if (typeof this.mergeCyclicCheck === "undefined") {
this.mergeCyclicCheck = [];
}
var key;
for (key in j2) if (j2.hasOwnProperty(key)) {
if (typeof j1[key] === "undefined") {
j1[key] = j2[key];
}
else {
if (typeof j2[key] === "object") {
if (this.mergeCyclicCheck.indexOf(j1[key]) >= 0) {
break;
}
this.merge(j1[key], j2[key]);
this.mergeCyclicCheck.push(j1[key]);
}
else {
j1[key] = j2[key];
}
}
}
this.merging -= 1;
},
diff: function(j1, j2) {
if (typeof this.diffing === "undefined" || this.diffing === 0) {
this.diffCyclicCheck = [];
this.diffing = 0;
}
var diffRes = {};
this.diffing += 1;
if (typeof j1 === "undefined") {
j1 = {};
}
if (typeof j2 === "undefined") {
j2 = {};
}
if (typeof this.diffCyclicCheck === "undefined") {
this.diffCyclicCheck = [];
}
var key, bDiff;
for (key in j2) if (j2.hasOwnProperty(key)) {
bDiff = false;
if (typeof j1[key] === "undefined" || typeof j1[key] != typeof j2[key]) {
bDiff = true;
}
else if (j1[key] !== j2[key]) {
if (typeof j2[key] === "object") {
if (this.diffCyclicCheck.indexOf(j2[key]) >= 0) {
break;
}
else if (Object.isArray(j2[key])) {
if (j1[key].length !== j2[key].length || j1[key] !== j2[key]) {
if (j2[key].compareTo(j1[key]) === false) {
bDiff = true;
}
}
}
else if (typeof j1[key] === "object") {
var dR = this.diff(j1[key], j2[key]);
if (Object.keys(dR).length > 0) {
diffRes[key] = dR;
}
}
else {
bDiff = true;
}
this.diffCyclicCheck.push(j2[key]);
}
else if (j1[key] !== j2[key]) {
bDiff = true;
}
}
if (bDiff) {
diffRes[key] = j2[key];
}
}
for (key in j1) if (j1.hasOwnProperty(key)) {
bDiff = false;
if (typeof j2[key] === "undefined") {
diffRes[key] = j1[key];
}
}
this.diffing -= 1;
return diffRes;
}
};
2组array 进行对比,取其差异部分。
/**
* @array_diff(new,old)
*/
function array_diff(){var arr1=arguments[0],retArr={};var k1='',i=1,k='',arr={};arr1keys:for(k1 in arr1){for(i=1;i<arguments.length;i++){arr=arguments[i];for(k in arr){if(arr[k]===arr1[k1]){continue arr1keys;}}
retArr[k1]=arr1[k1];}}
return retArr;}

reply