-
Notifications
You must be signed in to change notification settings - Fork 174
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
c2032ad
commit 8465fca
Showing
323 changed files
with
228 additions
and
46,825 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,15 +1,104 @@ | ||
### VisualStudioCode template | ||
.vscode/* | ||
# Logs | ||
logs | ||
*.log | ||
npm-debug.log* | ||
yarn-debug.log* | ||
yarn-error.log* | ||
lerna-debug.log* | ||
|
||
### macOS template | ||
# General | ||
.DS_Store | ||
.AppleDouble | ||
.LSOverride | ||
# Diagnostic reports (https://nodejs.org/api/report.html) | ||
report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json | ||
|
||
# Thumbnails | ||
._* | ||
# Runtime data | ||
pids | ||
*.pid | ||
*.seed | ||
*.pid.lock | ||
|
||
.idea | ||
# Directory for instrumented libs generated by jscoverage/JSCover | ||
lib-cov | ||
|
||
node_modules/ | ||
# Coverage directory used by tools like istanbul | ||
coverage | ||
*.lcov | ||
|
||
# nyc test coverage | ||
.nyc_output | ||
|
||
# Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files) | ||
.grunt | ||
|
||
# Bower dependency directory (https://bower.io/) | ||
bower_components | ||
|
||
# node-waf configuration | ||
.lock-wscript | ||
|
||
# Compiled binary addons (https://nodejs.org/api/addons.html) | ||
build/Release | ||
|
||
# Dependency directories | ||
node_modules/ | ||
jspm_packages/ | ||
|
||
# TypeScript v1 declaration files | ||
typings/ | ||
|
||
# TypeScript cache | ||
*.tsbuildinfo | ||
|
||
# Optional npm cache directory | ||
.npm | ||
|
||
# Optional eslint cache | ||
.eslintcache | ||
|
||
# Microbundle cache | ||
.rpt2_cache/ | ||
.rts2_cache_cjs/ | ||
.rts2_cache_es/ | ||
.rts2_cache_umd/ | ||
|
||
# Optional REPL history | ||
.node_repl_history | ||
|
||
# Output of 'npm pack' | ||
*.tgz | ||
|
||
# Yarn Integrity file | ||
.yarn-integrity | ||
|
||
# dotenv environment variables file | ||
.env | ||
.env.test | ||
|
||
# parcel-bundler cache (https://parceljs.org/) | ||
.cache | ||
|
||
# Next.js build output | ||
.next | ||
|
||
# Nuxt.js build / generate output | ||
.nuxt | ||
dist | ||
|
||
# Gatsby files | ||
.cache/ | ||
# Comment in the public line in if your project uses Gatsby and *not* Next.js | ||
# https://nextjs.org/blog/next-9-1#public-directory-support | ||
# public | ||
|
||
# vuepress build output | ||
.vuepress/dist | ||
|
||
# Serverless directories | ||
.serverless/ | ||
|
||
# FuseBox cache | ||
.fusebox/ | ||
|
||
# DynamoDB Local files | ||
.dynamodb/ | ||
|
||
# TernJS port file | ||
.tern-port |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,128 @@ | ||
Задача сделать консольную утилиту для фронтендера. | ||
|
||
Утилита будет брать все файлы с расширением `.js` в текущей директории, находить в них все комментарии с `TODO`. Искать по ним, фильтровать, сортировать. | ||
|
||
Мы уже написали за тебя метод для работы с консолью и методы для чтения из файлов. Осталось написать остальное =) | ||
|
||
Для запуска используй команду `node index.js` При запуске специальный код ждет команды из консоли. | ||
|
||
Сейчас он знает только команду `exit`, остальные нужно дописать тебе. | ||
|
||
1. Получи из всех файлов все однострочные комментарии, начинающиеся с `TODO`. Все комментарии имеют одинаковое начало: два слеша, пробел, слово `TODO` капсом, снова пробел и дальше текст комментария. Например: | ||
|
||
``` | ||
// TODO Переделать это! | ||
``` | ||
|
||
2. Сейчас метод `processCommand` обрабатывает только команду `exit` и завершает процесс в node. Научись обрабатывать еще одну команду из консоли: | ||
|
||
``` | ||
show : показать все todo | ||
``` | ||
|
||
Выводить нужно стандартным выводом в консоль `console.log`. Можешь выводить как угодно твоим эстетическим чувствам: можно выводить просто массив в консоль, можно каждый элемент на новой строчке. | ||
|
||
3. В комментарии может присутствовать восклицательный знак (!), что означает, что это задача с высоким приоритетом. Научись обрабатывать команду из консоли: | ||
|
||
``` | ||
important : показывать только todo, в которых есть восклицательный знак | ||
``` | ||
|
||
4. Текст в todo может быть представлен обычным текстом. | ||
Или же использовать специальную разметку: `// TODO {Имя автора}; {Дата комментария}; {текст комментария}` | ||
После имени и даты обязательно ставится точка с запятой, а вот пробел между ними не обязателен. | ||
Научись обрабатывать еще одну команду из консоли: | ||
|
||
``` | ||
user {username} : показывать только комментарии от указанного пользователя | ||
``` | ||
|
||
Причем имя пользователя должно быть регистронезависимо. | ||
Пример команды: `user veronika` | ||
|
||
5. Научись обрабатывать команды | ||
|
||
``` | ||
sort {importance | user | date} : выводит отсортированные todo | ||
``` | ||
|
||
Если аргумент `importance`, то сначала выводятся комментарии с восклицательными знаками, потом все остальные. | ||
|
||
Чем больше восклицательных знаков, тем выше приоритет и тем выше в списке этот комментарий. | ||
|
||
Если аргумент `user`, то выводятся задачи сгрупированные по пользователям, а в конце безымянные. | ||
|
||
Если аргумент `date`, то выводятся сначала самые новые, потом постарше, потом без дат. | ||
|
||
Примеры команд: `sort importance`, `sort user`, `sort date` | ||
|
||
6. \* Научись обрабатывать команду: | ||
|
||
``` | ||
date {yyyy[-mm[-dd]]}: показывает все комментарии, созданные после переданной даты. | ||
``` | ||
|
||
Датой может быть только год, год с месяцем (через дефис) или год с месяцем и днем. | ||
|
||
Примеры команд: `date 2015`, `date 2016-02`, `date 2018-03-02`. | ||
|
||
7. \* Научись выводить результаты в консоль в виде таблицы: | ||
|
||
- каждая строка отображает один комментарий | ||
- у таблицы должно быть четыре колонки: важность, пользователь, дата, комментарий | ||
- между ячейками должен быть разделитель — вертикальная черта (|). А от вертикальной черты до текста должно быть минимум два пробела отступа. Вот так: | ||
|
||
``` | ||
! | pe | 2018-03-02 | sdkhsdfsdf | ||
| pe | 2018-03-02 | sdkhsdfsdf | ||
``` | ||
|
||
- если в комментарии есть восклицательные знаки, то в первой колонке нужно поставить символ !, в остальных случаях ничего не ставить | ||
- ширина колонок (не считая отступ до вертикальных черт): 1, 10, 10, 50. При необходимости обрезай значение, поставив в конце многоточие (...), но учти, что обрезанный текст вместе с многоточием должен влезть в максимальную ширину колонки. | ||
- вывод комментариев в командах `show`, `important`, `user {username}`, `sort {type}` и `date {date}` должен отображаться в виде этой таблички. | ||
|
||
Для этой задачи тебе может пригодиться метод [padEnd](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/padEnd) | ||
|
||
8. \* Научись подбирать ширину колонкам по самому длинному значению. Вот так: | ||
|
||
``` | ||
корова | семья | ||
я | лук | ||
солнце | нехороший человек | ||
``` | ||
|
||
Ограничения ширины из прошлого пункта (1, 10, 10, 50) считай за максимум возможной ширины. | ||
|
||
9. \* Добавь таблице заголовок из 4 колонок: | ||
|
||
``` | ||
! | user | date | comment | ||
``` | ||
|
||
- ширина клеток заголовка тоже должна подбираться по самому длинному значению в этом столбце | ||
- от остальной таблицы заголовок отделяется строкой со знаками минус (-) нужной длины. Должно получиться как-то так: | ||
|
||
``` | ||
! | user | date | comment | ||
--------------------------------- | ||
| pe | 2012 | dddlsl | ||
| pe | 2012 | dddlsl | ||
``` | ||
|
||
- для создания заголовка переиспользуй уже написанный код для остальных строк таблицы. Если нужно выделить новый метод — делай это. | ||
|
||
- добавь строку из минусов еще и в конце таблицы. | ||
|
||
Для этой задачи может пригодиться метод [repeat](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/repeat) | ||
|
||
10. \* Выводи в таблицах кроме информации из todo еще и имя файла, в котором этот todo найден. Чтобы выделить имя файла из пути можно воспользоваться модулем [path](https://nodejs.org/api/path.html#path_path_basename_path_ext) из Node.js: | ||
|
||
11. \* По условиям задачи все todo имеют вид: | ||
``` | ||
// TODO Переделать это | ||
``` | ||
Но между слешами и todo может не быть пробела, после todo может быть двоеточие и отсутствовать пробел, todo может быть написан в любом регистре и даже в camelCase. | ||
|
||
Чтобы учесть все эти вариации, тебе помогут регулярные выражения. | ||
|
||
Прочитай про метод [match](http://learn.javascript.ru/regexp-methods) у строк и сделай поиск TODO более универсальным. |
File renamed without changes.
File renamed without changes.
File renamed without changes.
Oops, something went wrong.