Skip to content

Commit df2e4f1

Browse files
committed
add simple 'sys' to make using as node library easier
example of such usage in node_example.js
1 parent e8c32be commit df2e4f1

File tree

2 files changed

+72
-0
lines changed

2 files changed

+72
-0
lines changed

lib/citeprocnode.js

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,9 +14,51 @@ var fs = require('fs');
1414
var log = require('npmlog');
1515
var _ = require('underscore')._;
1616
var Promise = require('bluebird');
17+
let jsonWalker = require("./json_walker.js");
1718

1819
//var sampleCites = require('../test/loadcitesnode.js');
1920

21+
exports.simpleSys = function(){
22+
this.items = {};
23+
this.locales = {};
24+
};
25+
26+
exports.simpleSys.prototype.retrieveLocale = function(locale){
27+
return this.locales[locale];
28+
};
29+
30+
exports.simpleSys.prototype.retrieveItem = function(itemID){
31+
return this.items[itemID];
32+
};
33+
34+
exports.simpleSys.prototype.addLocale = function(localeCode, localeString){
35+
let localeObject;
36+
try {
37+
localeObject = JSON.parse(localeString);
38+
} catch(e) {
39+
let localeDoc = jsonWalker.MakeDoc(localeString);
40+
localeObject = jsonWalker.JsonWalker.walkLocaleToObj(localeDoc);
41+
localeDoc.defaultView.close();
42+
}
43+
this.locales[localeCode] = localeObject;
44+
};
45+
46+
exports.simpleSys.prototype.newEngine = function(styleString, locale, forceLang){
47+
let sys = this;
48+
let styleObject;
49+
try {
50+
styleObject = JSON.parse(styleString);
51+
} catch(e) {
52+
let styleDoc = jsonWalker.MakeDoc(styleString);
53+
styleObject = jsonWalker.JsonWalker.walkStyleToObj(styleDoc).obj;
54+
styleDoc.defaultView.close();
55+
}
56+
57+
let CSL = require("./citeproc.js").CSL;
58+
let cslEngine = new CSL.Engine(sys, styleObject, locale);
59+
return cslEngine;
60+
};
61+
2062
exports.prepareData = function(postObj, citations){
2163
log.verbose("citeprocnode.prepareData");
2264
// Get items object for this request from post body

node_example.js

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
var fs = require('fs');
2+
var citeprocnode = require("./lib/citeprocnode.js");
3+
4+
var sys = new citeprocnode.simpleSys();
5+
var enUS = fs.readFileSync('./csl-locales/locales-en-US.xml', 'utf8');
6+
sys.addLocale('en-US', enUS);
7+
var styleString = fs.readFileSync('./csl/ieee.csl', 'utf8');
8+
var engine = sys.newEngine(styleString, 'en-US', null);
9+
10+
var items = {"14058/RN9M5BF3":{"accessed":{"month":"9","year":"2010","day":"10"},"id":"14058/RN9M5BF3","author":[{"given":"Adel","family":"Hendaoui"},{"given":"Moez","family":"Limayem"},{"given":"Craig W.","family":"Thompson"}],"title":"3D Social Virtual Worlds: <i>Research Issues and Challenges</i>","type":"article-journal","versionNumber":6816},"14058/NSBERGDK":{"accessed":{"month":"9","year":"2010","day":"10"},"issued":{"month":"6","year":"2009"},"event-place":"Istanbul","type":"paper-conference","DOI":"10.1109/DEST.2009.5276761","page-first":"151","id":"14058/NSBERGDK","title-short":"3D virtual worlds as collaborative communities enriching human endeavours","publisher-place":"Istanbul","author":[{"given":"C.","family":"Dreher"},{"given":"T.","family":"Reiners"},{"given":"N.","family":"Dreher"},{"given":"H.","family":"Dreher"}],"title":"3D virtual worlds as collaborative communities enriching human endeavours: Innovative applications in e-Learning","shortTitle":"3D virtual worlds as collaborative communities enriching human endeavours","page":"151-156","event":"2009 3rd IEEE International Conference on Digital Ecosystems and Technologies (DEST)","URL":"http://ieeexplore.ieee.org/lpdocs/epic03/wrapper.htm?arnumber=5276761","versionNumber":1}};
11+
12+
sys.items = items;
13+
14+
var clusters = [
15+
{
16+
citationItems: ["14058/RN9M5BF3"],
17+
properties: {
18+
note:0
19+
}
20+
},
21+
{
22+
citationItems: ["14058/NSBERGDK"],
23+
properties: {
24+
note:0
25+
}
26+
},
27+
];
28+
29+
engine.updateItems(Object.keys(items));
30+
var bib = engine.makeBibliography();

0 commit comments

Comments
 (0)