diff --git a/lib/index.js b/lib/index.js
index 6838903..c178e46 100755
--- a/lib/index.js
+++ b/lib/index.js
@@ -17,22 +17,27 @@ function ifTruePush(condition, array, data) {
/**
* @param related
* @param itemValues
+ * @param relatedfinity
*/
-function addRelated(related, itemValues) {
- ifTruePush(related, itemValues, {
- 'yandex:related': related.map(
- function (rel) {
- return {
- link: [{
- _attr: {
- 'url': rel.link,
- 'img': rel.image_url
- }
- }, rel.text]
- };
- }
- )
+function addRelated(related, itemValues, relatedfinity) {
+ let relatedResult = related.map(function (rel) {
+ return {
+ link: [{
+ _attr: {
+ 'url': rel.link,
+ 'img': rel.image_url
+ }
+ }, rel.text]
+ };
});
+
+ if (relatedfinity) {
+ relatedResult.push({
+ _attr: {'type': 'infinity'}
+ });
+ }
+
+ ifTruePush(related, itemValues, {'yandex:related': relatedResult});
}
/**
@@ -66,7 +71,7 @@ function items(items, channel) {
item_values.push({'turbo:content': {_cdata: fullContent}});
if (typeof item.related !== 'undefined') {
- addRelated(item.related, item_values);
+ addRelated(item.related, item_values, item.relatedfinity);
}
channel.push({item: item_values});
@@ -128,7 +133,8 @@ function YTurbo(options, items) {
date: data.date || data.pubDate,
content: data.content,
menu: data.menu,
- related: data.related
+ related: data.related,
+ relatedfinity: data.relatedfinity || false,
};
this.items.push(item);
diff --git a/readme.md b/readme.md
index d285f7b..dc0a4ee 100644
--- a/readme.md
+++ b/readme.md
@@ -45,10 +45,18 @@ feed.item(itemOptions);
* `author` _optional_ **string** Автор статьи, размещенной на странице.
* `date` **string** Время публикации контента на сайте источника.
* `content` **string** Содержимое страницы
- * `related` _optional_ **object** Аффилированные ссылки `yandex:related` в конце статьи.
-
+ * `related` _optional_ **array** Аффилированные ссылки `yandex:related` в конце статьи.
+ * `relatedfinity` _optional_ **bool** Непрерывная лента статей
+
*Будет добавлено в новых версиях turbo:source, turbo:topic, menu, pubDate как алиас date*
+###### related array
+ related должен содержать массив объектов со следующими опциями:
+
+ * `link` **string** ссылка на статью'
+ * `image_url` **string** ссылка на изображение к статье
+ * `text` **string** текст ссылки
+
##### Получение XML
```js
diff --git a/test/expectedOutput/relatedItem.xml b/test/expectedOutput/relatedItem.xml
index 0b266e7..e083e44 100644
--- a/test/expectedOutput/relatedItem.xml
+++ b/test/expectedOutput/relatedItem.xml
@@ -1 +1 @@
- hello hello hello
item title

item title

item title
hello
', related: [{ link: 'http://example.com/related/post1', @@ -60,3 +61,34 @@ test('related item', function(t) { t.equal(feed.xml(), expectedOutput.relatedItem.trim()); }); + +test('related item', function(t) { + t.plan(1); + let feed = new YTurbo({ + title: 'title', + description: 'description', + link: 'http://example.com/rss.xml', + site_url: 'http://example.com' + }); + + feed.item({ + title: 'item title', + image_url: 'http://example.com/example.png', + url: 'http://example.com/article4?this&that', + author: 'LightAir', + date: 'May 27, 2018 00:00 AM', + content: 'hello
', + relatedfinity: true, + related: [{ + link: 'http://example.com/related/post1', + image_url: 'http://example.com/i/img1.jpg', + text: 'related link text 1' + }, { + link: 'http://example.com/related/post2', + image_url: 'http://example.com/i/img2.jpg', + text: 'related link text 2' + }] + }); + + t.equal(feed.xml(), expectedOutput.relatedItemInfinity.trim()); +}); \ No newline at end of file