54 lines
2.0 KiB
TypeScript
54 lines
2.0 KiB
TypeScript
import fs from 'fs'
|
|
import path from 'path'
|
|
|
|
const snapshotPath = path.join(process.cwd(), 'scripts', 'content-snapshot.json')
|
|
const snapshot = JSON.parse(fs.readFileSync(snapshotPath, 'utf-8'))
|
|
|
|
const firstPersonRegexPL = /(^|[\s.,?!:;])(zapewniam|przeprowadzę|przeanalizuję|pomogę|pomagam|odpowiem|mnie|ze mną|moim|mój|zajmuję|działam|przygotowuję|przesyłam|wyliczam|zajmę)([\s.,?!:;]|$)/i
|
|
const firstPersonRegexDE = /(^|[\s.,?!:;])(ich|mich|mir|mein|meine|meinen|helfe|kümmere|begleite|anbiete)([\s.,?!:;]|$)/i
|
|
|
|
const matches: any[] = []
|
|
|
|
function checkObject(obj: any, contextInfo: any) {
|
|
if (Array.isArray(obj)) {
|
|
obj.forEach((item, index) => checkObject(item, { ...contextInfo, index }))
|
|
} else if (obj !== null && typeof obj === 'object') {
|
|
// Pomiń blok Bio
|
|
if (obj.blockType === 'bio') {
|
|
return
|
|
}
|
|
|
|
for (const [key, value] of Object.entries(obj)) {
|
|
if (typeof value === 'string') {
|
|
const isMatchPL = contextInfo.locale === 'pl' && firstPersonRegexPL.test(value)
|
|
const isMatchDE = contextInfo.locale === 'de' && firstPersonRegexDE.test(value)
|
|
|
|
if (isMatchPL || isMatchDE) {
|
|
matches.push({
|
|
pageSlug: contextInfo.pageSlug,
|
|
blockType: obj.blockType || 'unknown',
|
|
field: key,
|
|
locale: contextInfo.locale,
|
|
text: value
|
|
})
|
|
}
|
|
} else {
|
|
checkObject(value, { ...contextInfo, field: key })
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
for (const page of snapshot.pages) {
|
|
if (page.pl) checkObject(page.pl.layout, { pageSlug: page.pl.slug || 'home', locale: 'pl' })
|
|
if (page.de) checkObject(page.de.layout, { pageSlug: page.de.slug || 'home', locale: 'de' })
|
|
}
|
|
|
|
for (const [slug, data] of Object.entries(snapshot.globals)) {
|
|
const typedData = data as any;
|
|
if (typedData.pl) checkObject(typedData.pl, { pageSlug: `global:${slug}`, locale: 'pl' })
|
|
if (typedData.de) checkObject(typedData.de, { pageSlug: `global:${slug}`, locale: 'de' })
|
|
}
|
|
|
|
console.log(JSON.stringify(matches, null, 2))
|