Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Feature/tab alignment #1324

Draft
wants to merge 2 commits into
base: develop
Choose a base branch
from
Draft

Feature/tab alignment #1324

wants to merge 2 commits into from

Conversation

asosnoviy
Copy link
Member

Описание

tab alignment diagnostic

Связанные задачи

Closes: #197

Чеклист

Общие

  • Ветка PR обновлена из develop
  • Отладочные, закомментированные и прочие, не имеющие смысла участки кода удалены
  • Изменения покрыты тестами
  • Обязательные действия перед коммитом выполнены (запускал команду gradlew precommit)

Для диагностик

  • Описание диагностики заполнено для обоих языков (перевод на английский не обязателен)

Дополнительно

@nixel2007
Copy link
Member

Перфоманс алерт жёсткий Оо

@asosnoviy
Copy link
Member Author

Перфоманс алерт жёсткий Оо

да трындец, дороже запросов

@asosnoviy asosnoviy force-pushed the feature/tabAlignment branch from 0615d1a to a3fc275 Compare August 5, 2020 17:29
@asosnoviy asosnoviy force-pushed the feature/tabAlignment branch from b0d660c to c8a963b Compare August 6, 2020 18:47
@sonarqubecloud
Copy link

sonarqubecloud bot commented Aug 6, 2020

Kudos, SonarCloud Quality Gate passed!

Bug A 0 Bugs
Vulnerability A 0 Vulnerabilities (and Security Hotspot 0 Security Hotspots to review)
Code Smell A 0 Code Smells

100.0% 100.0% Coverage
0.0% 0.0% Duplication

@nixel2007
Copy link
Member

А регулярка на весь контент, а не на строку, не будет дешевле?

@asosnoviy
Copy link
Member Author

asosnoviy commented Aug 6, 2020

А регулярка на весь контент, а не на строку, не будет дешевле?

А как с нее позиции посчитать потом?

@nixel2007
Copy link
Member

nixel2007 commented Aug 6, 2020

через groups (или как-то так) у MatcherResult. как в оскрипте РегулярноеВыражение.НайтиСовпадения()[0].Группы[1]....

@theshadowco
Copy link
Member

а так не быстрее будет:

  • получить все не вайтспейс токены
  • получить все вайтспейс токены
  • пройтись по вайспейстокенам и с условием
    • не перенос строки
    • предыдущий токен есть в списке не вайтспейсов
    • токен содержит таб

@theshadowco
Copy link
Member

@asosnoviy

@theshadowco
Copy link
Member

порядок условий можно поменять

@asosnoviy
Copy link
Member Author

asosnoviy commented Aug 7, 2020

через groups (или как-то так) у MatcherResult. как в оскрипте РегулярноеВыражение.НайтиСовпадения()[0].Группы[1]....

а там номера строк будут? не только смещение?

@nixel2007
Copy link
Member

@asosnoviy

Вообще смещение, да. Возможно по смещению как-то можно найти позицию в исходном content и сматчить ее на contentList... Но вообще смотри, что я нашел - https://docs.oracle.com/javase/7/docs/api/java/io/LineNumberReader.html

Может быть если чуть-чуть переписать получение contentList, то и по оффсету будет проще искать позицию?

Дока по матчеру:

https://docs.oracle.com/javase/9/docs/api/java/util/regex/Matcher.html

Методы start и end могут в себя принимать номер группы. количество групп известно из groupCount.
Возможно нужно еще явно вызвать toMatchResult(), чтобы получить отдельный потокобезопасный инстанс с результатами, а то кажется, что приколы с параллельностью могут выстрелить.

@asosnoviy
Copy link
Member Author

Вспомнить бы зачем нужен contentList. Несколько раз пытался его заюзать, и кажется ни разу не вышло.

@asosnoviy
Copy link
Member Author

И ще заметил, что "/n/t" липнут в один токен и тогда строка у него начинает врать

@nixel2007
Copy link
Member

И ще заметил, что "/n/t" липнут в один токен и тогда строка у него начинает врать

а там строка - это ж строка начала токена.

@asosnoviy
Copy link
Member Author

И ще заметил, что "/n/t" липнут в один токен и тогда строка у него начинает врать

а там строка - это ж строка начала токена.

Может отделим переносы от всех вайтспейсов?

@nixel2007
Copy link
Member

а зачем? я помню какое-то одно место, где схлопнутые вайтспейсы мешали. в остальном меньше токенов - меньше памяти :)

@theshadowco
Copy link
Member

надо написать парсер , где значаей инормацией будут вайтспейсы :)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Выравнивание Табами не в начале строки
3 participants