Skip to content

Commit 682fa2a

Browse files
igsekorvitya-ne
andauthored
Выносит функцию в отдельный модуль (#1281)
* Выносит функцию в отдельный модуль * Решает с подключением модуля * Поднимает версию web-features до 1.0.0 (#1279) Исправляет импорт из модуля `web-features`. FYI: Начиная с версии 0.10 требуется использовать именованый импорт. см: https://www.npmjs.com/package/web-features/v/0.10.0 https://github.com/web-platform-dx/web-features/releases/tag/v0.10.0 * Подстраивается под особенность слонёнка Дампо не собираться с мыслями в 11ty --------- Co-authored-by: Vitya <9317613+vitya-ne@users.noreply.github.com>
1 parent 5023979 commit 682fa2a

File tree

4 files changed

+26
-43
lines changed

4 files changed

+26
-43
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
module.exports = function transformArticleData(article) {
2+
const section = article.filePathStem.split('/')[1]
3+
4+
return {
5+
title: article.data.title,
6+
cover: article.data.cover ?? {},
7+
get imageLink() {
8+
return `${this.cover.mobile}`
9+
},
10+
description: article.data.description,
11+
link: `/${section}/${article.fileSlug}/`,
12+
linkTitle: article.data.title.replace(/`/g, ''),
13+
section,
14+
}
15+
}

src/views/doc-json.11tydata.js

+5-8
Original file line numberDiff line numberDiff line change
@@ -13,11 +13,8 @@ function hasTag(tags, tag) {
1313
return (tags || []).includes(tag)
1414
}
1515

16-
// TODO: вынести эту функцию в отдельный файл и переиспользовать в `views.11tydata.js`
17-
function transformArticleData(article) {
18-
const section = article.filePathStem.split('/')[1]
19-
20-
return `/${section}/${article.fileSlug}/`
16+
function getArticlePath(article) {
17+
return `/${article.filePathStem.split('/')[1]}/${article.fileSlug}/`
2118
}
2219

2320
function getRandomString(length) {
@@ -125,7 +122,7 @@ module.exports = {
125122

126123
const articleId = linkedArticles?.[docId]?.next?.id
127124
const articleData = docsById[articleId]
128-
return articleData && transformArticleData(articleData)
125+
return articleData && getArticlePath(articleData)
129126
},
130127

131128
previousArticle: function (data) {
@@ -135,7 +132,7 @@ module.exports = {
135132

136133
const articleId = linkedArticles?.[docId]?.previous?.id
137134
const articleData = docsById[articleId]
138-
return articleData && transformArticleData(articleData)
135+
return articleData && getArticlePath(articleData)
139136
},
140137

141138
relatedArticles: function (data) {
@@ -147,7 +144,7 @@ module.exports = {
147144
?.slice(0, 3)
148145
?.map((articleId) => docsById[articleId])
149146
?.filter(Boolean)
150-
?.map((articleData) => transformArticleData(articleData))
147+
?.map((articleData) => getArticlePath(articleData))
151148
},
152149

153150
linksAndImages: async function (data) {

src/views/doc.11tydata.js

+4-20
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ const fs = require('fs')
22
const { baseUrl } = require('../../config/constants')
33
const { titleFormatter } = require('../libs/title-formatter/title-formatter')
44
const roleCollection = require('../libs/role-constructor/collection.json')
5+
const transformArticleData = require('../scripts/modules/transform-article-data.js')
56

67
function getPersons(personGetter) {
78
return function (data) {
@@ -24,7 +25,7 @@ function getPopulatedPersons(personKey) {
2425
data: {
2526
name: personId,
2627
},
27-
}
28+
},
2829
)
2930
}
3031
}
@@ -40,23 +41,6 @@ function assignGreaterValue(map, item, key) {
4041
return map
4142
}
4243

43-
// TODO: вынести эту функцию в отдельный файл и переиспользовать в `views.11tydata.js`
44-
function transformArticleData(article) {
45-
const section = article.filePathStem.split('/')[1]
46-
47-
return {
48-
title: article.data.title,
49-
cover: article.data.cover,
50-
get imageLink() {
51-
return `${this.cover.mobile}`
52-
},
53-
description: article.data.description,
54-
link: `/${section}/${article.fileSlug}/`,
55-
linkTitle: article.data.title.replace(/`/g, ''),
56-
section,
57-
}
58-
}
59-
6044
const asyncFilter = async (arr, predicate) => {
6145
const results = await Promise.all(arr.map(predicate))
6246
return arr.filter((_v, index) => results[index])
@@ -289,7 +273,7 @@ module.exports = {
289273
}
290274
return map
291275
},
292-
{ chrome: 0, edge: 0, firefox: 0, safari: 0 }
276+
{ chrome: 0, edge: 0, firefox: 0, safari: 0 },
293277
)
294278
const supported = doc.data.baseline
295279
.filter((g) => webFeatures[g.group].is_baseline)
@@ -302,7 +286,7 @@ module.exports = {
302286
}
303287
return map
304288
},
305-
{ chrome: true, edge: true, firefox: true, safari: true }
289+
{ chrome: true, edge: true, firefox: true, safari: true },
306290
)
307291
const flagged = { chrome: false, edge: false, firefox: false, safari: false }
308292
const preview = { chrome: false, edge: false, firefox: false, safari: false }

src/views/views.11tydata.js

+2-15
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ const categoryColors = require('../../config/category-colors')
66
const { titleFormatter } = require('../libs/title-formatter/title-formatter')
77
const { setPath } = require('../libs/collection-helpers/set-path')
88
const { isProdEnv } = require('../../config/env.js')
9+
const transformArticleData = require('../scripts/modules/transform-article-data.js')
910

1011
function isExternalURL(url) {
1112
return url.startsWith('http://') || url.startsWith('https://') || url.startsWith('//')
@@ -96,21 +97,7 @@ module.exports = {
9697
.slice(0, featuredArticlesMaxCount)
9798
.map((id) => docsById[id])
9899
.filter(Boolean)
99-
.map((article) => {
100-
const section = article.filePathStem.split('/')[1]
101-
102-
return {
103-
title: article?.data?.title,
104-
cover: article?.data?.cover,
105-
get imageLink() {
106-
return `${this.cover?.mobile}`
107-
},
108-
description: article?.data?.description,
109-
link: `/${section}/${article?.fileSlug}/`,
110-
linkTitle: article?.data?.title.replace(/`/g, ''),
111-
section,
112-
}
113-
})
100+
.map((article) => transformArticleData(article))
114101
},
115102

116103
themeColor: function (data) {

0 commit comments

Comments
 (0)