Created
January 16, 2011 01:54
-
-
Save azu/781466 to your computer and use it in GitHub Desktop.
Tomblooのデータフォルダに年月フォルダ内htmlで記録するパッチ
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
models.register({ | |
name : 'Local HTML', | |
ICON : 'chrome://tombloo/skin/local.ico', | |
check : function(ps) { | |
return (/(regular|photo|quote|link)/).test(ps.type); | |
}, | |
post : function(ps) { | |
function format0(str, len) { | |
return ('_' + Math.pow(10, len) + str).slice(-len); | |
} | |
if (ps.type == 'photo') { | |
return this.Photo.post(ps); | |
} else { | |
// Tombloo/2011/01/index.htmlのような場所に作成 | |
var date = new Date(); | |
var name = 'index.html'; | |
var path = 'file:///' + getPref('dataDir').replace(/\{(.*?)\}/g, | |
function(all, name) { | |
return DirectoryService.get(name, IFile).path; | |
}).replace(/\\/g, '/'); | |
var dir = createDir(date.getFullYear() + '\\' + format0((date.getMonth() + 1), 2), getLocalFile(path)); | |
name && dir.append(name); | |
return this.append(dir, ps); | |
} | |
}, | |
append : function(file, ps) { | |
var title = convertToPlainText(ps.item);// プレーンテキストに | |
// utm_*トラッキングコードを取り除く | |
var itemUrl = ps.itemUrl.replace(/([\?\&]utm_(source|medium|campaign|content)=.+)/ig,''); | |
putContents(file, joinText([ | |
joinText([ | |
'<blockquote cite="' + itemUrl + '" title="' + title + '">', | |
'<p class="jser-sitelink">', | |
'<strong>' + title + '</strong><br />', | |
'<a href="' + itemUrl + '" title="' + title + '">' + itemUrl + '</a>', | |
'</p>', | |
'</blockquote>', | |
'<p>' + joinText([ps.body, ps.description], '\n', false).replace("\n", "<br />\n", "g") + '</p>' | |
], "\n"), | |
getContents(file) | |
], '\n\n\n')); | |
/* | |
<blockquote cite="http://fixingthesejquery.com/#slide1" title="desc"> | |
<p><strong>Fixing These jQuery | adam j. sontag</strong><br /> | |
<a href="http://fixingthesejquery.com/#slide1" title="Fixing These jQuery | adam j. sontag">http://fixingthesejquery.com/#slide1</a></p> | |
</blockquote> | |
*/ | |
return succeed(); | |
}, | |
Photo : { | |
post : function(ps) { | |
var file = getDataDir('photo'); | |
createDir(file); | |
if (ps.file) { | |
file.append(ps.file.leafName); | |
} else { | |
var uri = createURI(ps.itemUrl); | |
var fileName = validateFileName(uri.fileName); | |
file.append(fileName); | |
} | |
clearCollision(file); | |
return succeed().addCallback( | |
function() { | |
if (ps.file) { | |
ps.file.copyTo(file.parent, file.leafName); | |
return file; | |
} else { | |
return download(ps.itemUrl, file); | |
} | |
}).addCallback(function(file) { | |
if (AppInfo.OS == 'Darwin') { | |
var script = getTempDir('setcomment.scpt'); | |
putContents(script, [ | |
'set aFile to POSIX file ("' + file.path + '" as Unicode text)', | |
'set cmtStr to ("' + ps.pageUrl + '" as Unicode text)', | |
'tell application "Finder" to set comment of (file aFile) to cmtStr' | |
].join('\n'), 'UTF-16'); | |
var process = new Process(new LocalFile('/usr/bin/osascript')); | |
process.run(false, [script.path], 1); | |
} | |
}); | |
} | |
} | |
}); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment