Size: a a a

JS Liberty [ОЫ]

2020 October 24

МС

Марсель Серебряный... in JS Liberty [ОЫ]
Denis Efremov
Теперь можешь описать что за данные в таблицах и зачем ты их хранишь?
Данные этих байков. Названия,цены,% дохода
источник

МС

Марсель Серебряный... in JS Liberty [ОЫ]
Denis Efremov
Что это?
Подсчёт,вывод
источник

МС

Марсель Серебряный... in JS Liberty [ОЫ]
час,24 часа,30 дней,365 дней
источник

DE

Denis Efremov in JS Liberty [ОЫ]
Смотри какой классный код:
let el = document.getElementById('telegram-passport').parentElement
const code = []
let cls = ''
let comment = ''

while (el.nextElementSibling && el.nextElementSibling.tagName !== 'H3') {
 if (el.nextElementSibling.tagName === 'H4') {
   cls = `${cls}export type ${el.nextElementSibling.innerText}`
 }

 if (el.nextElementSibling.tagName === 'P') {
   comment = comment + `/**${el.nextElementSibling.innerText.replace(/(.{1,72}\s)\s*?/g, '\n * $1')}\n */\n`
   comment = comment.replace(/\n \*\/\n\/\*\*/g, '\n *')
 }

 if (el.nextElementSibling.tagName === 'TABLE') {
   const keys = Array.from(el.nextElementSibling.querySelectorAll('tr:first-child td'))
     .map((td) => td.innerText)
   const values = Array.from(el.nextElementSibling.querySelectorAll('tr:not(:first-child) td'))
     .map((td, idx) => [keys[idx % keys.length].toLowerCase(), td.innerText])
     .reduce((acc, cur, idx) => {
       acc[parseInt(idx / keys.length)] = acc[parseInt(idx / keys.length)] || {}
       acc[parseInt(idx / keys.length)][cur[0]] = cur[1]
       return acc
     }, [])

   cls += '\n{\n\n' + values.map((prop) => `  /**${prop.description.replace(/“|”/g, '`').replace(/(.{1,72}\s)\s*?/g, '\n   * $1')}\n   */\n  ${prop.parameters || prop.field}: ${prop.type.replace(/Array of (\w+)/, '$1[]')};\n`).join('\n')

   code.push(`${comment}${cls}\n}\n`)
   cls = ''
   comment = ''
 }

 el = el.nextElementSibling
}

console.log(code.join('\n'))
источник

DE

Denis Efremov in JS Liberty [ОЫ]
Правда же сразу очевидно и понятно что этот код делает?
источник

DE

Denis Efremov in JS Liberty [ОЫ]
Причем тут названий нет однобуквенных
источник

DE

Denis Efremov in JS Liberty [ОЫ]
Всё названо своими именами
источник

МС

Марсель Серебряный... in JS Liberty [ОЫ]
😄😄
источник

DE

Denis Efremov in JS Liberty [ОЫ]
А на 18 строке каков финт! Заметил?
источник

DE

Denis Efremov in JS Liberty [ОЫ]
Расскажи, что ты понял? Что делает мой код?
источник

МС

Марсель Серебряный... in JS Liberty [ОЫ]
Denis Efremov
А на 18 строке каков финт! Заметил?
Такие финты мне сложно делать ))
источник

DE

Denis Efremov in JS Liberty [ОЫ]
Чувак, я понимаю вот тут
источник

DE

Denis Efremov in JS Liberty [ОЫ]
Denis Efremov
Смотри какой классный код:
let el = document.getElementById('telegram-passport').parentElement
const code = []
let cls = ''
let comment = ''

while (el.nextElementSibling && el.nextElementSibling.tagName !== 'H3') {
 if (el.nextElementSibling.tagName === 'H4') {
   cls = `${cls}export type ${el.nextElementSibling.innerText}`
 }

 if (el.nextElementSibling.tagName === 'P') {
   comment = comment + `/**${el.nextElementSibling.innerText.replace(/(.{1,72}\s)\s*?/g, '\n * $1')}\n */\n`
   comment = comment.replace(/\n \*\/\n\/\*\*/g, '\n *')
 }

 if (el.nextElementSibling.tagName === 'TABLE') {
   const keys = Array.from(el.nextElementSibling.querySelectorAll('tr:first-child td'))
     .map((td) => td.innerText)
   const values = Array.from(el.nextElementSibling.querySelectorAll('tr:not(:first-child) td'))
     .map((td, idx) => [keys[idx % keys.length].toLowerCase(), td.innerText])
     .reduce((acc, cur, idx) => {
       acc[parseInt(idx / keys.length)] = acc[parseInt(idx / keys.length)] || {}
       acc[parseInt(idx / keys.length)][cur[0]] = cur[1]
       return acc
     }, [])

   cls += '\n{\n\n' + values.map((prop) => `  /**${prop.description.replace(/“|”/g, '`').replace(/(.{1,72}\s)\s*?/g, '\n   * $1')}\n   */\n  ${prop.parameters || prop.field}: ${prop.type.replace(/Array of (\w+)/, '$1[]')};\n`).join('\n')

   code.push(`${comment}${cls}\n}\n`)
   cls = ''
   comment = ''
 }

 el = el.nextElementSibling
}

console.log(code.join('\n'))
ровно столько, сколько ты тут
источник

МС

Марсель Серебряный... in JS Liberty [ОЫ]
Denis Efremov
Расскажи, что ты понял? Что делает мой код?
Как я понял, перебирает массив, выводит по условию
источник

DE

Denis Efremov in JS Liberty [ОЫ]
Марсель Серебряный
Как я понял, перебирает массив, выводит по условию
Это почти любой код делает
источник

DE

Denis Efremov in JS Liberty [ОЫ]
Марсель Серебряный
Как я понял, перебирает массив, выводит по условию
Нет ебать, он делает готовую к использованию коллекцию типов на языке TS получая на вход HTML страницу апихи телеги
источник

DE

Denis Efremov in JS Liberty [ОЫ]
источник

DE

Denis Efremov in JS Liberty [ОЫ]
А массивы и условия это всего лишь инструменты
источник

N

Nick in JS Liberty [ОЫ]
Нет ебать, мне нравится
источник

МС

Марсель Серебряный... in JS Liberty [ОЫ]
Ладно)спасибо
источник