Browse files

support rss and change time function

  • Loading branch information...
1 parent 2c7c147 commit ab2d4d4ccf9c687dce3a07789841b3812c580faf @zmmbreeze committed Jan 7, 2013
Showing with 2,291 additions and 41 deletions.
  1. +3 −1 blogin.json
  2. +4 −0 data/info
  3. +6 −3 lib/file.coffee
  4. +7 −3 lib/file.js
  5. +99 −14 lib/update.coffee
  6. +122 −20 lib/update.js
  7. +1 −0 node_modules/rss/.idea/.name
  8. +3 −0 node_modules/rss/.idea/dictionaries/dylan.xml
  9. +5 −0 node_modules/rss/.idea/encodings.xml
  10. +8 −0 node_modules/rss/.idea/misc.xml
  11. +9 −0 node_modules/rss/.idea/modules.xml
  12. +9 −0 node_modules/rss/.idea/node-rss.iml
  13. +5 −0 node_modules/rss/.idea/scopes/scope_settings.xml
  14. +7 −0 node_modules/rss/.idea/vcs.xml
  15. +493 −0 node_modules/rss/.idea/workspace.xml
  16. +1 −0 node_modules/rss/.npmignore
  17. +22 −0 node_modules/rss/LICENSE
  18. +91 −0 node_modules/rss/lib/rss.js
  19. +1 −0 node_modules/rss/node_modules/xml/.idea/.name
  20. +3 −0 node_modules/rss/node_modules/xml/.idea/dictionaries/dylan.xml
  21. +5 −0 node_modules/rss/node_modules/xml/.idea/encodings.xml
  22. +11 −0 node_modules/rss/node_modules/xml/.idea/misc.xml
  23. +9 −0 node_modules/rss/node_modules/xml/.idea/modules.xml
  24. +9 −0 node_modules/rss/node_modules/xml/.idea/node-xml.iml
  25. +5 −0 node_modules/rss/node_modules/xml/.idea/scopes/scope_settings.xml
  26. +7 −0 node_modules/rss/node_modules/xml/.idea/vcs.xml
  27. +362 −0 node_modules/rss/node_modules/xml/.idea/workspace.xml
  28. +22 −0 node_modules/rss/node_modules/xml/LICENSE
  29. +76 −0 node_modules/rss/node_modules/xml/examples/examples.js
  30. +24 −0 node_modules/rss/node_modules/xml/examples/server.js
  31. +1 −0 node_modules/rss/node_modules/xml/index.js
  32. +17 −0 node_modules/rss/node_modules/xml/lib/util.js
  33. +255 −0 node_modules/rss/node_modules/xml/lib/xml.js
  34. +58 −0 node_modules/rss/node_modules/xml/package.json
  35. +166 −0 node_modules/rss/node_modules/xml/readme.md
  36. +1 −0 node_modules/rss/node_modules/xml/test/nodemon-ignore
  37. +89 −0 node_modules/rss/node_modules/xml/test/test.js
  38. +48 −0 node_modules/rss/package.json
  39. +119 −0 node_modules/rss/readme.md
  40. +107 −0 node_modules/rss/test/test.js
  41. +1 −0 public/template/includes/head.jade
