<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>MKWS demo: Reference Universe widget</title>
<link rel="stylesheet" type="text/css" href="mkws-widget-credo.css" />
+ <link rel="stylesheet" type="text/css" href="//x.mkws.indexdata.com/mkws.css" />
<script type="text/javascript">
var mkws_config = { service_proxy_auth: "//mkws.indexdata.com/service-proxy-credoauth" };
</script>
<script type="text/javascript" src="mkws-widget-credo.js"></script>
</head>
<body>
- <div class='mkwsCredo' autosearch='!param!q'>result will appear here</div>
+ <div class='mkwsReference' sentences='2' autosearch='!param!q'>result will appear here</div>
</body>
</html>
// This is intended to handle paragraphs from Wikipedia, hence the
// rather hacky code to remove numbered references.
//
-Handlebars.registerHelper('mkws-paragraphs', function(obj, count) {
+Handlebars.registerHelper('mkws-paragraphs', function(obj, nPara, nSent) {
var acc = [];
// For some reason, Handlebars provides the value
// {"hash":{},"data":{}} for parameters that are not provided. So we
// have to be prepared for actual numbers, explicitly undefined
// values and this dumb magic value.
- if (count === undefined || count.hasOwnProperty('hash') || count == 0 || count > obj.length) {
- count = obj.length;
+ if (nPara === undefined || nPara.hasOwnProperty('hash') || nPara == 0 || nPara > obj.length) {
+ nPara = obj.length;
+ }
+ if (nSent === undefined || nSent.hasOwnProperty('hash') || nSent == 0 || nSent > obj.length) {
+ nSent = Infinity;
}
- for (var i = 0; i < count; i++) {
- acc.push('<p>', obj[i].replace(/\[[0-9,]+\]/g, ''), '</p>');
+ for (var i = 0; i < nPara; i++) {
+ // Remove numbered references such as "[1,3,4]" from text
+ var text = obj[i].replace(/\[[0-9,]+\]/g, '');
+ // Next line from http://stackoverflow.com/questions/18914629/split-string-into-sentences-in-javascript
+ var sentences = text.replace(/([.?!])\s*(?=[A-Z])/g, "$1|").split("|");
+ if (sentences.length > nSent)
+ sentences.length = nSent;
+
+ acc.push('<p>', sentences.join(' '), '</p>');
+ nSent -= sentences.length;
+ if (nSent == 0)
+ break;
}
+
return acc.join('');
});
mkws.promotionFunction('Record').call(this);
if (!this.config.target) this.config.target = 'wikimedia_wikipedia_single_result';
if (!this.config.template) this.config.template = 'Reference';
+ var nPara = this.config.paragraphs || 0;
+ var nSent = this.config.sentences || 0;
this.team.registerTemplate('Reference', '\
<img src="{{md-thumburl}}" alt="{{md-title}}">\
{{#if md-title-responsibility}}\
<i>{{md-title-responsibility}}</i>\
{{/if}}\
- {{{mkws-paragraphs md-description ' + this.config.paragraphs + '}}}\
+ {{{mkws-paragraphs md-description ' + nPara + ' ' + nSent + '}}}\
<p class="mkwsCredit">Wikipedia</p>\
');
});