Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <!DOCTYPE html>
- <html>
- <head>
- <meta charset="utf-8">
- <meta name="viewport" content="width=device-width">
- <title>JS Bin</title>
- </head>
- <body>
- <table>
- <tr>
- <td>
- <textarea id="in" cols=50 rows=30>- Вход/регистрация
- - [COMPLETE] Авторизация
- - Регистрация
- - Восстановление пароля #отложено
- - Подтверждение email #отложено
- - Выход
- - Общие действия
- - Выбор элементов списков
- - Прогрузка элементов при выборе всех
- - Работа фильтров (в т.ч. поиска) и сортировки
- - Работа с тулбаром
- - На каждой странице проверять
- - Заголовок окна
- - Хлебную крошку
- - Тип компонента-страницы (тег)
- - URL
- - Раздел групп
- - Переключение режима видимости
- - Создание групп
- - Удаление групп
- - Переименование групп
- - Проверка на страницах проксей, аккаунтов, задач
- - Удаление элемента из группы
- - Дашборд
- - Вызов помощи (индексной страницы)
- - Меню скачивания агента
- - Переключение режима бокового меню
- - Версия и чейнжлог
- - Покупка лицензии
- - Настройки
- - Вызов помощи по настройкам
- - Установка часового пояса
- - Установка режима антибана
- - Настройки антикапчи (в т.ч. проверка баланса)
- - Редактирование списка UA
- - Просмотр списка лицензий
- - Привязывание Dropbox #отложено
- - Прокси
- - Вызов помощи по прокси (список/добавление)
- - Добавление прокси вручную
- - Импорт проксей
- - В том числе с ошибками
- - Список проксей (группы, фильтры, сортировки)
- - Действия
- - Запуск проверки
- - Остановка/возобновление активности
- - Удаление прокси
- - Экспорт в CSV
- - Страница прокси
- - Редактирование
- - Дополнительная информация
- - Список аккаунтов
- - Журнал
- - Аккаунты
- - Вызов помощи по аккаунтам (список/добавление)
- - Добавление аккаунтов вручную
- - Импорт аккаунтов
- - В том числе в формате spotlight
- - В том числе с ошибками
- - Список аккаунтов (группы, фильтры, сортировки)
- - Действия
- - Авторизация
- - Статистика
- - Удаление
- - Открытие стены ВК
- - Остановка/возобновление активности
- - Распределение UA
- - Распределение прокси автоматически
- - Распределение прокси вручную
- - Экспорт в CSV
- - Редактирование
- - Открытие стены
- - Открытие статистики
- - Смена пароля аккаунта
- - Смена UA
- - Смена прокси
- - Просмотр журнала событий
- - Списки
- - Вызов справки по работе со списками
- - Список списков
- - Импорт списка
- - Импорт списков из Spotlight
- - Задачи
- - Вызов помощи по задачам (проверить также разную помощь в разных типах задач)
- - Создание и редактирование
- - Параметры задачи
- - Масслайк
- - Пригласить в друзья
- - Пригласить в сообщество
- - Пригласить из группы на мероприятие
- - Заполнение аккаунта
- - Очистка аккаунта
- - Поставить лайк
- - Рассылка сообщений
- - Обслуживание аккаунта
- - Список аккаунтов на задаче
- - Расписание
- - Журнал
- - Список задач (группы, фильтры, сортировки)
- - Действия
- - Запуск
- - Остановка
- - Статистика
- - Удаление
- - Дублирование
- - Журнал
- - Вызов помощи по журналу
- - Статистика команд
- - Вызов помощи по статистике команд
- - Статистика по капчам
- - Вызов помощи по статистики капчей
- - Мультичат #отложено
- - Вызов помощи
- - Аккаунты
- - Добавление аккаунта в чат
- - Удаление аккаунта в чат
- - Поиск аккаунтов в чате
- - Диалоги
- - Фильтрация диалогов
- - Начать новый диалог
- - Открыть диалог
- - Написать сообщение
- - Получить сообщение
- - В том числе на другой странице (уведомление)
- </textarea>
- </td>
- <td>
- <button id="convert">></button>
- </td>
- <td>
- <textarea id="out" cols=50 rows=30></textarea>
- </td>
- </tr>
- </table>
- <script id="jsbin-javascript">
- 'use strict';
- var _slicedToArray = (function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i['return']) _i['return'](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError('Invalid attempt to destructure non-iterable instance'); } }; })();
- function parseTree(list) {
- var root = {
- title: 'Корень',
- parent: null,
- children: [],
- level: -1
- };
- list.split('\n').map(function (r) {
- return r.match(/^(\s*)- (.+?)$/);
- }).filter(function (r) {
- return r;
- }).reduce(function (acc, row) {
- var _row = _slicedToArray(row, 3);
- var _ = _row[0];
- var indent = _row[1];
- var title = _row[2];
- var level = indent.length / 2;
- var item = { title: title, level: level, children: [] };
- // Next is child
- if (item.level > acc.level) {
- item.parent = acc;
- }
- // Next is uncle
- if (item.level < acc.level) {
- var diff = acc.level - level;
- switch (diff) {
- case 1:
- item.parent = acc.parent.parent;
- break;
- case 2:
- item.parent = acc.parent.parent.parent;
- break;
- case 3:
- item.parent = acc.parent.parent.parent.parent;
- break;
- }
- }
- // Next is sibling
- if (level === acc.level) {
- item.parent = acc.parent;
- }
- item.parent.children.push(item);
- return item;
- }, root);
- return root;
- }
- function toCode(branch) {
- var result = '';
- var indent = '';
- for (var i = -1; i < branch.level; i += 1) {
- indent += ' ';
- }
- if (branch.children.length > 0) {
- var content = branch.children.map(function (c) {
- return toCode(c);
- });
- result += indent + 'xdescribe(\'' + branch.title + '\', () => {\n' + content.join('\n') + '\n' + indent + '});\n';
- } else {
- result += indent + 'xit(\'' + branch.title + '\', () => {\n' + indent + ' // TODO\n' + indent + '});\n';
- }
- return result;
- };
- function convert(list) {
- var tree = parseTree(list);
- return toCode(tree);
- }
- console.clear();
- var gbi = function gbi(id) {
- return document.querySelector('#' + id);
- };
- gbi('convert').addEventListener('click', function () {
- var list = gbi('in').value;
- gbi('out').value = convert(list);
- });
- </script>
- <script id="jsbin-source-javascript" type="text/javascript">function parseTree(list) {
- const root = {
- title: 'Корень',
- parent: null,
- children: [],
- level: -1
- };
- list.split('\n')
- .map(r => r.match(/^(\s*)- (.+?)$/))
- .filter(r => r)
- .reduce((acc, row) => {
- const [_, indent, title] = row;
- const level = indent.length/2;
- const item = {title,level,children:[]};
- // Next is child
- if (item.level > acc.level) {
- item.parent = acc;
- }
- // Next is uncle
- if (item.level < acc.level) {
- const diff = acc.level - level;
- switch(diff){
- case 1:
- item.parent = acc.parent.parent;
- break;
- case 2:
- item.parent = acc.parent.parent.parent;
- break;
- case 3:
- item.parent = acc.parent.parent.parent.parent;
- break;
- }
- }
- // Next is sibling
- if (level === acc.level){
- item.parent = acc.parent;
- }
- item.parent.children.push(item);
- return item;
- }, root);
- return root;
- }
- function toCode(branch) {
- let result = '';
- let indent = '';
- for (let i = -1; i < branch.level; i+=1){
- indent+=' ';
- }
- if (branch.children.length > 0) {
- const content = branch.children.map(c => toCode(c))
- result += `${indent}xdescribe('${branch.title}', () => {
- ${content.join('\n')}
- ${indent}});\n`;
- } else {
- result += `${indent}xit('${branch.title}', () => {
- ${indent} // TODO
- ${indent}});\n`;
- }
- return result;
- };
- function convert(list) {
- const tree = parseTree(list);
- return toCode(tree);
- }
- console.clear();
- const gbi = id => document.querySelector(`#${id}`);
- gbi('convert').addEventListener('click', () =>{
- const list = gbi('in').value;
- gbi('out').value = convert(list);
- });
- </script></body>
- </html>
Add Comment
Please, Sign In to add comment