Обновление от 12 апреля 2012 г.: В CoffeeScript добавлен Pull-запрос на добавление отчетов об ошибках с сопоставлением строк
Есть вероятность, что при написании кода на CoffeeScript вы часто сталкиваетесь с исключением JavaScript, сообщающим о проблеме, возникшей в определенной строке. Проблема в том, что номер строки, о котором идет речь, указан в одном из сгенерированных JavaScript-файлов, а не в вашем номере строки в CoffeeScript. Хуже того, если вы создадите свой JavaScript прозрачно, у вас не будет ни одного файла JavaScript для просмотра, и весь процесс поиска места возникновения этой ошибки будет еще более неприятным.
Что ж, похоже, что будущая версия JavaScript может прийти на помощь, но не раньше, чем через несколько месяцев. А пока я расскажу немного интересного о написании небольшого скрипта на Bash, который может сэкономить вам немного времени.
Мы назовем наш скрипт coffeep, улучшенной версией coffee -p, и его назначение — выводить на консоль JavaScript-код, переведенный из вашего файла coffee, с пронумерованной строкой. Чтобы сделать его еще более полезным, скрипт может принимать один или два дополнительных аргумента после пути к файлу coffee, чтобы ограничить печатаемые строки только тем разделом, который вы хотите отладить.Например, coffeep myfile.coffee выведет сгенерированный JavaScript, как это сделал бы coffee -p myfile.coffee, но с префиксом каждой строки в виде номера строки. Вызов coffeep myfile.coffee 20 приведет к печати строки 20, а также 5 предыдущих и 5 последующих строк. При вызове coffeep myfile.coffee 20 30 будет выведена строка с 20 по 30.
Это, конечно, не сложная задача, но она должна стать частью вашего швейцарского армейского ножа для кофе. Используя cat -n, который, учитывая некоторый контент, передаваемый через стандартный идентификатор, префиксирует каждую строку с номером строки, начинающимся с 1, наша первая версия coffeep выглядит следующим образом:#!/bin/bash coffee -p $1/cat -n Если вы не знакомы со сценариями bash,, $1 обозначает первый аргумент, передаваемый в coffeep, которым в нашем случае является наш файл coffee.
Теперь мы добавим два возможных варианта использования. Если после path указан один аргумент, то ожидается, что это будет номер строки JavaScript, которую вы хотите отладить, и мы выведем предыдущие и последующие 5 строк. Если два аргумента приводятся после Пути, есть планируется первая строка и последняя строка на выходе.
#!/Бен/Баш, если [ $# -EQ-это 1 ] затем кофе -П $1 | кота -Н Элиф [ $# -EQ-это 2 ]; затем head_count=$(($2+5)) tail_count=11 кофе -П $1 | кота -Н | руководитель -$head_count | хвост -$tail_count с elif [ $# -EQ-это 3 ]; затем head_count=$(($2+$3)) tail_count=$3 кофе -П $1 | кота -Н | руководитель -$head_count | хвост -$tail_count Fi интернет
с немного арифметики, мы используем голову и хвост, чтобы сначала ограничить вывод head_count первой линии с головой, и, наконец, ограничить вывод tail_count последние строчки с хвостиком.
наконец, для удобства, просто скопируйте/вставьте следующий код в терминале, и он должен создать исполняемый файл с именем “coffeep” в “/usr/местные/Бен” (доступной в вашем $Path, убедитесь, что разрешение на изменение этого каталога):
кошки > /usr/местные/Бен/coffeep &ЛТ;&ЛТ;делим #!/Бен/Баш, если [ $# -EQ-это 1 ] затем кофе -П $1 | кота -Н Элиф [ $# -EQ-это 2 ]; затем head_count=$(($2+5)) tail_count=11 кофе -П $1 | кота -Н | руководитель -$head_count | хвост -$tail_count с elif [ $# -EQ-это 3 ]; затем head_count=$(($2+$3)) tail_count=3$кофе -Р 1 $ | Кошка -Н | руководитель -$head_count | хвост -$tail_count интернет делим команду chmod +х /usr/местные/Бен/coffeep