file-template-loader's Issues
Не получается использовать рутовый пакет вместо PACKAGE_NAME
Сейчас если использовать PACKAGE_NAME в шаблоне, то при создании группы подставляется пакет с названием директории, и достучаться до PACKAGE_NAME оригинального, без этой директории, невозможно. А это бывает полезно для R-файлов. Если попытаться создать такую переменную в миксинах, то возникает циклическая зависимость.
Адекватные ошибки
Сейчас в случае каки-то ошибок при обработке файлов шаблонов выбрасывается исключение и из него ничего не понятно. Нужно реализовать нормальную обработку исключений, с нормальными текстами.
Большая вложенность в меню
При использовании плагина добавляется новый пункт в контекстном меню, но там довольно большая вложенность, из-за этого приходится протыкивать кучу пунктов.
Может, можно сделать так, чтобы это конфигурировалось как-то?
Например, пускай шаблоны показываются только для текущего рабочего проекта, даже если их несколько, тогда одну вложенность уже можно убрать. И т.д.
Неочевидна разница между FILE_NAME и SIMPLE_NAME
entries в группах должны быть опциональные
Не хватает описаний в GUI для параметров
Было бы круто добавить в GUI описание для используемых параметров.
Например, можно было бы сделать отдельный файл descriptions.json,
В котором указывать переменные и их описание.
Описание будет добавляться, только если эта переменная есть в этом файле,
наличие этого файла не обязательно.
Настройка CI для автоматической публикации плагина
Нужен модификатор, который форматирует через слеши
SLASH_CASE?
Нужно переименовать модификатор PACKAGE_CASE
Сейчас непонятно что делает этот модификатор. По факту он форматирует строку через точки - надо как-то исходя из этого его и назвать.
Добавить gitignore
Шаблоны повторяются в меню после каждого релоада
Проблема с файлами без названия (например, .gitignore)
Например, нужно создать файл .gitignore.
Создаю шаблон GitIgnore.txt.ft, а в templates прописываю:
{
"template": "GitIgnore.txt",
"fileName": ".gitignore"
}
В итоге получаю файл .gitignore.txt.
Хотя он должен быть без дополнительного расширения.
Если шаблон назвать .GitIgnore.ft, то создастся .gitignore.Gitignore.
Более умное имя файла для controller при автогенерации
- Создать MviFlow. Задать
FLOW_NAME
=LoanPaymentSchedule
. - Получим:
res/layout/loanpaymentschedule_controller
- Хотелось бы:
res/layout/loan_payment_schedule_controller
Указанные в модуле шаблоны не переопределяют шаблоны из группы
По идее, по правилам переопределения, шаблоны в модуле должны переопределять шаблоны из группы. Например, если в MviScrenModule допишу шаблон, который указан в MviScreenGroup (например, AndroidLayout), то он должен переопределить этот шаблон из группы.
Не работают переменные внутри селекторов
Например, вместо:
"selector": "AppRoute CLASS_BODY LBRACE"
хотелось бы использовать:
"selector": "${APP_ROUTE_NAME} CLASS_BODY LBRACE"
Некорректно работает селектор для некоторых файлов
Например, есть файл с классом:
sealed class AppRoute(override val path: String) : Route {
object CCC : AppRoute("CCC")
object VVV : AppRoute("VVVV")
}
Нужно добавить в конец класса, перед закрывающей скобкой. PsiTree показывает, что достаточно использовать "selector": "AppRoute CLASS CLASS_BODY"
, но он не добавляется.
Пришлось использовать "selector": "AppRoute CLASS_BODY LBRACE"
, но добавляется в начало класса.
Добавить в Wiki информацию про модули
Неудобно что в модулях приходится дублировать структуру из групп
Может, можно как-то это упростить? И позволить делать референсы на группы, например, внутри модулей.
При создании мудуля MviScreen макет создается в другом месте
Если попытаться создать модуль MviScreen, в котором указана подгрузка шаблонов из группы, макет создается не в нужной директории, а на одну назад.
Исправить пути для Linux
Проблема: разделители в Linux инвертированы, и тесты не проходят. Нужно добавить поддержку обеих ОС.
Например:
\\src$directory
-> /src$directory
И тут:
fun String.toPackageCase(): String {
return toUpperCamelCase().toLowerSnakeCase()
.split('-', '_', '/', '\\')
.joinToString(".") { it }
}
в такое:
fun String.toPackageCase(): String {
return toUpperCamelCase().toLowerSnakeCase()
.split('-', '_', '/', '/')
.joinToString(".") { it }
}
И в тесте FileTemplateCreatorTest
Обновить wiki согласно изменениям в версии 0.2.0
Добавить поддержку LOWER_DOT_CASE
Пытался сделать:
"MODULE_PACKAGE_SUFFIX": "ui.${SCREEN_NAME_LOWER_DOT_CASE}"
Не паллучилось :)
Автоматическая синхронизация с файлами шаблонов
Сейчас приходится синхронизировать вручную через выпадающую панель, и постоянно об этом забываешь.
Нет возможности использовать модификаторы на FILE_NAME
Хотелось бы вставлять FILE_NAME в разных модификациях.
Например, LOWER_CASE: FILE_NAME_LOWER_CASE
Вставка шаблона внутрь класса
Было бы удобно добавить функцию вставки шаблона внутрь класса в место клика.
Например, есть класс:
class Test {
fun a() {}
fun b() {}
}
Кликаем между функциями -> выбираем добавить шаблон, получаем:
class Test {
fun a() {}
fun c() {}
fun b() {}
}
fun c() {}
функция из шаблона.
Учитывая что дерево класса мы получить можем, значит это должно быть реализуемо.
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.