View
4 blogin.json
@@ -3,5 +3,7 @@
"description": "A static blog base on blogin.",
"keywords": "website,blog,framework,static,blogin",
"author": "MZhou / @zhoumm",
- "email": "zmmbreeze0825@gmail.com"
+ "email": "zmmbreeze0825@gmail.com",
+ "siteUrl": "http://nodejs.in",
+ "favicon": "https://github.com//favicon.ico"
}
View
4 data/info
@@ -0,0 +1,4 @@
+{
+ pages: [],
+ posts: []
+}
View
9 lib/file.coffee
@@ -64,7 +64,10 @@ copy = exports.copy = (src, dest) ->
readJSON = exports.readJSON = (src) ->
content = read(src)
- JSON.parse(content)
+ if content
+ return JSON.parse(content)
+ else
+ return ''
getFileName = exports.getFileName = (filePath) ->
filePath.replace(path.dirname(filePath) + '/', '')
@@ -107,12 +110,12 @@ exports.pathToUrl = (filePath, root) ->
exports.getCTime = (filePath, format) ->
stat = fs.statSync(filePath)
- format = format || 'YYYY-MM-DD'
+ format = format || 'YYYY-MM-DD hh:mm:ss'
moment(stat.ctime).format(format)
exports.getMTime = (filePath, format) ->
stat = fs.statSync(filePath)
- format = format || 'YYYY-MM-DD'
+ format = format || 'YYYY-MM-DD hh:mm:ss'
moment(stat.mtime).format(format)
exports.mdToHtml = (filePath) ->
View
10 lib/file.js
@@ -90,7 +90,11 @@
readJSON = exports.readJSON = function(src) {
var content;
content = read(src);
- return JSON.parse(content);
+ if (content) {
+ return JSON.parse(content);
+ } else {
+ return '';
+ }
};
getFileName = exports.getFileName = function(filePath) {
@@ -135,14 +139,14 @@
exports.getCTime = function(filePath, format) {
var stat;
stat = fs.statSync(filePath);
- format = format || 'YYYY-MM-DD';
+ format = format || 'YYYY-MM-DD hh:mm:ss';
return moment(stat.ctime).format(format);
};
exports.getMTime = function(filePath, format) {
var stat;
stat = fs.statSync(filePath);
- format = format || 'YYYY-MM-DD';
+ format = format || 'YYYY-MM-DD hh:mm:ss';
return moment(stat.mtime).format(format);
};
View
113 lib/update.coffee
@@ -7,10 +7,11 @@ moment = require('moment')
file = require('./file')
usage = require('./usage')
parseArg = require('./arg').parse
+RSS = require('rss')
templateDir = './public/template/'
projectDir = './'
-
+projectInfo = {}
fileApi =
getJadeFile: (type) ->
@@ -20,9 +21,12 @@ fileApi =
switch type
when 'page'
path.resolve(projectDir, 'data/pages')
- else
+ when 'post'
+ path.resolve(projectDir, 'data/posts')
+ when 'archive'
path.resolve(projectDir, 'data/posts')
+
getDestFile: (type) ->
switch type
when 'archive'
@@ -31,8 +35,12 @@ fileApi =
path.resolve(projectDir, 'post')
when 'page'
path.resolve(projectDir, 'page')
- else
+ when 'index'
path.resolve(projectDir, 'index.html')
+ when 'rss'
+ path.resolve(projectDir, 'rss.xml')
+ else
+ projectDir
srcToDest: (type, srcFilePath) ->
relativePath = path.relative(this.getSrcFile(type), srcFilePath)
@@ -44,6 +52,24 @@ fileApi =
fileUrl = path.resolve(this.getDestFile(type), relativePath)
file.pathToUrl(file.mdToHtml(fileUrl), projectDir)
+ getInfo: (type, filePath) ->
+ list = projectInfo[type]
+ filePath = path.relative(projectDir, filePath)
+ list.forEach (item) =>
+ if (item.file is filePath)
+ return item
+
+ getMTime: (type, filePath) ->
+ info = this.getInfo(type, filePath)
+ if info then info.mtime
+
+ getCTime: (type, filePath) ->
+ info = this.getInfo(type, filePath)
+ if info then info.ctime
+
+ sortByCreateTime: (type, files) ->
+ return files.sort (a, b) =>
+ return this.getCTime(type, a) < this.getCTime(type, b)
dataApi =
@@ -52,7 +78,7 @@ dataApi =
fileList = file.dir(postDir)
items = []
- fileList = file.sortByCreateTime(fileList)
+ fileList = fileApi.sortByCreateTime('post', fileList)
fileList.forEach (filePath) =>
if not file.isMd(filePath)
return;
@@ -66,7 +92,7 @@ dataApi =
fileList = file.dir(pageDir)
items = []
- fileList = file.sortByCreateTime(fileList)
+ fileList = fileApi.sortByCreateTime('page', fileList)
fileList.forEach (filePath) =>
if not file.isMd(filePath)
return;
@@ -80,7 +106,8 @@ dataApi =
archiveList = file.dir(archiveDir, true)
items = []
- archiveList = file.sortByCreateTime(archiveList)
+ archiveList = archiveList.sort (a, b) =>
+ return a < b
archiveList.forEach (filePath) =>
items.push
title: file.getFileName(filePath)
@@ -92,7 +119,7 @@ dataApi =
fileList = file.dir(postDir)
items = []
- fileList = file.sortByCreateTime(fileList)
+ fileList = fileApi.sortByCreateTime('post', fileList)
fileList.forEach (filePath) =>
if not file.isMd(filePath)
return;
@@ -102,9 +129,12 @@ dataApi =
return items
getLocals: (type, arg1) ->
- locals =
+ locals =
site: file.readJSON(path.resolve(projectDir, './blogin.json'))
pageName: ''
+ siteUrl = locals.site.siteUrl
+ rssPath = if (siteUrl[siteUrl.length-1] == '/') then 'rss.xml' else '/rss.xml'
+ locals.site.rssUrl = siteUrl + rssPath
switch type
when 'index'
@@ -162,6 +192,8 @@ rendApi =
)
archives.forEach (archivePath) =>
+ if (archivePath[0] === '.')
+ return
archiveName = file.getFileName(archivePath)
archiveDestFile = path.resolve(destDir, archiveName, 'index.html')
file.write(archiveDestFile, compile(dataApi.getLocals('archive', archiveName)))
@@ -170,7 +202,6 @@ rendApi =
page: (keepQuiet) ->
srcDir = fileApi.getSrcFile('page')
- destDir = fileApi.getDestFile('page')
pages = file.dir(srcDir, true)
compile = jade.compile(fileApi.getJadeFile('page'),
filename: path.resolve(templateDir, 'includes')
@@ -179,20 +210,18 @@ rendApi =
pages.forEach (pagePath) =>
if not file.isMd(pagePath)
return
- pageName = file.getFileName(pagePath).slice(0, -3)
pageTitle = file.pathToTitle(pagePath)
entry =
title: pageTitle
content: file.readMdToHtml(pagePath)
- time: file.getMTime(pagePath)
+ time: fileApi.getMTime('page', pagePath)
pageFile = fileApi.srcToDest('page', pagePath)
file.write(pageFile, compile(dataApi.getLocals('page', entry)))
if not keepQuiet
util.puts('File ' + pageFile + ' created.')
post: (keepQuiet) ->
srcDir = fileApi.getSrcFile('post')
- destDir = fileApi.getDestFile('post')
posts = file.dir(srcDir)
compile = jade.compile(fileApi.getJadeFile('post'),
filename: path.resolve(templateDir, 'includes')
@@ -201,31 +230,87 @@ rendApi =
posts.forEach (postPath) =>
if not file.isMd(postPath)
return
- postName = file.getFileName(postPath).slice(0, -3)
postTitle = file.pathToTitle(postPath)
entry =
title: postTitle
content: file.readMdToHtml(postPath)
- time: file.getMTime(postPath)
+ time: fileApi.getMTime('post', postPath)
postFile = fileApi.srcToDest('post', postPath)
file.write(postFile, compile(dataApi.getLocals('post', entry)))
if not keepQuiet
util.puts('File ' + postFile + ' created.')
+ rss: (keepQuiet) ->
+ srcDir = fileApi.getSrcFile('post')
+ posts = file.dir(srcDir)
+ posts = file.sortByCreateTime(posts)
+ locals = dataApi.getLocals('index')
+ feedFile = fileApi.getDestFile('rss')
+ feed = new RSS
+ title: locals.site.name
+ description: locals.site.description
+ feed_url: path.join(locals.site.siteUrl, '/rss.xml')
+ site_url: locals.site.siteUrl
+ image_url: locals.site.favicon
+ author: locals.site.author
+
+ posts.forEach (postPath) =>
+ if not file.isMd(postPath)
+ return
+ postTitle = file.pathToTitle(postPath)
+ feed.item
+ title: postTitle
+ description: file.readMdToHtml(postPath)
+ url: fileApi.srcToUrl('post', postPath)
+ date: fileApi.getMTime('post', postPath)
+
+ file.write(feedFile, feed.xml())
+ if not keepQuiet
+ util.puts('File ' + feedFile + ' created.')
+
+
module.exports = (args) ->
arg = parseArg(args)
projectDir = path.resolve('./', arg.req[0] || './')
+ infoFile = path.resolve(projectDir, 'data/info')
templateDir = path.resolve(projectDir, './public/template/')
+ # rewrite info file
+ infos = {};
+ infos.post = [];
+ posts = file.dir(fileApi.getSrcFile('post'))
+ posts.forEach (filePath) =>
+ post = {};
+ post.file = path.relative(projectDir, filePath)
+ post.ctime = file.getCTime(filePath)
+ post.mtime = file.getMTime(filePath)
+ infos.post.push(post)
+
+ infos.page = [];
+ pages = file.dir(fileApi.getSrcFile('page'))
+ pages.forEach (filePath) =>
+ page = {};
+ page.file = path.relative(projectDir, filePath)
+ page.ctime = file.getCTime(filePath)
+ page.mtime = file.getMTime(filePath)
+ infos.page.push(page)
+
+ file.write(infoFile, JSON.stringify(infos))
+
+
+ projectInfo = file.readJSON(infoFile)
if not fs.existsSync(templateDir)
usage.puts('update')
return
+ # rend html
keepQuiet = arg.opt.indexOf('q') > 0
rendApi.index(keepQuiet)
rendApi.archive(keepQuiet)
rendApi.page(keepQuiet)
rendApi.post(keepQuiet)
+ rendApi.rss(keepQuiet)
+
View
142 lib/update.js
@@ -1,6 +1,6 @@
// Generated by CoffeeScript 1.4.0
(function() {
- var clc, dataApi, file, fileApi, fs, jade, moment, parseArg, path, projectDir, rendApi, templateDir, usage, util;
+ var RSS, clc, dataApi, file, fileApi, fs, jade, moment, parseArg, path, projectDir, projectInfo, rendApi, templateDir, usage, util;
util = require('util');
@@ -20,10 +20,14 @@
parseArg = require('./arg').parse;
+ RSS = require('rss');
+
templateDir = './public/template/';
projectDir = './';
+ projectInfo = {};
+
fileApi = {
getJadeFile: function(type) {
return file.read(path.resolve(templateDir, type + '.jade'));
@@ -32,7 +36,9 @@
switch (type) {
case 'page':
return path.resolve(projectDir, 'data/pages');
- default:
+ case 'post':
+ return path.resolve(projectDir, 'data/posts');
+ case 'archive':
return path.resolve(projectDir, 'data/posts');
}
},
@@ -44,8 +50,12 @@
return path.resolve(projectDir, 'post');
case 'page':
return path.resolve(projectDir, 'page');
- default:
+ case 'index':
return path.resolve(projectDir, 'index.html');
+ case 'rss':
+ return path.resolve(projectDir, 'rss.xml');
+ default:
+ return projectDir;
}
},
srcToDest: function(type, srcFilePath) {
@@ -59,6 +69,37 @@
relativePath = path.relative(this.getSrcFile(type), srcFilePath);
fileUrl = path.resolve(this.getDestFile(type), relativePath);
return file.pathToUrl(file.mdToHtml(fileUrl), projectDir);
+ },
+ getInfo: function(type, filePath) {
+ var list,
+ _this = this;
+ list = projectInfo[type];
+ filePath = path.relative(projectDir, filePath);
+ return list.forEach(function(item) {
+ if (item.file === filePath) {
+ return item;
+ }
+ });
+ },
+ getMTime: function(type, filePath) {
+ var info;
+ info = this.getInfo(type, filePath);
+ if (info) {
+ return info.mtime;
+ }
+ },
+ getCTime: function(type, filePath) {
+ var info;
+ info = this.getInfo(type, filePath);
+ if (info) {
+ return info.ctime;
+ }
+ },
+ sortByCreateTime: function(type, files) {
+ var _this = this;
+ return files.sort(function(a, b) {
+ return _this.getCTime(type, a) < _this.getCTime(type, b);
+ });
}
};
@@ -69,7 +110,7 @@
postDir = fileApi.getSrcFile('post');
fileList = file.dir(postDir);
items = [];
- fileList = file.sortByCreateTime(fileList);
+ fileList = fileApi.sortByCreateTime('post', fileList);
fileList.forEach(function(filePath) {
if (!file.isMd(filePath)) {
return;
@@ -87,7 +128,7 @@
pageDir = fileApi.getSrcFile('page');
fileList = file.dir(pageDir);
items = [];
- fileList = file.sortByCreateTime(fileList);
+ fileList = fileApi.sortByCreateTime('page', fileList);
fileList.forEach(function(filePath) {
if (!file.isMd(filePath)) {
return;
@@ -105,7 +146,9 @@
archiveDir = fileApi.getSrcFile('post');
archiveList = file.dir(archiveDir, true);
items = [];
- archiveList = file.sortByCreateTime(archiveList);
+ archiveList = archiveList.sort(function(a, b) {
+ return a < b;
+ });
archiveList.forEach(function(filePath) {
return items.push({
title: file.getFileName(filePath),
@@ -120,7 +163,7 @@
postDir = path.resolve(fileApi.getSrcFile('post'), archiveName);
fileList = file.dir(postDir);
items = [];
- fileList = file.sortByCreateTime(fileList);
+ fileList = fileApi.sortByCreateTime('post', fileList);
fileList.forEach(function(filePath) {
if (!file.isMd(filePath)) {
return;
@@ -133,11 +176,14 @@
return items;
},
getLocals: function(type, arg1) {
- var archiveName, keywords, locals;
+ var archiveName, keywords, locals, rssPath, siteUrl;
locals = {
site: file.readJSON(path.resolve(projectDir, './blogin.json')),
pageName: ''
};
+ siteUrl = locals.site.siteUrl;
+ rssPath = siteUrl[siteUrl.length - 1] === '/' ? 'rss.xml' : '/rss.xml';
+ locals.site.rssUrl = siteUrl + rssPath;
switch (type) {
case 'index':
locals.items = this.getPostList();
@@ -207,25 +253,23 @@
});
},
page: function(keepQuiet) {
- var compile, destDir, pages, srcDir,
+ var compile, pages, srcDir,
_this = this;
srcDir = fileApi.getSrcFile('page');
- destDir = fileApi.getDestFile('page');
pages = file.dir(srcDir, true);
compile = jade.compile(fileApi.getJadeFile('page'), {
filename: path.resolve(templateDir, 'includes')
});
return pages.forEach(function(pagePath) {
- var entry, pageFile, pageName, pageTitle;
+ var entry, pageFile, pageTitle;
if (!file.isMd(pagePath)) {
return;
}
- pageName = file.getFileName(pagePath).slice(0, -3);
pageTitle = file.pathToTitle(pagePath);
entry = {
title: pageTitle,
content: file.readMdToHtml(pagePath),
- time: file.getMTime(pagePath)
+ time: fileApi.getMTime('page', pagePath)
};
pageFile = fileApi.srcToDest('page', pagePath);
file.write(pageFile, compile(dataApi.getLocals('page', entry)));
@@ -235,40 +279,97 @@
});
},
post: function(keepQuiet) {
- var compile, destDir, posts, srcDir,
+ var compile, posts, srcDir,
_this = this;
srcDir = fileApi.getSrcFile('post');
- destDir = fileApi.getDestFile('post');
posts = file.dir(srcDir);
compile = jade.compile(fileApi.getJadeFile('post'), {
filename: path.resolve(templateDir, 'includes')
});
return posts.forEach(function(postPath) {
- var entry, postFile, postName, postTitle;
+ var entry, postFile, postTitle;
if (!file.isMd(postPath)) {
return;
}
- postName = file.getFileName(postPath).slice(0, -3);
postTitle = file.pathToTitle(postPath);
entry = {
title: postTitle,
content: file.readMdToHtml(postPath),
- time: file.getMTime(postPath)
+ time: fileApi.getMTime('post', postPath)
};
postFile = fileApi.srcToDest('post', postPath);
file.write(postFile, compile(dataApi.getLocals('post', entry)));
if (!keepQuiet) {
return util.puts('File ' + postFile + ' created.');
}
});
+ },
+ rss: function(keepQuiet) {
+ var feed, feedFile, locals, posts, srcDir,
+ _this = this;
+ srcDir = fileApi.getSrcFile('post');
+ posts = file.dir(srcDir);
+ posts = file.sortByCreateTime(posts);
+ locals = dataApi.getLocals('index');
+ feedFile = fileApi.getDestFile('rss');
+ feed = new RSS({
+ title: locals.site.name,
+ description: locals.site.description,
+ feed_url: path.join(locals.site.siteUrl, '/rss.xml'),
+ site_url: locals.site.siteUrl,
+ image_url: locals.site.favicon,
+ author: locals.site.author
+ });
+ posts.forEach(function(postPath) {
+ var postTitle;
+ if (!file.isMd(postPath)) {
+ return;
+ }
+ postTitle = file.pathToTitle(postPath);
+ return feed.item({
+ title: postTitle,
+ description: file.readMdToHtml(postPath),
+ url: fileApi.srcToUrl('post', postPath),
+ date: fileApi.getMTime('post', postPath)
+ });
+ });
+ file.write(feedFile, feed.xml());
+ if (!keepQuiet) {
+ return util.puts('File ' + feedFile + ' created.');
+ }
}
};
module.exports = function(args) {
- var arg, keepQuiet;
+ var arg, infoFile, infos, keepQuiet, pages, posts,
+ _this = this;
arg = parseArg(args);
projectDir = path.resolve('./', arg.req[0] || './');
+ infoFile = path.resolve(projectDir, 'data/info');
templateDir = path.resolve(projectDir, './public/template/');
+ infos = {};
+ infos.post = [];
+ posts = file.dir(fileApi.getSrcFile('post'));
+ posts.forEach(function(filePath) {
+ var post;
+ post = {};
+ post.file = path.relative(projectDir, filePath);
+ post.ctime = file.getCTime(filePath);
+ post.mtime = file.getMTime(filePath);
+ return infos.post.push(post);
+ });
+ infos.page = [];
+ pages = file.dir(fileApi.getSrcFile('page'));
+ pages.forEach(function(filePath) {
+ var page;
+ page = {};
+ page.file = path.relative(projectDir, filePath);
+ page.ctime = file.getCTime(filePath);
+ page.mtime = file.getMTime(filePath);
+ return infos.page.push(page);
+ });
+ file.write(infoFile, JSON.stringify(infos));
+ projectInfo = file.readJSON(infoFile);
if (!fs.existsSync(templateDir)) {
usage.puts('update');
return;
@@ -277,7 +378,8 @@
rendApi.index(keepQuiet);
rendApi.archive(keepQuiet);
rendApi.page(keepQuiet);
- return rendApi.post(keepQuiet);
+ rendApi.post(keepQuiet);
+ return rendApi.rss(keepQuiet);
};
}).call(this);
View
1 node_modules/rss/.idea/.name
@@ -0,0 +1 @@
+node-rss
View
3 node_modules/rss/.idea/dictionaries/dylan.xml
@@ -0,0 +1,3 @@
+<component name="ProjectDictionaryState">
+ <dictionary name="dylan" />
+</component>
View
5 node_modules/rss/.idea/encodings.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+ <component name="Encoding" useUTFGuessing="true" native2AsciiForPropertiesFiles="false" />
+</project>
+
View
8 node_modules/rss/.idea/misc.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+ <component name="ProjectResources">
+ <default-html-doctype>http://www.w3.org/1999/xhtml</default-html-doctype>
+ </component>
+ <component name="ProjectRootManager" version="2" />
+</project>
+
View
9 node_modules/rss/.idea/modules.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+ <component name="ProjectModuleManager">
+ <modules>
+ <module fileurl="file://$PROJECT_DIR$/.idea/node-rss.iml" filepath="$PROJECT_DIR$/.idea/node-rss.iml" />
+ </modules>
+ </component>
+</project>
+
View
9 node_modules/rss/.idea/node-rss.iml
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<module type="WEB_MODULE" version="4">
+ <component name="NewModuleRootManager">
+ <content url="file://$MODULE_DIR$" />
+ <orderEntry type="inheritedJdk" />
+ <orderEntry type="sourceFolder" forTests="false" />
+ </component>
+</module>
+
View
5 node_modules/rss/.idea/scopes/scope_settings.xml
@@ -0,0 +1,5 @@
+<component name="DependencyValidationManager">
+ <state>
+ <option name="SKIP_IMPORT_STATEMENTS" value="false" />
+ </state>
+</component>
View
7 node_modules/rss/.idea/vcs.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+ <component name="VcsDirectoryMappings">
+ <mapping directory="" vcs="Git" />
+ </component>
+</project>
+
View
493 node_modules/rss/.idea/workspace.xml
@@ -0,0 +1,493 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+ <component name="ChangeListManager">
+ <list default="true" id="c5e8d3f9-9956-46ed-921c-84d8ffc20a5d" name="Default" comment="" />
+ <ignored path="node-rss.iws" />
+ <ignored path=".idea/workspace.xml" />
+ <option name="TRACKING_ENABLED" value="true" />
+ <option name="SHOW_DIALOG" value="false" />
+ <option name="HIGHLIGHT_CONFLICTS" value="true" />
+ <option name="HIGHLIGHT_NON_ACTIVE_CHANGELIST" value="false" />
+ <option name="LAST_RESOLUTION" value="IGNORE" />
+ </component>
+ <component name="ChangesViewManager" flattened_view="true" show_ignored="false" />
+ <component name="CreatePatchCommitExecutor">
+ <option name="PATCH_PATH" value="" />
+ </component>
+ <component name="DaemonCodeAnalyzer">
+ <disable_hints />
+ </component>
+ <component name="ExecutionTargetManager" SELECTED_TARGET="default_target" />
+ <component name="FavoritesManager">
+ <favorites_list name="node-rss" />
+ </component>
+ <component name="FileEditorManager">
+ <leaf>
+ <file leaf-file-name="test.js" pinned="false" current="true" current-in-tab="true">
+ <entry file="file://$PROJECT_DIR$/test/test.js">
+ <provider selected="true" editor-type-id="text-editor">
+ <state line="4" column="29" selection-start="67" selection-end="67" vertical-scroll-proportion="0.06772009">
+ <folding />
+ </state>
+ </provider>
+ </entry>
+ </file>
+ <file leaf-file-name="package.json" pinned="false" current="false" current-in-tab="false">
+ <entry file="file://$PROJECT_DIR$/package.json">
+ <provider selected="true" editor-type-id="text-editor">
+ <state line="25" column="20" selection-start="689" selection-end="689" vertical-scroll-proportion="0.0">
+ <folding />
+ </state>
+ </provider>
+ </entry>
+ </file>
+ <file leaf-file-name="readme.md" pinned="false" current="false" current-in-tab="false">
+ <entry file="file://$PROJECT_DIR$/readme.md">
+ <provider selected="true" editor-type-id="text-editor">
+ <state line="88" column="13" selection-start="3147" selection-end="3147" vertical-scroll-proportion="0.0">
+ <folding />
+ </state>
+ </provider>
+ </entry>
+ </file>
+ <file leaf-file-name="rss.js" pinned="false" current="false" current-in-tab="false">
+ <entry file="file://$PROJECT_DIR$/lib/rss.js">
+ <provider selected="true" editor-type-id="text-editor">
+ <state line="4" column="31" selection-start="66" selection-end="66" vertical-scroll-proportion="0.0">
+ <folding />
+ </state>
+ </provider>
+ </entry>
+ </file>
+ </leaf>
+ </component>
+ <component name="FindManager">
+ <FindUsagesManager>
+ <setting name="OPEN_NEW_TAB" value="false" />
+ </FindUsagesManager>
+ </component>
+ <component name="Git.Settings">
+ <option name="UPDATE_CHANGES_POLICY" value="SHELVE" />
+ <option name="RECENT_GIT_ROOT_PATH" value="$PROJECT_DIR$" />
+ </component>
+ <component name="IdeDocumentHistory">
+ <option name="changedFiles">
+ <list>
+ <option value="$PROJECT_DIR$/index.js" />
+ <option value="$PROJECT_DIR$/test/example.ejs" />
+ <option value="$PROJECT_DIR$/lib/encode.js" />
+ <option value="$PROJECT_DIR$/lib/xml.js" />
+ <option value="$PROJECT_DIR$/lib/util.js" />
+ <option value="$PROJECT_DIR$/LICENSE" />
+ <option value="$PROJECT_DIR$/readme.md" />
+ <option value="$PROJECT_DIR$/lib/rss.js" />
+ <option value="$PROJECT_DIR$/package.json" />
+ <option value="$PROJECT_DIR$/test/test.js" />
+ </list>
+ </option>
+ </component>
+ <component name="ProjectFrameBounds">
+ <option name="y" value="31" />
+ <option name="width" value="1440" />
+ <option name="height" value="813" />
+ </component>
+ <component name="ProjectLevelVcsManager" settingsEditedManually="true">
+ <OptionsSetting value="true" id="Add" />
+ <OptionsSetting value="true" id="Remove" />
+ <OptionsSetting value="true" id="Checkout" />
+ <OptionsSetting value="false" id="Update" />
+ <OptionsSetting value="true" id="Status" />
+ <OptionsSetting value="true" id="Edit" />
+ <ConfirmationsSetting value="0" id="Add" />
+ <ConfirmationsSetting value="0" id="Remove" />
+ </component>
+ <component name="ProjectReloadState">
+ <option name="STATE" value="0" />
+ </component>
+ <component name="ProjectView">
+ <navigator currentView="ProjectPane" proportions="" version="1" splitterProportion="0.5">
+ <flattenPackages />
+ <showMembers />
+ <showModules />
+ <showLibraryContents ProjectPane="true" />
+ <hideEmptyPackages />
+ <abbreviatePackageNames />
+ <autoscrollToSource />
+ <autoscrollFromSource />
+ <sortByType />
+ </navigator>
+ <panes>
+ <pane id="Scope" />
+ <pane id="ProjectPane">
+ <subPane>
+ <PATH>
+ <PATH_ELEMENT>
+ <option name="myItemId" value="node-rss" />
+ <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
+ </PATH_ELEMENT>
+ </PATH>
+ <PATH>
+ <PATH_ELEMENT>
+ <option name="myItemId" value="node-rss" />
+ <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
+ </PATH_ELEMENT>
+ <PATH_ELEMENT>
+ <option name="myItemId" value="node-rss" />
+ <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
+ </PATH_ELEMENT>
+ </PATH>
+ <PATH>
+ <PATH_ELEMENT>
+ <option name="myItemId" value="node-rss" />
+ <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
+ </PATH_ELEMENT>
+ <PATH_ELEMENT>
+ <option name="myItemId" value="node-rss" />
+ <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
+ </PATH_ELEMENT>
+ <PATH_ELEMENT>
+ <option name="myItemId" value="test" />
+ <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
+ </PATH_ELEMENT>
+ </PATH>
+ <PATH>
+ <PATH_ELEMENT>
+ <option name="myItemId" value="node-rss" />
+ <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
+ </PATH_ELEMENT>
+ <PATH_ELEMENT>
+ <option name="myItemId" value="node-rss" />
+ <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
+ </PATH_ELEMENT>
+ <PATH_ELEMENT>
+ <option name="myItemId" value="node_modules" />
+ <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
+ </PATH_ELEMENT>
+ </PATH>
+ <PATH>
+ <PATH_ELEMENT>
+ <option name="myItemId" value="node-rss" />
+ <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
+ </PATH_ELEMENT>
+ <PATH_ELEMENT>
+ <option name="myItemId" value="node-rss" />
+ <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
+ </PATH_ELEMENT>
+ <PATH_ELEMENT>
+ <option name="myItemId" value="lib" />
+ <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
+ </PATH_ELEMENT>
+ </PATH>
+ </subPane>
+ </pane>
+ <pane id="Favorites" />
+ </panes>
+ </component>
+ <component name="PropertiesComponent">
+ <property name="options.splitter.main.proportions" value="0.3" />
+ <property name="WebServerToolWindowFactoryState" value="false" />
+ <property name="options.lastSelected" value="preferences.pluginManager" />
+ <property name="options.splitter.details.proportions" value="0.2" />
+ <property name="options.searchVisible" value="true" />
+ </component>
+ <component name="RestoreUpdateTree">
+ <UpdateInfo date="Moments ago" ActionInfo="_Update">
+ <UpdatedFiles>
+ <FILE-GROUP>
+ <option name="myUpdateName" value="Updated from server" />
+ <option name="myStatusName" value="Changed on server" />
+ <option name="mySupportsDeletion" value="false" />
+ <option name="myCanBeAbsent" value="false" />
+ <option name="myId" value="CHANGED_ON_SERVER" />
+ <FILE-GROUP>
+ <option name="myUpdateName" value="Updated" />
+ <option name="myStatusName" value="Changed" />
+ <option name="mySupportsDeletion" value="false" />
+ <option name="myCanBeAbsent" value="false" />
+ <option name="myId" value="UPDATED" />
+ <PATH vcs="Git" revision="">$PROJECT_DIR$/lib/rss.js</PATH>
+ <PATH vcs="Git" revision="">$PROJECT_DIR$/test/test.js</PATH>
+ </FILE-GROUP>
+ <FILE-GROUP>
+ <option name="myUpdateName" value="Created" />
+ <option name="myStatusName" value="Created" />
+ <option name="mySupportsDeletion" value="false" />
+ <option name="myCanBeAbsent" value="false" />
+ <option name="myId" value="CREATED" />
+ <PATH vcs="Git" revision="">$PROJECT_DIR$/.gitignore</PATH>
+ </FILE-GROUP>
+ <FILE-GROUP>
+ <option name="myUpdateName" value="Deleted" />
+ <option name="myStatusName" value="Deleted" />
+ <option name="mySupportsDeletion" value="false" />
+ <option name="myCanBeAbsent" value="true" />
+ <option name="myId" value="REMOVED_FROM_REPOSITORY" />
+ </FILE-GROUP>
+ <FILE-GROUP>
+ <option name="myUpdateName" value="Restored" />
+ <option name="myStatusName" value="Will be restored" />
+ <option name="mySupportsDeletion" value="false" />
+ <option name="myCanBeAbsent" value="false" />
+ <option name="myId" value="RESTORED" />
+ </FILE-GROUP>
+ </FILE-GROUP>
+ <FILE-GROUP>
+ <option name="myUpdateName" value="Modified" />
+ <option name="myStatusName" value="Modified" />
+ <option name="mySupportsDeletion" value="false" />
+ <option name="myCanBeAbsent" value="false" />
+ <option name="myId" value="MODIFIED" />
+ </FILE-GROUP>
+ <FILE-GROUP>
+ <option name="myUpdateName" value="Skipped" />
+ <option name="myStatusName" value="Skipped" />
+ <option name="mySupportsDeletion" value="false" />
+ <option name="myCanBeAbsent" value="false" />
+ <option name="myId" value="SKIPPED" />
+ </FILE-GROUP>
+ <FILE-GROUP>
+ <option name="myUpdateName" value="Merged with conflicts" />
+ <option name="myStatusName" value="Will be merged with conflicts" />
+ <option name="mySupportsDeletion" value="false" />
+ <option name="myCanBeAbsent" value="false" />
+ <option name="myId" value="MERGED_WITH_CONFLICTS" />
+ </FILE-GROUP>
+ <FILE-GROUP>
+ <option name="myUpdateName" value="Merged with tree conflicts" />
+ <option name="myStatusName" value="Merged with tree conflicts" />
+ <option name="mySupportsDeletion" value="false" />
+ <option name="myCanBeAbsent" value="false" />
+ <option name="myId" value="MERGED_WITH_TREE_CONFLICT" />
+ </FILE-GROUP>
+ <FILE-GROUP>
+ <option name="myUpdateName" value="Merged" />
+ <option name="myStatusName" value="Will be merged" />
+ <option name="mySupportsDeletion" value="false" />
+ <option name="myCanBeAbsent" value="false" />
+ <option name="myId" value="MERGED" />
+ </FILE-GROUP>
+ <FILE-GROUP>
+ <option name="myUpdateName" value="Not in repository" />
+ <option name="myStatusName" value="Not in repository" />
+ <option name="mySupportsDeletion" value="true" />
+ <option name="myCanBeAbsent" value="false" />
+ <option name="myId" value="UNKNOWN" />
+ </FILE-GROUP>
+ <FILE-GROUP>
+ <option name="myUpdateName" value="Locally added" />
+ <option name="myStatusName" value="Locally added" />
+ <option name="mySupportsDeletion" value="false" />
+ <option name="myCanBeAbsent" value="false" />
+ <option name="myId" value="LOCALLY_ADDED" />
+ </FILE-GROUP>
+ <FILE-GROUP>
+ <option name="myUpdateName" value="Locally removed" />
+ <option name="myStatusName" value="Locally removed" />
+ <option name="mySupportsDeletion" value="false" />
+ <option name="myCanBeAbsent" value="false" />
+ <option name="myId" value="LOCALLY_REMOVED" />
+ </FILE-GROUP>
+ <FILE-GROUP>
+ <option name="myUpdateName" value="Switched" />
+ <option name="myStatusName" value="Switched" />
+ <option name="mySupportsDeletion" value="false" />
+ <option name="myCanBeAbsent" value="false" />
+ <option name="myId" value="SWITCHED" />
+ </FILE-GROUP>
+ </UpdatedFiles>
+ </UpdateInfo>
+ </component>
+ <component name="RunManager">
+ <configuration default="true" type="JavascriptDebugSession" factoryName="Local">
+ <JSDebuggerConfigurationSettings>
+ <option name="engineId" value="embedded" />
+ <option name="fileUrl" />
+ </JSDebuggerConfigurationSettings>
+ <method />
+ </configuration>
+ <list size="0" />
+ </component>
+ <component name="ShelveChangesManager" show_recycled="false" />
+ <component name="SvnConfiguration" maxAnnotateRevisions="500" myUseAcceleration="nothing" myAutoUpdateAfterCommit="false" cleanupOnStartRun="false">
+ <option name="USER" value="" />
+ <option name="PASSWORD" value="" />
+ <option name="mySSHConnectionTimeout" value="30000" />
+ <option name="mySSHReadTimeout" value="30000" />
+ <option name="LAST_MERGED_REVISION" />
+ <option name="MERGE_DRY_RUN" value="false" />
+ <option name="MERGE_DIFF_USE_ANCESTRY" value="true" />
+ <option name="UPDATE_LOCK_ON_DEMAND" value="false" />
+ <option name="IGNORE_SPACES_IN_MERGE" value="false" />
+ <option name="DETECT_NESTED_COPIES" value="true" />
+ <option name="CHECK_NESTED_FOR_QUICK_MERGE" value="false" />
+ <option name="IGNORE_SPACES_IN_ANNOTATE" value="true" />
+ <option name="SHOW_MERGE_SOURCES_IN_ANNOTATE" value="true" />
+ <option name="FORCE_UPDATE" value="false" />
+ <option name="IGNORE_EXTERNALS" value="false" />
+ <configuration useDefault="true">$USER_HOME$/.subversion_IDEA</configuration>
+ <myIsUseDefaultProxy>false</myIsUseDefaultProxy>
+ </component>
+ <component name="TaskManager">
+ <task active="true" id="Default" summary="Default task">
+ <changelist id="c5e8d3f9-9956-46ed-921c-84d8ffc20a5d" name="Default" comment="" />
+ <created>1302449122203</created>
+ <updated>1302449122203</updated>
+ </task>
+ <task id="LOCAL-00001" summary="updated version, removed dependency on my logging module, removed empty util.js.">
+ <created>1345233684223</created>
+ <updated>1345233684223</updated>
+ </task>
+ <option name="localTasksCounter" value="2" />
+ <servers />
+ </component>
+ <component name="ToolWindowManager">
+ <frame x="0" y="31" width="1440" height="813" extended-state="0" />
+ <editor active="true" />
+ <layout>
+ <window_info id="Messages" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="0" side_tool="false" content_ui="tabs" />
+ <window_info id="Changes" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="3" side_tool="false" content_ui="tabs" />
+ <window_info id="TODO" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="10" side_tool="false" content_ui="tabs" />
+ <window_info id="Structure" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.25" sideWeight="0.5" order="1" side_tool="true" content_ui="tabs" />
+ <window_info id="Project" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" weight="0.4594213" sideWeight="0.67176634" order="0" side_tool="false" content_ui="combo" />
+ <window_info id="Debug" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.4" sideWeight="0.5" order="7" side_tool="false" content_ui="tabs" />
+ <window_info id="Favorites" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="2" side_tool="true" content_ui="tabs" />
+ <window_info id="Event Log" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="7" side_tool="true" content_ui="tabs" />
+ <window_info id="Run" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="6" side_tool="false" content_ui="tabs" />
+ <window_info id="Version Control" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" weight="0.32823366" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" />
+ <window_info id="Cvs" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.25" sideWeight="0.5" order="8" side_tool="false" content_ui="tabs" />
+ <window_info id="Phing Build" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="3" side_tool="false" content_ui="tabs" />
+ <window_info id="Message" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="4" side_tool="false" content_ui="tabs" />
+ <window_info id="Ant Build" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.25" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" />
+ <window_info id="Find" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" weight="0.32961586" sideWeight="0.5" order="5" side_tool="false" content_ui="tabs" />
+ <window_info id="Commander" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.4" sideWeight="0.5" order="0" side_tool="false" content_ui="tabs" />
+ <window_info id="Dependency Viewer" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="2" side_tool="false" content_ui="tabs" />
+ <window_info id="Hierarchy" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.25" sideWeight="0.5" order="2" side_tool="false" content_ui="combo" />
+ <window_info id="Inspection" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.4" sideWeight="0.5" order="9" side_tool="false" content_ui="tabs" />
+ </layout>
+ </component>
+ <component name="VcsContentAnnotationSettings">
+ <option name="myLimit" value="2678400000" />
+ </component>
+ <component name="VcsManagerConfiguration">
+ <option name="OFFER_MOVE_TO_ANOTHER_CHANGELIST_ON_PARTIAL_COMMIT" value="true" />
+ <option name="CHECK_CODE_SMELLS_BEFORE_PROJECT_COMMIT" value="false" />
+ <option name="CHECK_NEW_TODO" value="false" />
+ <option name="myTodoPanelSettings">
+ <value>
+ <are-packages-shown value="false" />
+ <are-modules-shown value="false" />
+ <flatten-packages value="false" />
+ <is-autoscroll-to-source value="false" />
+ </value>
+ </option>
+ <option name="PERFORM_UPDATE_IN_BACKGROUND" value="true" />
+ <option name="PERFORM_COMMIT_IN_BACKGROUND" value="true" />
+ <option name="PERFORM_EDIT_IN_BACKGROUND" value="true" />
+ <option name="PERFORM_CHECKOUT_IN_BACKGROUND" value="true" />
+ <option name="PERFORM_ADD_REMOVE_IN_BACKGROUND" value="true" />
+ <option name="PERFORM_ROLLBACK_IN_BACKGROUND" value="false" />
+ <option name="CHECK_LOCALLY_CHANGED_CONFLICTS_IN_BACKGROUND" value="true" />
+ <option name="CHANGED_ON_SERVER_INTERVAL" value="60" />
+ <option name="SHOW_ONLY_CHANGED_IN_SELECTION_DIFF" value="true" />
+ <option name="CHECK_COMMIT_MESSAGE_SPELLING" value="true" />
+ <option name="DEFAULT_PATCH_EXTENSION" value="patch" />
+ <option name="SHORT_DIFF_HORISONTALLY" value="true" />
+ <option name="SHORT_DIFF_EXTRA_LINES" value="2" />
+ <option name="SOFT_WRAPS_IN_SHORT_DIFF" value="true" />
+ <option name="INCLUDE_TEXT_INTO_PATCH" value="false" />
+ <option name="INCLUDE_TEXT_INTO_SHELF" value="false" />
+ <option name="SHOW_FILE_HISTORY_DETAILS" value="true" />
+ <option name="SHOW_VCS_ERROR_NOTIFICATIONS" value="true" />
+ <option name="FORCE_NON_EMPTY_COMMENT" value="false" />
+ <option name="CLEAR_INITIAL_COMMIT_MESSAGE" value="false" />
+ <option name="LAST_COMMIT_MESSAGE" value="updated version, removed dependency on my logging module, removed empty util.js." />
+ <option name="MAKE_NEW_CHANGELIST_ACTIVE" value="true" />
+ <option name="OPTIMIZE_IMPORTS_BEFORE_PROJECT_COMMIT" value="false" />
+ <option name="CHECK_FILES_UP_TO_DATE_BEFORE_COMMIT" value="false" />
+ <option name="REFORMAT_BEFORE_PROJECT_COMMIT" value="false" />
+ <option name="REFORMAT_BEFORE_FILE_COMMIT" value="false" />
+ <option name="FILE_HISTORY_DIALOG_COMMENTS_SPLITTER_PROPORTION" value="0.8" />
+ <option name="FILE_HISTORY_DIALOG_SPLITTER_PROPORTION" value="0.5" />
+ <option name="ACTIVE_VCS_NAME" />
+ <option name="UPDATE_GROUP_BY_PACKAGES" value="false" />
+ <option name="UPDATE_GROUP_BY_CHANGELIST" value="false" />
+ <option name="SHOW_FILE_HISTORY_AS_TREE" value="false" />
+ <option name="FILE_HISTORY_SPLITTER_PROPORTION" value="0.6" />
+ <MESSAGE value="created protope for PGE " />
+ <MESSAGE value="first checkin" />
+ <MESSAGE value="it's working, even have working tests" />
+ <MESSAGE value="readme" />
+ <MESSAGE value="remove webstorm's readme" />
+ <MESSAGE value="another pass at the readme" />
+ <MESSAGE value="update package.json" />
+ <MESSAGE value="fix test" />
+ <MESSAGE value="tested in node 0.5.10, updated package.json for npm, web-&gt;url" />
+ <MESSAGE value="updated version, removed dependency on my logging module, removed empty util.js." />
+ </component>
+ <component name="XDebuggerManager">
+ <breakpoint-manager>
+ <default-breakpoints>
+ <breakpoint type="javascript-exception">
+ <properties />
+ <option name="timeStamp" value="1" />
+ </breakpoint>
+ </default-breakpoints>
+ <option name="time" value="14" />
+ </breakpoint-manager>
+ </component>
+ <component name="editorHistoryManager">
+ <entry file="file://$PROJECT_DIR$/test/test.js">
+ <provider selected="true" editor-type-id="text-editor">
+ <state line="61" column="2" selection-start="4707" selection-end="4707" vertical-scroll-proportion="0.0">
+ <folding />
+ </state>
+ </provider>
+ </entry>
+ <entry file="file://$PROJECT_DIR$/package.json">
+ <provider selected="true" editor-type-id="text-editor">
+ <state line="15" column="11" selection-start="474" selection-end="474" vertical-scroll-proportion="0.0">
+ <folding />
+ </state>
+ </provider>
+ </entry>
+ <entry file="jar://$APPLICATION_HOME_DIR$/plugins/JavaScriptLanguage/lib/JavascriptLanguage.jar!/com/intellij/lang/javascript/index/predefined/EcmaScript5.js">
+ <provider selected="true" editor-type-id="text-editor">
+ <state line="133" column="33" selection-start="2395" selection-end="2395" vertical-scroll-proportion="0.42416453" />
+ </provider>
+ </entry>
+ <entry file="file://$PROJECT_DIR$/LICENSE">
+ <provider selected="true" editor-type-id="text-editor">
+ <state line="21" column="54" selection-start="1093" selection-end="1093" vertical-scroll-proportion="0.0" />
+ </provider>
+ </entry>
+ <entry file="file://$PROJECT_DIR$/lib/rss.js">
+ <provider selected="true" editor-type-id="text-editor">
+ <state line="4" column="31" selection-start="66" selection-end="66" vertical-scroll-proportion="0.0">
+ <folding />
+ </state>
+ </provider>
+ </entry>
+ <entry file="file://$PROJECT_DIR$/package.json">
+ <provider selected="true" editor-type-id="text-editor">
+ <state line="25" column="20" selection-start="689" selection-end="689" vertical-scroll-proportion="0.0">
+ <folding />
+ </state>
+ </provider>
+ </entry>
+ <entry file="file://$PROJECT_DIR$/readme.md">
+ <provider selected="true" editor-type-id="text-editor">
+ <state line="88" column="13" selection-start="3147" selection-end="3147" vertical-scroll-proportion="0.0">
+ <folding />
+ </state>
+ </provider>
+ </entry>
+ <entry file="file://$PROJECT_DIR$/test/test.js">
+ <provider selected="true" editor-type-id="text-editor">
+ <state line="4" column="29" selection-start="67" selection-end="67" vertical-scroll-proportion="0.06772009">
+ <folding />
+ </state>
+ </provider>
+ </entry>
+ </component>
+</project>
+
View
1 node_modules/rss/.npmignore
@@ -0,0 +1 @@
+node_modules
View
22 node_modules/rss/LICENSE
@@ -0,0 +1,22 @@
+(The MIT License)
+
+Copyright (c) 2011 Dylan Greene <dylang@gmail.com>
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+'Software'), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
+CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
+TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
+SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
View
91 node_modules/rss/lib/rss.js
@@ -0,0 +1,91 @@
+/*
+ Documentation coming soon.
+*/
+
+var XML = require('xml');
+
+function RSS (options, items) {
+ options = options || {};
+
+ this.title = options.title || 'Untitled RSS Feed';
+ this.description = options.description || '';
+ this.feed_url = options.feed_url;
+ this.site_url = options.site_url;
+ this.image_url = options.image_url;
+ this.author = options.author;
+ this.items = items || [];
+
+ this.item = function (options) {
+ options = options || {};
+ var item = {
+ title: options.title || 'No title',
+ description: options.description || '',
+ url: options.url,
+ guid: options.guid,
+ categories: options.categories || [],
+ author: options.author,
+ date: options.date
+ };
+
+ this.items.push(item);
+ return this;
+ };
+
+ this.xml = function(indent) {
+ return '<?xml version="1.0" encoding="UTF-8"?>\n'
+ + XML(generateXML(this), indent);
+ }
+
+}
+
+function ifTruePush(bool, array, data) {
+ if (bool) {
+ array.push(data);
+ }
+}
+
+function generateXML (data){
+ // todo: xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd"
+
+ var channel = [];
+ channel.push({ title: { _cdata: data.title } });
+ channel.push({ description: { _cdata: data.description || data.title } });
+ channel.push({ link: data.site_url || 'http://github.com/dylan/node-rss' });
+ // image_url set?
+ if (data.image_url) {
+ channel.push({ image: [ {url: data.image_url}, {title: data.title}, {link: data.site_url} ] });
+ }
+ channel.push({ generator: 'NodeJS RSS Module' });
+ channel.push({ lastBuildDate: new Date().toGMTString() });
+
+ ifTruePush(data.feed_url, channel, { 'atom:link': { _attr: { href: data.feed_url, rel: 'self', type: 'application/rss+xml' } } });
+ // { updated: new Date().toGMTString() }
+
+
+ data.items.forEach(function(item) {
+ var item_values = [
+ { title: { _cdata: item.title } }
+ ];
+ ifTruePush(item.description, item_values, { description: { _cdata: item.description } });
+ ifTruePush(item.url, item_values, { link: item.url });
+ ifTruePush(item.link || item.guid || item.title, item_values, { guid: [ { _attr: { isPermaLink: !item.guid && !!item.url } }, item.guid || item.url || item.title ] });
+
+ ifTruePush(item.author || data.author, item_values, { 'dc:creator': { _cdata: item.author || data.author } });
+ ifTruePush(item.date, item_values, { pubDate: new Date(item.date).toGMTString() });
+ channel.push({ item: item_values });
+ });
+
+ return { rss: [
+ { _attr: {
+ 'xmlns:dc': 'http://purl.org/dc/elements/1.1/',
+ 'xmlns:content': 'http://purl.org/rss/1.0/modules/content/',
+ 'xmlns:atom': 'http://www.w3.org/2005/Atom',
+ version: '2.0'
+ } },
+ { channel: channel }
+ ] };
+}
+
+
+
+module.exports = RSS;
View
1 node_modules/rss/node_modules/xml/.idea/.name
@@ -0,0 +1 @@
+node-xml
View
3 node_modules/rss/node_modules/xml/.idea/dictionaries/dylan.xml
@@ -0,0 +1,3 @@
+<component name="ProjectDictionaryState">
+ <dictionary name="dylan" />
+</component>
View
5 node_modules/rss/node_modules/xml/.idea/encodings.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+ <component name="Encoding" useUTFGuessing="true" native2AsciiForPropertiesFiles="false" />
+</project>
+
View
11 node_modules/rss/node_modules/xml/.idea/misc.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+ <component name="DependencyValidationManager">
+ <option name="SKIP_IMPORT_STATEMENTS" value="false" />
+ </component>
+ <component name="ProjectResources">
+ <default-html-doctype>http://www.w3.org/1999/xhtml</default-html-doctype>
+ </component>
+ <component name="ProjectRootManager" version="2" />
+</project>
+
View
9 node_modules/rss/node_modules/xml/.idea/modules.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+ <component name="ProjectModuleManager">
+ <modules>
+ <module fileurl="file://$PROJECT_DIR$/.idea/node-xml.iml" filepath="$PROJECT_DIR$/.idea/node-xml.iml" />
+ </modules>
+ </component>
+</project>
+
View
9 node_modules/rss/node_modules/xml/.idea/node-xml.iml
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<module type="WEB_MODULE" version="4">
+ <component name="NewModuleRootManager">
+ <content url="file://$MODULE_DIR$" />
+ <orderEntry type="inheritedJdk" />
+ <orderEntry type="sourceFolder" forTests="false" />
+ </component>
+</module>
+
View
5 node_modules/rss/node_modules/xml/.idea/scopes/scope_settings.xml
@@ -0,0 +1,5 @@
+<component name="DependencyValidationManager">
+ <state>
+ <option name="SKIP_IMPORT_STATEMENTS" value="false" />
+ </state>
+</component>
View
7 node_modules/rss/node_modules/xml/.idea/vcs.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+ <component name="VcsDirectoryMappings">
+ <mapping directory="" vcs="Git" />
+ </component>
+</project>
+
View
362 node_modules/rss/node_modules/xml/.idea/workspace.xml
@@ -0,0 +1,362 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+ <component name="ChangeListManager">
+ <list default="true" id="ed43610d-e1db-4251-8848-789a0b3aae75" name="Default" comment="">
+ <change type="MODIFICATION" beforePath="$PROJECT_DIR$/package.json" afterPath="$PROJECT_DIR$/package.json" />
+ </list>
+ <ignored path="node-xml.iws" />
+ <ignored path=".idea/workspace.xml" />
+ <option name="TRACKING_ENABLED" value="true" />
+ <option name="SHOW_DIALOG" value="false" />
+ <option name="HIGHLIGHT_CONFLICTS" value="true" />
+ <option name="HIGHLIGHT_NON_ACTIVE_CHANGELIST" value="false" />
+ <option name="LAST_RESOLUTION" value="IGNORE" />
+ </component>
+ <component name="ChangesViewManager" flattened_view="true" show_ignored="false" />
+ <component name="CreatePatchCommitExecutor">
+ <option name="PATCH_PATH" value="" />
+ <option name="REVERSE_PATCH" value="false" />
+ </component>
+ <component name="DaemonCodeAnalyzer">
+ <disable_hints />
+ </component>
+ <component name="FavoritesManager">
+ <favorites_list name="node-xml" />
+ </component>
+ <component name="FileEditorManager">
+ <leaf>
+ <file leaf-file-name="examples.js" pinned="false" current="false" current-in-tab="false">
+ <entry file="file://$PROJECT_DIR$/examples/examples.js">
+ <provider selected="true" editor-type-id="text-editor">
+ <state line="54" column="0" selection-start="1122" selection-end="1428" vertical-scroll-proportion="0.0">
+ <folding />
+ </state>
+ </provider>
+ </entry>
+ </file>
+ <file leaf-file-name="xml.js" pinned="false" current="false" current-in-tab="false">
+ <entry file="file://$PROJECT_DIR$/lib/xml.js">
+ <provider selected="true" editor-type-id="text-editor">
+ <state line="192" column="8" selection-start="4920" selection-end="4920" vertical-scroll-proportion="0.0">
+ <folding />
+ </state>
+ </provider>
+ </entry>
+ </file>
+ <file leaf-file-name="util.js" pinned="false" current="false" current-in-tab="false">
+ <entry file="file://$PROJECT_DIR$/lib/util.js">
+ <provider selected="true" editor-type-id="text-editor">
+ <state line="17" column="0" selection-start="369" selection-end="369" vertical-scroll-proportion="0.0">
+ <folding />
+ </state>
+ </provider>
+ </entry>
+ </file>
+ <file leaf-file-name="test.js" pinned="false" current="false" current-in-tab="false">
+ <entry file="file://$PROJECT_DIR$/test/test.js">
+ <provider selected="true" editor-type-id="text-editor">
+ <state line="68" column="0" selection-start="3247" selection-end="3247" vertical-scroll-proportion="0.0">
+ <folding />
+ </state>
+ </provider>
+ </entry>
+ </file>
+ <file leaf-file-name="package.json" pinned="false" current="true" current-in-tab="true">
+ <entry file="file://$PROJECT_DIR$/package.json">
+ <provider selected="true" editor-type-id="text-editor">
+ <state line="2" column="21" selection-start="42" selection-end="42" vertical-scroll-proportion="0.064935066">
+ <folding />
+ </state>
+ </provider>
+ </entry>
+ </file>
+ </leaf>
+ </component>
+ <component name="FindManager">
+ <FindUsagesManager>
+ <setting name="OPEN_NEW_TAB" value="false" />
+ </FindUsagesManager>
+ </component>
+ <component name="Git.Settings">
+ <option name="CHECKOUT_INCLUDE_TAGS" value="false" />
+ <option name="UPDATE_CHANGES_POLICY" value="STASH" />
+ </component>
+ <component name="IdeDocumentHistory">
+ <option name="changedFiles">
+ <list>
+ <option value="$PROJECT_DIR$/index.js" />
+ <option value="$PROJECT_DIR$/LICENSE" />
+ <option value="$PROJECT_DIR$/lib/util.js" />
+ <option value="$PROJECT_DIR$/examples/examples.js" />
+ <option value="$PROJECT_DIR$/lib/xml.js" />
+ <option value="$PROJECT_DIR$/readme.md" />
+ <option value="$PROJECT_DIR$/test/test.js" />
+ <option value="$PROJECT_DIR$/package.json" />
+ </list>
+ </option>
+ </component>
+ <component name="ProjectFrameBounds">
+ <option name="y" value="32" />
+ <option name="width" value="1440" />
+ <option name="height" value="813" />
+ </component>
+ <component name="ProjectLevelVcsManager" settingsEditedManually="true">
+ <OptionsSetting value="true" id="Add" />
+ <OptionsSetting value="true" id="Remove" />
+ <OptionsSetting value="true" id="Checkout" />
+ <OptionsSetting value="true" id="Update" />
+ <OptionsSetting value="true" id="Status" />
+ <OptionsSetting value="true" id="Edit" />
+ <ConfirmationsSetting value="0" id="Add" />
+ <ConfirmationsSetting value="0" id="Remove" />
+ </component>
+ <component name="ProjectReloadState">
+ <option name="STATE" value="0" />
+ </component>
+ <component name="ProjectView">
+ <navigator currentView="ProjectPane" proportions="" version="1" splitterProportion="0.5">
+ <flattenPackages />
+ <showMembers />
+ <showModules />
+ <showLibraryContents ProjectPane="false" />
+ <hideEmptyPackages />
+ <abbreviatePackageNames />
+ <autoscrollToSource />
+ <autoscrollFromSource />
+ <sortByType />
+ </navigator>
+ <panes>
+ <pane id="ProjectPane">
+ <subPane>
+ <PATH>
+ <PATH_ELEMENT>
+ <option name="myItemId" value="node-xml" />
+ <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
+ </PATH_ELEMENT>
+ <PATH_ELEMENT>
+ <option name="myItemId" value="node-xml" />
+ <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
+ </PATH_ELEMENT>
+ </PATH>
+ <PATH>
+ <PATH_ELEMENT>
+ <option name="myItemId" value="node-xml" />
+ <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
+ </PATH_ELEMENT>
+ <PATH_ELEMENT>
+ <option name="myItemId" value="node-xml" />
+ <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
+ </PATH_ELEMENT>
+ <PATH_ELEMENT>
+ <option name="myItemId" value="test" />
+ <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
+ </PATH_ELEMENT>
+ </PATH>
+ <PATH>
+ <PATH_ELEMENT>
+ <option name="myItemId" value="node-xml" />
+ <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
+ </PATH_ELEMENT>
+ <PATH_ELEMENT>
+ <option name="myItemId" value="node-xml" />
+ <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
+ </PATH_ELEMENT>
+ <PATH_ELEMENT>
+ <option name="myItemId" value="lib" />
+ <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
+ </PATH_ELEMENT>
+ </PATH>
+ <PATH>
+ <PATH_ELEMENT>
+ <option name="myItemId" value="node-xml" />
+ <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
+ </PATH_ELEMENT>
+ <PATH_ELEMENT>
+ <option name="myItemId" value="node-xml" />
+ <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
+ </PATH_ELEMENT>
+ <PATH_ELEMENT>
+ <option name="myItemId" value="examples" />
+ <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
+ </PATH_ELEMENT>
+ </PATH>
+ </subPane>
+ </pane>
+ <pane id="Scope" />
+ <pane id="Favorites" />
+ </panes>
+ </component>
+ <component name="PropertiesComponent">
+ <property name="options.splitter.main.proportions" value="0.3" />
+ <property name="WebServerToolWindowFactoryState" value="false" />
+ <property name="options.lastSelected" value="preferences.pluginManager" />
+ <property name="options.searchVisible" value="true" />
+ <property name="options.splitter.details.proportions" value="0.2" />
+ </component>
+ <component name="RunManager">
+ <list size="0" />
+ </component>
+ <component name="ShelveChangesManager" show_recycled="false" />
+ <component name="SvnConfiguration" maxAnnotateRevisions="500">
+ <option name="USER" value="" />
+ <option name="PASSWORD" value="" />
+ <option name="mySSHConnectionTimeout" value="30000" />
+ <option name="mySSHReadTimeout" value="30000" />
+ <option name="LAST_MERGED_REVISION" />
+ <option name="MERGE_DRY_RUN" value="false" />
+ <option name="MERGE_DIFF_USE_ANCESTRY" value="true" />
+ <option name="UPDATE_LOCK_ON_DEMAND" value="false" />
+ <option name="IGNORE_SPACES_IN_MERGE" value="false" />
+ <option name="DETECT_NESTED_COPIES" value="true" />
+ <option name="CHECK_NESTED_FOR_QUICK_MERGE" value="false" />
+ <option name="IGNORE_SPACES_IN_ANNOTATE" value="true" />
+ <option name="SHOW_MERGE_SOURCES_IN_ANNOTATE" value="true" />
+ <option name="FORCE_UPDATE" value="false" />
+ <configuration useDefault="true">$USER_HOME$/.subversion_IDEA</configuration>
+ <myIsUseDefaultProxy>false</myIsUseDefaultProxy>
+ </component>
+ <component name="TaskManager">
+ <task active="true" id="Default" summary="Default task">
+ <changelist id="ed43610d-e1db-4251-8848-789a0b3aae75" name="Default" comment="" />
+ <created>1302485609291</created>
+ <updated>1302485609291</updated>
+ </task>
+ <servers />
+ </component>
+ <component name="ToolWindowManager">
+ <frame x="2" y="23" width="1440" height="825" extended-state="0" />
+ <editor active="true" />
+ <layout>
+ <window_info id="Changes" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" weight="0.33015007" sideWeight="0.5" order="7" side_tool="false" content_ui="tabs" />
+ <window_info id="TODO" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="6" side_tool="false" content_ui="tabs" />
+ <window_info id="Structure" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.25" sideWeight="0.5" order="1" side_tool="true" content_ui="tabs" />
+ <window_info id="Dependency Viewer" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="7" side_tool="false" content_ui="tabs" />
+ <window_info id="Project" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" weight="0.335452" sideWeight="0.66984993" order="0" side_tool="false" content_ui="tabs" />
+ <window_info id="Debug" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.4" sideWeight="0.5" order="3" side_tool="false" content_ui="tabs" />
+ <window_info id="Run" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="2" side_tool="false" content_ui="tabs" />
+ <window_info id="Version Control" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.32992327" sideWeight="0.5" order="7" side_tool="false" content_ui="tabs" />
+ <window_info id="Cvs" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.25" sideWeight="0.5" order="4" side_tool="false" content_ui="tabs" />
+ <window_info id="Phing Build" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="2" side_tool="false" content_ui="tabs" />
+ <window_info id="Message" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="0" side_tool="false" content_ui="tabs" />
+ <window_info id="Ant Build" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.25" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" />
+ <window_info id="Find" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.32992327" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" />
+ <window_info id="Event Log" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="7" side_tool="true" content_ui="tabs" />
+ <window_info id="Favorites" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="2" side_tool="true" content_ui="tabs" />
+ <window_info id="Messages" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="7" side_tool="false" content_ui="tabs" />
+ <window_info id="Commander" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.4" sideWeight="0.5" order="0" side_tool="false" content_ui="tabs" />
+ <window_info id="Hierarchy" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.25" sideWeight="0.5" order="2" side_tool="false" content_ui="combo" />
+ <window_info id="Inspection" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.4" sideWeight="0.5" order="5" side_tool="false" content_ui="tabs" />
+ </layout>
+ </component>
+ <component name="VcsContentAnnotationSettings">
+ <option name="myLimit" value="2678400000" />
+ </component>
+ <component name="VcsManagerConfiguration">
+ <option name="OFFER_MOVE_TO_ANOTHER_CHANGELIST_ON_PARTIAL_COMMIT" value="true" />
+ <option name="CHECK_CODE_SMELLS_BEFORE_PROJECT_COMMIT" value="true" />
+ <option name="CHECK_NEW_TODO" value="true" />
+ <option name="myTodoPanelSettings">
+ <value>
+ <are-packages-shown value="false" />
+ <are-modules-shown value="false" />
+ <flatten-packages value="false" />
+ <is-autoscroll-to-source value="false" />
+ </value>
+ </option>
+ <option name="PERFORM_UPDATE_IN_BACKGROUND" value="true" />
+ <option name="PERFORM_COMMIT_IN_BACKGROUND" value="true" />
+ <option name="PERFORM_EDIT_IN_BACKGROUND" value="true" />
+ <option name="PERFORM_CHECKOUT_IN_BACKGROUND" value="true" />
+ <option name="PERFORM_ADD_REMOVE_IN_BACKGROUND" value="true" />
+ <option name="PERFORM_ROLLBACK_IN_BACKGROUND" value="false" />
+ <option name="CHECK_LOCALLY_CHANGED_CONFLICTS_IN_BACKGROUND" value="true" />
+ <option name="ENABLE_BACKGROUND_PROCESSES" value="true" />
+ <option name="CHANGED_ON_SERVER_INTERVAL" value="60" />
+ <option name="SHOW_ONLY_CHANGED_IN_SELECTION_DIFF" value="true" />
+ <option name="CHECK_COMMIT_MESSAGE_SPELLING" value="true" />
+ <option name="DEFAULT_PATCH_EXTENSION" value="patch" />
+ <option name="FORCE_NON_EMPTY_COMMENT" value="false" />
+ <option name="LAST_COMMIT_MESSAGE" value="updated version, added Felix Geisendörfer as a contributor." />
+ <option name="MAKE_NEW_CHANGELIST_ACTIVE" value="true" />
+ <option name="OPTIMIZE_IMPORTS_BEFORE_PROJECT_COMMIT" value="false" />
+ <option name="CHECK_FILES_UP_TO_DATE_BEFORE_COMMIT" value="false" />
+ <option name="REFORMAT_BEFORE_PROJECT_COMMIT" value="false" />
+ <option name="REFORMAT_BEFORE_FILE_COMMIT" value="false" />
+ <option name="FILE_HISTORY_DIALOG_COMMENTS_SPLITTER_PROPORTION" value="0.8" />
+ <option name="FILE_HISTORY_DIALOG_SPLITTER_PROPORTION" value="0.5" />
+ <option name="ACTIVE_VCS_NAME" />
+ <option name="UPDATE_GROUP_BY_PACKAGES" value="false" />
+ <option name="UPDATE_GROUP_BY_CHANGELIST" value="false" />
+ <option name="SHOW_FILE_HISTORY_AS_TREE" value="false" />
+ <option name="FILE_HISTORY_SPLITTER_PROPORTION" value="0.6" />
+ <MESSAGE value="created protope for PGE " />
+ <MESSAGE value="fix some typos in the readme." />
+ <MESSAGE value="bump version" />
+ <MESSAGE value="another test to show attributes and content" />
+ <MESSAGE value="better indentation, additional example, bump version" />
+ <MESSAGE value="slight cleanup of new code, bump version" />
+ <MESSAGE value="updated readme" />
+ <MESSAGE value="updated version, added Felix Geisendörfer as a contributor." />
+ </component>
+ <component name="XDebuggerManager">
+ <breakpoint-manager />
+ </component>
+ <component name="editorHistoryManager">
+ <entry file="jar://$APPLICATION_HOME_DIR$/plugins/JavaScriptLanguage/lib/JavascriptLanguage.jar!/com/intellij/lang/javascript/index/predefined/DHTML.js">
+ <provider selected="true" editor-type-id="text-editor">
+ <state line="950" column="0" selection-start="13011" selection-end="13011" vertical-scroll-proportion="0.37403598" />
+ </provider>
+ </entry>
+ <entry file="file://$PROJECT_DIR$/LICENSE">
+ <provider selected="true" editor-type-id="text-editor">
+ <state line="2" column="18" selection-start="0" selection-end="1093" vertical-scroll-proportion="0.041131105" />
+ </provider>
+ </entry>
+ <entry file="file://$PROJECT_DIR$/index.js">
+ <provider selected="true" editor-type-id="text-editor">
+ <state line="0" column="38" selection-start="38" selection-end="38" vertical-scroll-proportion="0.0" />
+ </provider>
+ </entry>
+ <entry file="file://$PROJECT_DIR$/examples/server.js">
+ <provider selected="true" editor-type-id="text-editor">
+ <state line="0" column="0" selection-start="0" selection-end="0" vertical-scroll-proportion="0.0" />
+ </provider>
+ </entry>
+ <entry file="file://$PROJECT_DIR$/readme.md">
+ <provider editor-type-id="MarkdownPreviewEditor">
+ <state />
+ </provider>
+ <provider selected="true" editor-type-id="text-editor">
+ <state line="137" column="2" selection-start="3867" selection-end="3867" vertical-scroll-proportion="0.37380952" />
+ </provider>
+ </entry>
+ <entry file="file://$PROJECT_DIR$/examples/examples.js">
+ <provider selected="true" editor-type-id="text-editor">
+ <state line="54" column="0" selection-start="1122" selection-end="1428" vertical-scroll-proportion="0.0" />
+ </provider>
+ </entry>
+ <entry file="file://$PROJECT_DIR$/lib/xml.js">
+ <provider selected="true" editor-type-id="text-editor">
+ <state line="192" column="8" selection-start="4920" selection-end="4920" vertical-scroll-proportion="0.0" />
+ </provider>
+ </entry>
+ <entry file="file://$PROJECT_DIR$/lib/util.js">
+ <provider selected="true" editor-type-id="text-editor">
+ <state line="17" column="0" selection-start="369" selection-end="369" vertical-scroll-proportion="0.0" />
+ </provider>
+ </entry>
+ <entry file="file://$PROJECT_DIR$/test/test.js">
+ <provider selected="true" editor-type-id="text-editor">
+ <state line="68" column="0" selection-start="3247" selection-end="3247" vertical-scroll-proportion="0.0" />
+ </provider>
+ </entry>
+ <