І чому я вважав, що описую простий спосіб? Три години ночі після робочого дня певно не краща пора для розумової праці.
Як би там не було, сьогоднішній аналіз сирцевого коду дав кращі результати.
Простий та правильний спосіб в студію (працює навіть з тестед версією, тому підходить усім бажаючим):
- Маємо встановлений валідатор.
- F12->Іконка з галочкою (налаштування валідатора)->Джерело даних (Data sources)->Додати(Add)
- Вказуємо абсолютний шлях до файлу з власними правилами.
- Перезапускаємо JOSM (після цього варто зайти знову в налаштування та перевірити аби вони збереглись - остання SVN версія не зберігає. Якщо зміна не збереглись можна спробувати добавити в файл ~/.josm/preferences:
validator.TagChecker.sources=/home/rsh/temp/tagchecker.cfg;/home/rsh/temp/tagchecker1.cfg
В джерела даних можна додавати файли трьох типів.
Тип файлу визначається вмістом першого рядка:
# JOSM TagChecker validator file - файл перевірки значень тегів за регекспами.
Складається з так-званих правил. Кожне правило це рядок, поділений на поля символом “:”.
<тип даних> : тип помилки : <ключ><вираз><значення>
Тип даних - може бути
-
node - точка
-
way - лінія
-
relation - відношення
-
***** - любий з означених
-
E помилка
-
W попередження
-
I інформація
Ключ назва тегу, або регексп що захоплює декілька тегів. Регексп пишеться між двома символами “/”.
highway == /motorway|trunk|primary|secondary|tertiary|residential|pedestrian/
Якщо наприкінці додати символ “i”, регексп буде не чутливим до регістру.
Вираз може бути “!=” або “==”. Кілька виразів може бути об’єднано за допомогою оператора && (логічний OR схоже відсутній, але фактично він емульований можливістю додати декілька правил, вони об’єднуються по “або”).
Значення - значення або регексп, з яким порівнюється
Коментарій у кінці правила буде використаний як назва повідомлення про помилку.
Наприклад:
- : E : name == /.(ё|ъ|э)./ # Російські літери в назвах об’єктів
Я не зовсім розібрався, як працюють інші типи # JOSM IgnoreTags та speller_words, тому нічого тут про них не писатиму
З огляду на все це, пропоную почати створення файлів правил, на приклад тут
Зовсім забув! Все це UTF-8