Changes between Version 39 and Version 40 of Rules/Portuguese-Errors-PT2
- Timestamp:
- 2024-09-14T01:19:29+02:00 (17 months ago)
Legend:
- Unmodified
- Added
- Removed
- Modified
-
Rules/Portuguese-Errors-PT2
v39 v40 4 4 {{{ 5 5 #!rule 6 7 6 8 7 meta … … 32 31 33 32 /* ERROS */ 34 *[designation] { 33 *[designation][inside("PT")] { 35 34 throwError: tr("PORTUGAL-VERIFICAR: designation não se aplica em Portugal, pode ser description, name, tipo de loja,etc. Muitas vezes contém informações importantes."); 36 35 } 37 *[highway=bridleway] { 36 *[highway=bridleway][inside("PT")] { 38 37 throwError: tr("PORTUGAL- bridleway não se aplica em Portugal, usar highway=path"); 39 fixAdd: "highway=path";40 } 41 *[amenity=biergarten] { 38 fixAdd: "highway=path"; 39 } 40 *[amenity=biergarten][inside("PT")] { 42 41 throwError: tr("PORTUGAL- amenity=biergarten não se aplica em Portugal, usar amenity=pub"); 43 42 } 44 *[railway=monorail] { 43 *[railway=monorail][inside("PT")] { 45 44 throwError: tr("PORTUGAL-Não existem monocarris em Portugal, será ferrovia?"); 46 45 } 47 *[shop=bike] { 46 *[shop=bike][inside("PT")] { 48 47 throwError: tr("PORTUGAL-Não é shop=bike mas sim shop=bicycle"); 49 48 fixAdd: "shop=bicycle"; 50 49 } 51 *[amenity=association] { 50 *[amenity=association][inside("PT")] { 52 51 throwError: tr("PORTUGAL-Não é amenity=association mas sim office=association"); 53 52 fixChangeKey: "amenity => office"; … … 55 54 56 55 57 58 56 /* AVISOS */ 59 *[/name|name:pt|addr:street|addr:city/ =~ /\s([dn]as?|[dn]os?|de)\s[a-z]/] { 60 throwWarning: tr("PORTUGAL-name, addr:street ou addr:city com minúscula após da,no,de,e...");61 } 62 *[/name|name:pt|addr:street|addr:city/ =~ /\s([DN]as?|[DN]os?|De)\s[a-zA-Z]|\sE\s/][/^(name|name:pt)$/ !~ /^European route/] { 63 throwWarning: tr("PORTUGAL-name, addr:street ou addr:city com maiúscula em Da,No,De,E...");57 *[/name|name:pt|addr:street|addr:city/ =~ /\s([dn]as?|[dn]os?|de)\s[a-z]/][inside("PT")] { 58 throwWarning: tr("PORTUGAL-name, addr:street ou addr:city com minúscula após da,no,de,e..."); 59 } 60 *[/name|name:pt|addr:street|addr:city/ =~ /\s([DN]as?|[DN]os?|De)\s[a-zA-Z]|\sE\s/][/^(name|name:pt)$/ !~ /^European route/][inside("PT")] { 61 throwWarning: tr("PORTUGAL-name, addr:street ou addr:city com maiúscula em Da,No,De,E..."); 64 62 } 65 63 /* nomes e ruas escritos totalmente em maiúsculo */ 66 *[/^(name|name:pt)$/ =~ /^[A-Z0-9 ]*[A-Z]+[A-Z0-9 ]*$/][/^(name|name:pt)$/ !~ /^BP$/][/^(name|name:pt)$/ !~ /^(E(\.|\s)?[NRM]|C(\.|\s)?M)(\.|\s)?[1-9]/], 67 *["addr:street" =~ /^[A-Z0-9 ]*[A-Z]+[A-Z0-9 ]*$/], 68 *["addr:city" =~ /^[A-Z0-9 ]*[A-Z]+[A-Z0-9 ]*$/] { 64 *[/^(name|name:pt)$/ =~ /^[A-Z0-9 ]*[A-Z]+[A-Z0-9 ]*$/][/^(name|name:pt)$/ !~ /^BP$/][/^(name|name:pt)$/ !~ /^(E(\.|\s)?[NRM]|C(\.|\s)?M)(\.|\s)?[1-9]/][inside("PT")], 65 *["addr:street" =~ /^[A-Z0-9 ]*[A-Z]+[A-Z0-9 ]*$/][inside("PT")], 66 *["addr:city" =~ /^[A-Z0-9 ]*[A-Z]+[A-Z0-9 ]*$/][inside("PT")] { 69 67 throwWarning: tr("PORTUGAL-name ou name:pt c/letras apenas em maiúsculo, usar short_name e o nome por extenso se for sigla"); 70 68 } 71 *["addr:street" =~ /^[A-Z0-9 ]*[A-Z]+[A-Z0-9 ]*$/], 72 *["addr:city" =~ /^[A-Z0-9 ]*[A-Z]+[A-Z0-9 ]*$/] { 69 *["addr:street" =~ /^[A-Z0-9 ]*[A-Z]+[A-Z0-9 ]*$/][inside("PT")], 70 *["addr:city" =~ /^[A-Z0-9 ]*[A-Z]+[A-Z0-9 ]*$/][inside("PT")] { 73 71 throwWarning: tr("PORTUGAL-addr:street ou addr:city c/letras apenas em maiúsculo"); 74 72 } 75 *[/^(name|name:pt|addr:street|addr:city)$/ =~ /^[a-z]/] { 76 throwWarning: tr("PORTUGAL-name, addr:street ou addr:city que começa em minúscula");77 } 78 *[/name|name:pt|addr:street|addr:city/ =~ /^([!,:;_ºª+=]|\.|\?|\*|-)/] { 79 throwWarning: tr("PORTUGAL-name, addr:street ou addr:city que começa com pontuação");80 } 81 *[name =~ /\s\s/], 82 *["name:pt" =~ /\s\s/], 83 *[short_name =~ /\s\s/], 84 *[official_name =~ /\s\s/], 85 *[loc_name =~ /\s\s/], 86 *[old_name =~ /\s\s/], 87 *[int_name =~ /\s\s/], 88 *[nat_name =~ /\s\s/], 89 *[reg_name =~ /\s\s/], 90 *["addr:street" =~ /\s\s/], 91 *[description =~ /\s\s/], 92 *[ref =~ /\s\s/], 93 *[old_ref =~ /\s\s/] { 94 throwWarning: tr("PORTUGAL- {0} com 2 espaços em branco consecutivos", "{0.key}");95 } 96 *[website =~ /\s/][name !~ /(\s;|;\s)/] { 97 throwWarning: tr("PORTUGAL-website com espaço em branco");98 } 99 *[/name|name:pt|addr:street/ =~ /(?i)(?u)(?U)(sem\s?nome|fix\s?me|\bfix\b|nome|no\s?name|desconhecido|n(ã|a)o conhecido)/][/^(name|name:pt)$/ !~ /(?i)(?u)soldado desconhecido/] { 100 throwWarning: tr("PORTUGAL-Nome errado, sem nome...");101 } 102 way[highway][/name|name:pt|addr:street/ =~ /(-Os-|\sos\s)/] { 103 throwWarning: tr("PORTUGAL-Corrigir nome ou endereço com o correto X-os-X");104 } 105 way[highway][/name|name:pt|addr:street/ =~ /-O-/] { 106 throwWarning: tr("PORTUGAL-Corrigir nome ou endereço com o correto em minúscula X-o-X");107 } 108 way[highway][/name|name:pt|addr:street/ =~ /-A-/] { 109 throwWarning: tr("PORTUGAL-Corrigir nome ou endereço com o correto em minúscula X-a-X");110 } 111 way[highway][/name|name:pt|addr:street/ =~ /(?i)(?u)(?U)(\bairport|\bbank|building|\bdrive\s?way|embassy|\bhelip(ort|ad)\b|\bPark(ing)?|piscine|Post\s?off?ice|\bRue\b|\bshop\b|\bstair|\bstation\b|\btra(c?k|ck?)|stree?t|Zebra cros)/] { 112 throwWarning: tr("PORTUGAL-name ou addr:street com palavras por traduzir ou mudar a etiqueta");113 } 114 way[highway][/^(name|name:pt)$/ =~ /(?U)\b(Alf|Alm|Ant|Arq\.?º?|Az|B\.?º|Br|Bco?|Bl|Brg|Cac|Cc(nh)?|Ca[mp]|Churr|Csl|Cmdt|Comend|Cª|Cons|Cor|Cel|Dep|Dr?\.?[ºª]|Dr|Dq|Edf?|Emb|Enf[oº]?|Eng[ºª]?|Esc(nh)?|Est|Gen|Hab|Inf|Im[aª]|Im[oº]?|Im|Jrd?|Lg?|Lj|Lt|Loteam|Lu?g|Mto|Maj|Mal|Mq|Me|Min|Mons|M|Part|Pe|Pq|Pto|Pte|P[cç]|Pr|Pct[aª]?|Presid|Pro?fª?|Proj|Prolng|Qd|R\.|Rot|Sarg|Slj|Soc|Scv|Sq|Ten|Tr|Transv|Trav|Trv|Tv|Urb|Vl|Vi|Visc|Vv|Zn)(\.| )/] { 115 throwWarning: tr("PORTUGAL-Nome abreviado");116 } 117 *["addr:city" =~ /(?U)\b[A-Z](\.| )/] { 118 throwWarning: tr("PORTUGAL-addr:city abreviado");119 } 120 *["addr:street" =~ /(?U)\b(Alf|Alm|Ant|Arq\.?º?|Az|B\.?º|Br|Bco?|Bl|Brg|Cac|Cc(nh)?|Ca[mp]|Churr|Csl|Cmdt|Comend|Cª|Cons|Cor|Cel|Dep|Dr?\.?[ºª]|Dr|Dq|Edf?|Emb|Enf[oº]?|Eng[ºª]?|Esc(nh)?|Est|Gen|Hab|Inf|Im[aª]|Im[oº]?|Im|Jrd?|Lg?|Lj|Lt|Loteam|Lu?g|Mto|Maj|Mal|Mq|Me|Min|Mons|M|Pe|Pq|Part|Pe|Pto|P[cç]|Pr|Pct[aª]?|Presid|Pro?fª?|Proj|Prolng|Qd|R\.|Rot|Sarg|Slj|Soc|Scv|Sq|Ten|Tr|Transv|Trav|Trv|Tv|Urb|Vl|Vi|Visc|Vv|Zn)(\.| )/] { 121 throwWarning: tr("PORTUGAL-addr:street abreviado");122 } 123 *["addr:street" =~ /(?U)\b(Ass|Av\.?ª?|[Bb](\.\s?|\s)?[Vv]|B(\.\s?|\s)?E(\.\s?|\s)?S|C(\.\s?|\s)?C|[Cc](\.\s?|\s)?[Gg](\.\s?|\s)?[Dd]|[Cc](\.\s?|\s)?[Mm]|C(\.\s?|\s)?V(\.\s?|\s)?P|C\.S|Congr|D|Dept|Dir|E(\.|\s)?T(\.|\s)?A(\.|\s)?R|Ed[Ee]|Ext|[FSfs](\.\s?|\s)?[Cc](lub)?e?|H|Inst|J(\.\s?|\s)?F|Lab|Mte|Na|Ns|N[^0-9º]|N(\.\s?|\s)?[ªa]|\sN\sS|Of|P(\.\s?|\s)?S(\.\s?|\s)?P|Qta|R|Res|Rib(\.a|\.?ª)?|S|S(\.\s?|\s)?C|Soc|Sª|Sr?\.?ª|Sra?|St\.?[oaºª]?|Univ)(\.|\s)/][/(name|name:pt|addr:street)/ !~ /S\.A\./] { 124 throwWarning: tr("PORTUGAL-addr:street abreviado_");125 } 126 *[/^(name|name:pt)$/ =~ /(?U)\b(Ass|Av\.?ª?|[Bb](\.\s?|\s)?[Vv]|B(\.\s?|\s)?E(\.\s?|\s)?S|C(\.\s?|\s)?C|[Cc](\.\s?|\s)?[Gg](\.\s?|\s)?[Dd]|[Cc](\.\s?|\s)?[Mm]|C(\.\s?|\s)?V(\.\s?|\s)?P|C\.S|Congr|Coop(\.\s?|\s)|D|Dept|Dir|E(\.|\s)?T(\.|\s)?A(\.|\s)?R|Ed[Ee]|Ext|[FSfs](\.\s?|\s)?[Cc](lub)?e?|Gab|H|Inst|J(\.\s?|\s)?F|Lab|Mte|Na|Ns|N[^0-9º]|N(\.\s?|\s)?[ªa]|\sN\sS|Of|Pte|P(\.\s?|\s)?S(\.\s?|\s)?P|Qta|R|Res|Rib(\.a|\.?ª)?|S|S(\.\s?|\s)?C|Soc|Sª|Sr?\.?ª|Sra?|St\.?[oaºª]?|Univ)(\.|\s)/][/(name|name:pt|addr:street)/ !~ /S\.A\./] { 127 throwWarning: tr("PORTUGAL-Nome abreviado-NÃO alterar se for nome de estabelecimento");128 } 129 *[/name|name:pt|short_name|official_name|loc_name|old_name|int_name|nat_name|reg_name|addr:street|description|ref|old_ref/ =~ /[?!.,:;]{2,}/] { 130 throwWarning: tr("PORTUGAL-Pontuação repetida 2 ou mais vezes");131 } 132 *[/^(name|name:pt)$/ =~ /\s['"»«ºª]\s/] { 133 throwWarning: tr("PORTUGAL-Nome com acentuação isolada entre espaços");134 } 135 *[name =~ /[`~^¨]/], 136 *["name:pt" =~ /[`~^¨]/], 137 *[short_name =~ /[`~^¨]/], 138 *[official_name =~ /[`~^¨]/], 139 *[alt_name =~ /[`~^¨]/], 140 *[loc_name =~ /[`~^¨]/], 141 *[old_name =~ /[`~^¨]/], 142 *[int_name =~ /[`~^¨]/], 143 *[nat_name =~ /[`~^¨]/], 144 *[reg_name =~ /[`~^¨]/], 145 *["addr:street" =~ /[`~^¨]/], 146 *[description =~ /[`~^¨]/], 147 *[ref =~ /[`~^¨]/], 148 *[old_ref =~ /[`~^¨]/], 149 *[phone =~ /[`~^¨]/], 150 *["contact:phone" =~ /[`~^¨]/], 151 *[fax =~ /[`~^¨]/], 152 *["contact:fax" =~ /[`~^¨]/], 153 *[website =~ /[`~^¨]/], 154 *["addr:housename" =~ /[`~^¨]/], 155 *[sorting_name =~ /[`~^¨]/] { 156 throwWarning: tr("PORTUGAL- {0} com caracteres estranhos", "{0.key}");157 } 158 *[name =~ /[´]/], 159 *["name:pt" =~ /[´]/], 160 *[short_name =~ /[´]/], 161 *[official_name =~ /[´]/], 162 *[alt_name =~ /[´]/], 163 *[loc_name =~ /[´]/], 164 *[old_name =~ /[´]/], 165 *[int_name =~ /[´]/], 166 *[nat_name =~ /[´]/], 167 *[reg_name =~ /[´]/], 168 *["addr:street" =~ /[´]/], 169 *[description =~ /[´]/], 170 *[ref =~ /[´]/], 171 *[old_ref =~ /[´]/], 172 *[phone =~ /[´]/], 173 *["contact:phone" =~ /[´]/], 174 *[fax =~ /[´]/], 175 *["contact:fax" =~ /[´]/], 176 *[website =~ /[´]/], 177 *["addr:housename" =~ /[´]/], 178 *["addr:street" =~ /[´]/], 179 *[sorting_name =~ /[´]/] { 180 throwWarning: tr("PORTUGAL- {0} com acento agudo e não apóstrofo", "{0.key}");73 *[/^(name|name:pt|addr:street|addr:city)$/ =~ /^[a-z]/][inside("PT")] { 74 throwWarning: tr("PORTUGAL-name, addr:street ou addr:city que começa em minúscula"); 75 } 76 *[/name|name:pt|addr:street|addr:city/ =~ /^([!,:;_ºª+=]|\.|\?|\*|-)/][inside("PT")] { 77 throwWarning: tr("PORTUGAL-name, addr:street ou addr:city que começa com pontuação"); 78 } 79 *[name =~ /\s\s/][inside("PT")], 80 *["name:pt" =~ /\s\s/][inside("PT")], 81 *[short_name =~ /\s\s/][inside("PT")], 82 *[official_name =~ /\s\s/][inside("PT")], 83 *[loc_name =~ /\s\s/][inside("PT")], 84 *[old_name =~ /\s\s/][inside("PT")], 85 *[int_name =~ /\s\s/][inside("PT")], 86 *[nat_name =~ /\s\s/][inside("PT")], 87 *[reg_name =~ /\s\s/][inside("PT")], 88 *["addr:street" =~ /\s\s/][inside("PT")], 89 *[description =~ /\s\s/][inside("PT")], 90 *[ref =~ /\s\s/][inside("PT")], 91 *[old_ref =~ /\s\s/][inside("PT")] { 92 throwWarning: tr("PORTUGAL- {0} com 2 espaços em branco consecutivos", "{0.key}"); 93 } 94 *[website =~ /\s/][name !~ /(\s;|;\s)/][inside("PT")] { 95 throwWarning: tr("PORTUGAL-website com espaço em branco"); 96 } 97 *[/name|name:pt|addr:street/ =~ /(?i)(?u)(?U)(sem\s?nome|fix\s?me|\bfix\b|nome|no\s?name|desconhecido|n(ã|a)o conhecido)/][/^(name|name:pt)$/ !~ /(?i)(?u)soldado desconhecido/][inside("PT")] { 98 throwWarning: tr("PORTUGAL-Nome errado, sem nome..."); 99 } 100 way[highway][/name|name:pt|addr:street/ =~ /(-Os-|\sos\s)/][inside("PT")] { 101 throwWarning: tr("PORTUGAL-Corrigir nome ou endereço com o correto X-os-X"); 102 } 103 way[highway][/name|name:pt|addr:street/ =~ /-O-/][inside("PT")] { 104 throwWarning: tr("PORTUGAL-Corrigir nome ou endereço com o correto em minúscula X-o-X"); 105 } 106 way[highway][/name|name:pt|addr:street/ =~ /-A-/][inside("PT")] { 107 throwWarning: tr("PORTUGAL-Corrigir nome ou endereço com o correto em minúscula X-a-X"); 108 } 109 way[highway][/name|name:pt|addr:street/ =~ /(?i)(?u)(?U)(\bairport|\bbank|building|\bdrive\s?way|embassy|\bhelip(ort|ad)\b|\bPark(ing)?|piscine|Post\s?off?ice|\bRue\b|\bshop\b|\bstair|\bstation\b|\btra(c?k|ck?)|stree?t|Zebra cros)/][inside("PT")] { 110 throwWarning: tr("PORTUGAL-name ou addr:street com palavras por traduzir ou mudar a etiqueta"); 111 } 112 way[highway][/^(name|name:pt)$/ =~ /(?U)\b(Alf|Alm|Ant|Arq\.?º?|Az|B\.?º|Br|Bco?|Bl|Brg|Cac|Cc(nh)?|Ca[mp]|Churr|Csl|Cmdt|Comend|Cª|Cons|Cor|Cel|Dep|Dr?\.?[ºª]|Dr|Dq|Edf?|Emb|Enf[oº]?|Eng[ºª]?|Esc(nh)?|Est|Gen|Hab|Inf|Im[aª]|Im[oº]?|Im|Jrd?|Lg?|Lj|Lt|Loteam|Lu?g|Mto|Maj|Mal|Mq|Me|Min|Mons|M|Part|Pe|Pq|Pto|Pte|P[cç]|Pr|Pct[aª]?|Presid|Pro?fª?|Proj|Prolng|Qd|R\.|Rot|Sarg|Slj|Soc|Scv|Sq|Ten|Tr|Transv|Trav|Trv|Tv|Urb|Vl|Vi|Visc|Vv|Zn)(\.| )/][inside("PT")] { 113 throwWarning: tr("PORTUGAL-Nome abreviado"); 114 } 115 *["addr:city" =~ /(?U)\b[A-Z](\.| )/][inside("PT")] { 116 throwWarning: tr("PORTUGAL-addr:city abreviado"); 117 } 118 *["addr:street" =~ /(?U)\b(Alf|Alm|Ant|Arq\.?º?|Az|B\.?º|Br|Bco?|Bl|Brg|Cac|Cc(nh)?|Ca[mp]|Churr|Csl|Cmdt|Comend|Cª|Cons|Cor|Cel|Dep|Dr?\.?[ºª]|Dr|Dq|Edf?|Emb|Enf[oº]?|Eng[ºª]?|Esc(nh)?|Est|Gen|Hab|Inf|Im[aª]|Im[oº]?|Im|Jrd?|Lg?|Lj|Lt|Loteam|Lu?g|Mto|Maj|Mal|Mq|Me|Min|Mons|M|Pe|Pq|Part|Pe|Pto|P[cç]|Pr|Pct[aª]?|Presid|Pro?fª?|Proj|Prolng|Qd|R\.|Rot|Sarg|Slj|Soc|Scv|Sq|Ten|Tr|Transv|Trav|Trv|Tv|Urb|Vl|Vi|Visc|Vv|Zn)(\.| )/][inside("PT")] { 119 throwWarning: tr("PORTUGAL-addr:street abreviado"); 120 } 121 *["addr:street" =~ /(?U)\b(Ass|Av\.?ª?|[Bb](\.\s?|\s)?[Vv]|B(\.\s?|\s)?E(\.\s?|\s)?S|C(\.\s?|\s)?C|[Cc](\.\s?|\s)?[Gg](\.\s?|\s)?[Dd]|[Cc](\.\s?|\s)?[Mm]|C(\.\s?|\s)?V(\.\s?|\s)?P|C\.S|Congr|D|Dept|Dir|E(\.|\s)?T(\.|\s)?A(\.|\s)?R|Ed[Ee]|Ext|[FSfs](\.\s?|\s)?[Cc](lub)?e?|H|Inst|J(\.\s?|\s)?F|Lab|Mte|Na|Ns|N[^0-9º]|N(\.\s?|\s)?[ªa]|\sN\sS|Of|P(\.\s?|\s)?S(\.\s?|\s)?P|Qta|R|Res|Rib(\.a|\.?ª)?|S|S(\.\s?|\s)?C|Soc|Sª|Sr?\.?ª|Sra?|St\.?[oaºª]?|Univ)(\.|\s)/][/(name|name:pt|addr:street)/ !~ /S\.A\./][inside("PT")] { 122 throwWarning: tr("PORTUGAL-addr:street abreviado_"); 123 } 124 *[/^(name|name:pt)$/ =~ /(?U)\b(Ass|Av\.?ª?|[Bb](\.\s?|\s)?[Vv]|B(\.\s?|\s)?E(\.\s?|\s)?S|C(\.\s?|\s)?C|[Cc](\.\s?|\s)?[Gg](\.\s?|\s)?[Dd]|[Cc](\.\s?|\s)?[Mm]|C(\.\s?|\s)?V(\.\s?|\s)?P|C\.S|Congr|Coop(\.\s?|\s)|D|Dept|Dir|E(\.|\s)?T(\.|\s)?A(\.|\s)?R|Ed[Ee]|Ext|[FSfs](\.\s?|\s)?[Cc](lub)?e?|Gab|H|Inst|J(\.\s?|\s)?F|Lab|Mte|Na|Ns|N[^0-9º]|N(\.\s?|\s)?[ªa]|\sN\sS|Of|Pte|P(\.\s?|\s)?S(\.\s?|\s)?P|Qta|R|Res|Rib(\.a|\.?ª)?|S|S(\.\s?|\s)?C|Soc|Sª|Sr?\.?ª|Sra?|St\.?[oaºª]?|Univ)(\.|\s)/][/(name|name:pt|addr:street)/ !~ /S\.A\./][inside("PT")] { 125 throwWarning: tr("PORTUGAL-Nome abreviado-NÃO alterar se for nome de estabelecimento"); 126 } 127 *[/name|name:pt|short_name|official_name|loc_name|old_name|int_name|nat_name|reg_name|addr:street|description|ref|old_ref/ =~ /[?!.,:;]{2,}/][inside("PT")] { 128 throwWarning: tr("PORTUGAL-Pontuação repetida 2 ou mais vezes"); 129 } 130 *[/^(name|name:pt)$/ =~ /\s['"»«ºª]\s/][inside("PT")] { 131 throwWarning: tr("PORTUGAL-Nome com acentuação isolada entre espaços"); 132 } 133 *[name =~ /[`~^¨]/][inside("PT")], 134 *["name:pt" =~ /[`~^¨]/][inside("PT")], 135 *[short_name =~ /[`~^¨]/][inside("PT")], 136 *[official_name =~ /[`~^¨]/][inside("PT")], 137 *[alt_name =~ /[`~^¨]/][inside("PT")], 138 *[loc_name =~ /[`~^¨]/][inside("PT")], 139 *[old_name =~ /[`~^¨]/][inside("PT")], 140 *[int_name =~ /[`~^¨]/][inside("PT")], 141 *[nat_name =~ /[`~^¨]/][inside("PT")], 142 *[reg_name =~ /[`~^¨]/][inside("PT")], 143 *["addr:street" =~ /[`~^¨]/][inside("PT")], 144 *[description =~ /[`~^¨]/][inside("PT")], 145 *[ref =~ /[`~^¨]/][inside("PT")], 146 *[old_ref =~ /[`~^¨]/][inside("PT")], 147 *[phone =~ /[`~^¨]/][inside("PT")], 148 *["contact:phone" =~ /[`~^¨]/][inside("PT")], 149 *[fax =~ /[`~^¨]/][inside("PT")], 150 *["contact:fax" =~ /[`~^¨]/][inside("PT")], 151 *[website =~ /[`~^¨]/][inside("PT")], 152 *["addr:housename" =~ /[`~^¨]/][inside("PT")], 153 *[sorting_name =~ /[`~^¨]/][inside("PT")] { 154 throwWarning: tr("PORTUGAL- {0} com caracteres estranhos", "{0.key}"); 155 } 156 *[name =~ /[´]/][inside("PT")], 157 *["name:pt" =~ /[´]/][inside("PT")], 158 *[short_name =~ /[´]/][inside("PT")], 159 *[official_name =~ /[´]/][inside("PT")], 160 *[alt_name =~ /[´]/][inside("PT")], 161 *[loc_name =~ /[´]/][inside("PT")], 162 *[old_name =~ /[´]/][inside("PT")], 163 *[int_name =~ /[´]/][inside("PT")], 164 *[nat_name =~ /[´]/][inside("PT")], 165 *[reg_name =~ /[´]/][inside("PT")], 166 *["addr:street" =~ /[´]/][inside("PT")], 167 *[description =~ /[´]/][inside("PT")], 168 *[ref =~ /[´]/][inside("PT")], 169 *[old_ref =~ /[´]/][inside("PT")], 170 *[phone =~ /[´]/][inside("PT")], 171 *["contact:phone" =~ /[´]/][inside("PT")], 172 *[fax =~ /[´]/][inside("PT")], 173 *["contact:fax" =~ /[´]/][inside("PT")], 174 *[website =~ /[´]/][inside("PT")], 175 *["addr:housename" =~ /[´]/][inside("PT")], 176 *["addr:street" =~ /[´]/][inside("PT")], 177 *[sorting_name =~ /[´]/][inside("PT")] { 178 throwWarning: tr("PORTUGAL- {0} com acento agudo e não apóstrofo", "{0.key}"); 181 179 } 182 180 /* erros ortográficos principais … … 184 182 * em alguns locais corretamente porque utiliza a grafia antiga, por isso não se deve colocar estes casos aqui. 185 183 */ 186 *[/^(name|name:pt|addr:street|addr:city|alt_name|int_name|nat_name|reg_name|loc_name|old_name|official_name|name:pt)$/ =~ /(?i)(?u)(?U)(oes\b|\bá\s|hà|\bAb[ìi]lio|Ac([àa]c|ass?|áss?)i[ao]|Academic[oa]|A((c|ss?)[ùu]|çù)de\b|\bAss?ore[sa]|Administra(ça|cã|ca)o|\bAdriao\b|Africa\b|Ag(enc|êns)ia|\b(Ág|Agu)eda\b|Agrari[ao]|Agricola|\bAgui?as?\b|\bAlamo\b|Alcantara|Alfandega|\bAl(ge|j[ée])s\b|Alvar(es|o)|Amalia|\bAmandio|\bAmeli[ao]\b|Americ[ao]s?\b|Amisade|\bAndre\b|\bAngel[ao]\b|\bAnibal|Antonio|Apolonia|Araujo|Arma(ze|sé)(m|ns)|\bArea\b|Arqueol(og|ój|oj)ic[oa]|\bArtes(ao|oes)|\bArtistic[oa]|Arvore|Ascen(sao|ção|çao)|\bAsenha\b|As(s?isten[cs]s?|istên[cs]s?i)ia|Astronomico|\bA[sc]is\b|Ass?o(c|ss?)ia(ça|cã|ca)o|Atlantic|Atletico|Auditorio|\bAzemeis|\bBaia\b|\bBalneario|B(as|áz)i(li)?c[ao]|\bBarao\b|\bBarbar[ao]s?\b|\bBa(zí|si)lica|\bB[éê]co\b|\bBelem\b|B(élj|el[gj]i)c|\bBelesa|\bBeltr[aâ]o\b|\bBetao\b|\bBissáu\b|Bonanico|Bonif(ac|as|ás)io|\bBrandao\b|\bBras\b|Bra(si|z[ií])lia|\bBrazil|Britanic|Cab(leireir[ao]|eleleir[ao]|eleire?[ao])|\bCacador|Cafe\b|Caf(ét[ea]|ata)ria|Cal(c|ss?)ada|C(alva|álv[áa])rio|\bC[àáã]mara|Cambio|Camelia|cami(onaj|no[gj]|nona[gj]|na[gj])em|Camoes|\bCa(mponez|npone[zs])|\bCandid[ao]\b|\bC[aâ]o\b\b|\bCapit(ao|aes|[õo]es)|Ca[cs]s?ador|\bCaza\b|C[ei]miterio|Centenari[ao]|\bC(e[zs]|éz)ar\b|Chafaris|\bCha[os]?\b|\bCidadao\b|Ci(enc|[êe]nss?)ia|Cir(ur[gj]|úrj)ica|\bClaudi[ao]|Clerigo|Clinica|Col(e[gj]|éj)io|Combust(ívé|iv[ée])ive(l|is)|Com(er[cs]|érs)io|\bCojo\b|Comdominio|Com(monit[áa]|unita)ri[ao]|Concei(ca|ça|cã)o|\bC[oô]nego\b|Con([cs]s?ervato|cervató)ri|Co(mdom[íi]|ndomi)nio|Coperativa|cosmetic(a|os)|\bCredito|Crist([oôó]va|[oô]vã)o|\bCrus\b|Con(c|ss?)ervatori[oa]|\bDalia\b|\bDami?ao\b|Dan(c|ss?)a\b|Dentari|Dep(oss?|óz|oz)ito|Diagnostico|Diario|Di(até|ete)tica|\bDili\b|Dion(is|iz|íz)io|Dire(cã|ça|ca)o|Domingao|\bE(c|ss?)ca\b|Edif(i[cçs]s?|íç|íss?)icio|Educa(ca|ça|cã)o|Elec?tr[ei](c[ao]|[çs]s?ista)s?|Elec?tr(e[cçs]s?|i[çs]s?)[ei]dade|Elec?trodomestic|\bElisi[ao]s?\b|\b([ÈÉ]m[íi]|Emi)di[ao]\b|\bEmili[ao]\b|Encarna(ca|ça|cã)o|Eremida|Escadori|Escoteiro|Espirit[ao]|Expli([çc][õo]es|ca(cõ|ço|co)es|ca(ça|cã)o)|Esta(ca|ça|cã)o|\bEstadio|Estasiona|Estatua|\bEstefani[ao]|Esternato|Estetic[ao]|Estradao|Est[êée]vao|Estufador|\bEufemi|Evan(ge|jé|je)lica|\bEvora\b|Ex(erc|érs)ito|\bEx(ilio|ílad)|Fabricas?\b|\bFamalicao|\bFamilia\b|(para)?Farmacia|Farmaceutic|Fatima|Felix|\bFerre[ao]|Ferr?oviari|Finan(c|ss?)as|\bFisic[ao]\b|\bFlavi[ao]\b|Folclorico|\bFont[ae]rio|Fortalesa|Fotebol\b|\bFotografo|Fran(ce|sê|se)s\b|F(egu?e[sz]|rege[sz]|regu?ez)ia|Fruticula|Funeraria|Gale\b|Garces|\bGa(rret|rett?)\b|\bGaviao\b|\b(Ge|J[ée])meos?\b|Gloria|\bGôa\b|\bGois\b|Gon(c|ss?)alves|\bGra[cs]s?as?\b|\bGrao\b|Guestao|Guimaraes|Gu?in(áz|as|az)io|Gu?ina[sz]tica|Guine(\sBiss?a[ou])?|Guiné(-|\s)?(Bi[çs]a[ou])|Hermini[ao]\b|Herois|Hipico|\bHor(áss?|ac)io|Horten[cs]ia|Horticula|\bH[õô]tel|Iberic[ao]|Imobiliaria|\bIn([áa]ss?|ac)io|Independencia|India\b|Industrias?\b|Inf(a[cs]s?ia|ânss?ia|antario)|\binformatica|\bIn(es|ez|êz)\b|Infantario|Informatica|Inspec?ç?(a|oes)|\bIrmao?s?\b|\bJeova\b|Jeronimo|\bJiesta|\bJoao\b|Joelheria|\bJoias?\b|J[oó]se\b|J[ou]d[iu]([cs]s?ia|ss?i[áa]|[cs]?i[cs]?ia)ria|\bJuliao\b|\bJusti(c|ss?)a|\bJulia?o\b|\bJuridic|Laboratorio|\bLampiao\b|L(ás|az|as)aro|Leao|Leitao|\bLinguas?\b|\bLiquido\b|\bLirio|Lo(gi|jí)stic|Loule|Louren(c|ss?)o|\bL(ú[çs]s?i|u[çcs]s?i)[ao]\b|Lu[sz]iada|Magalhaes|\bMalhao\b|Maquinas?|\bMarili|Maritim[oa]|\bMario\b|Martir(es)?\b|\bMatris\b|Marqu?(é[sz]|eza)\b|Matematic|\bMedic[oa]\b|Metal(úrjica|ur[jg]ica)|Mi(ss?iona|cion[áa])ri|M[ei][sz](erir?co|irec[oó])rd[ie](o[sz])?a|\bMoises\b|Mortuaria|Moveis|\bM(o[sz]e[ou]|useo|uze[ou])\b|M[uo]([sz]e[uo]lój|ze[uo]ló[gj])ic|Muni((c|ss?)i|ss?í)pio|Musica\b|\bNautic|\bNa(zare|sar[ée])|Negocio|Nem(éz|es)io\b|Ne[sç]s?e[scç]s?idades|Not(i[cs]s?|íss?)ias|\bNucleo\b|\bOp?tica\b|[ÒO]bidos?|Observatorio|O(ceanic[ao]\b|[çs]s?eânic)|Panoramic|\bPao\b|\bP[áa]teo\b|\bP[àaâã]tio\b|Pavilh(ao|oes)|\bPen(ss?a|ssã|çã)o\b|\bPredios?\b|P(siquia|ciqui[aá])tric[oa]|Politecnic|Porfirio|Portugue[sz]\b|Profi[cs]ional|\bProgre[sç]o|\bPublic(o|a)\b|P[ou]rifica(ca|ça|cã)o|Quiteria|\bRadio\b|\bRaínha\b|\bRaúl\b|Ress?into|\bR[eu]tunda\b|\bRe(gia|jiã|gi|ji)o\b|Rejimento|Remedio|Repara(cões|çoes|coes|çao|cao|cão)|R[ée]publica\b|R(épu|epú|épú)blican[ao]|Retro(za|[zs]e)ria|Re([zs]ide|zidê)n[cs]ias?\b|Rezid[êe]ncial|Re(zide|sidê)n[cs]ial|Re[sç]urrei(ça|[cs]s?ã)o|Ress?urrei(ça|[cs]s?ã)o|Retrozaria|\bRío\b|Rodoviari[oa]|\bRo([gj]e|jé)rio|Romanic[ao]|Romao|\bRo(sa|za|zá)[rl]i[oa]|Ruina|\bSa\b|Salao|Sand([ou][íi]x|[ou]ich|oích)e|\bSanitari|Sant(are|er[ée])m|Sant(í[sçc]|i[sçc]s?)im[ao]|\bSao\b|\bSaude|\sSe\b|Sebastiao|Seculo|Secundari[ao]|(Semina|Cemin[áa])rio|Senior|Ser(racao|raçao|racão|ação)|Sepulveda|Servi(c|ss?)o|S(erg|érji)io|Sidonio|\bSilverio|Sim(ao|oes)|Su(e(c|ss?)ia|éss?)ia|Su(íss?|iç|iss?)a|Su[çs]s?e(ss?|ç)o|\bT(ang|[âa]nj)er\b|Tape([çc]e|[cs]s?a)ria|Taxis?|Tecnico|Tecnol(ój|o[gj])ico|\bTenis\b|Tertulia|Teofilo|Teotonio|Textil|\bTilia|\bTipico|\bTomas\b|\bTome\b|\bTr(a[sz]|áz)\b|\bTr?ave[sç]a\b|\bTrese\b|\bTúlipa|\bTunel\b|\bTuristic|\bUniao\b|Univer(sita|cit[áa])ri|Univercidade|Urbani(za(ç|ss?)ao|sa(ç|ss?)ão|zac[aã]o)|Urg(enc|[êe]nss?)ia|\bV(ar[zs]|árs)ea\b|\bVarsim|\bV(árs|ar[zs])ea|\bValeri[ao]\b|\bVen(an[cs]s?|[âa]nss?)i[ao]|\bV(ide|[íi]di)o\b|\bVicio\b|\bV(ir[gj]i|jí|erj[íi]|ergi)li|Veter(i?na|en[áa])ri|\bVilaret?\b|Vitoria|Voluntario)/] { 187 throwWarning: tr("PORTUGAL-Verificar:name ou similares, addr:street, addr:city com erros ortográficos");184 *[/^(name|name:pt|addr:street|addr:city|alt_name|int_name|nat_name|reg_name|loc_name|old_name|official_name|name:pt)$/ =~ /(?i)(?u)(?U)(oes\b|\bá\s|hà|\bAb[ìi]lio|Ac([àa]c|ass?|áss?)i[ao]|Academic[oa]|A((c|ss?)[ùu]|çù)de\b|\bAss?ore[sa]|Administra(ça|cã|ca)o|\bAdriao\b|Africa\b|Ag(enc|êns)ia|\b(Ág|Agu)eda\b|Agrari[ao]|Agricola|\bAgui?as?\b|\bAlamo\b|Alcantara|Alfandega|\bAl(ge|j[ée])s\b|Alvar(es|o)|Amalia|\bAmandio|\bAmeli[ao]\b|Americ[ao]s?\b|Amisade|\bAndre\b|\bAngel[ao]\b|\bAnibal|Antonio|Apolonia|Araujo|Arma(ze|sé)(m|ns)|\bArea\b|Arqueol(og|ój|oj)ic[oa]|\bArtes(ao|oes)|\bArtistic[oa]|Arvore|Ascen(sao|ção|çao)|\bAsenha\b|As(s?isten[cs]s?|istên[cs]s?i)ia|Astronomico|\bA[sc]is\b|Ass?o(c|ss?)ia(ça|cã|ca)o|Atlantic|Atletico|Auditorio|\bAzemeis|\bBaia\b|\bBalneario|B(as|áz)i(li)?c[ao]|\bBarao\b|\bBarbar[ao]s?\b|\bBa(zí|si)lica|\bB[éê]co\b|\bBelem\b|B(élj|el[gj]i)c|\bBelesa|\bBeltr[aâ]o\b|\bBetao\b|\bBissáu\b|Bonanico|Bonif(ac|as|ás)io|\bBrandao\b|\bBras\b|Bra(si|z[ií])lia|\bBrazil|Britanic|Cab(leireir[ao]|eleleir[ao]|eleire?[ao])|\bCacador|Cafe\b|Caf(ét[ea]|ata)ria|Cal(c|ss?)ada|C(alva|álv[áa])rio|\bC[àáã]mara|Cambio|Camelia|cami(onaj|no[gj]|nona[gj]|na[gj])em|Camoes|\bCa(mponez|npone[zs])|\bCandid[ao]\b|\bC[aâ]o\b\b|\bCapit(ao|aes|[õo]es)|Ca[cs]s?ador|\bCaza\b|C[ei]miterio|Centenari[ao]|\bC(e[zs]|éz)ar\b|Chafaris|\bCha[os]?\b|\bCidadao\b|Ci(enc|[êe]nss?)ia|Cir(ur[gj]|úrj)ica|\bClaudi[ao]|Clerigo|Clinica|Col(e[gj]|éj)io|Combust(ívé|iv[ée])ive(l|is)|Com(er[cs]|érs)io|\bCojo\b|Comdominio|Com(monit[áa]|unita)ri[ao]|Concei(ca|ça|cã)o|\bC[oô]nego\b|Con([cs]s?ervato|cervató)ri|Co(mdom[íi]|ndomi)nio|Coperativa|cosmetic(a|os)|\bCredito|Crist([oôó]va|[oô]vã)o|\bCrus\b|Con(c|ss?)ervatori[oa]|\bDalia\b|\bDami?ao\b|Dan(c|ss?)a\b|Dentari|Dep(oss?|óz|oz)ito|Diagnostico|Diario|Di(até|ete)tica|\bDili\b|Dion(is|iz|íz)io|Dire(cã|ça|ca)o|Domingao|\bE(c|ss?)ca\b|Edif(i[cçs]s?|íç|íss?)icio|Educa(ca|ça|cã)o|Elec?tr[ei](c[ao]|[çs]s?ista)s?|Elec?tr(e[cçs]s?|i[çs]s?)[ei]dade|Elec?trodomestic|\bElisi[ao]s?\b|\b([ÈÉ]m[íi]|Emi)di[ao]\b|\bEmili[ao]\b|Encarna(ca|ça|cã)o|Eremida|Escadori|Escoteiro|Espirit[ao]|Expli([çc][õo]es|ca(cõ|ço|co)es|ca(ça|cã)o)|Esta(ca|ça|cã)o|\bEstadio|Estasiona|Estatua|\bEstefani[ao]|Esternato|Estetic[ao]|Estradao|Est[êée]vao|Estufador|\bEufemi|Evan(ge|jé|je)lica|\bEvora\b|Ex(erc|érs)ito|\bEx(ilio|ílad)|Fabricas?\b|\bFamalicao|\bFamilia\b|(para)?Farmacia|Farmaceutic|Fatima|Felix|\bFerre[ao]|Ferr?oviari|Finan(c|ss?)as|\bFisic[ao]\b|\bFlavi[ao]\b|Folclorico|\bFont[ae]rio|Fortalesa|Fotebol\b|\bFotografo|Fran(ce|sê|se)s\b|F(egu?e[sz]|rege[sz]|regu?ez)ia|Fruticula|Funeraria|Gale\b|Garces|\bGa(rret|rett?)\b|\bGaviao\b|\b(Ge|J[ée])meos?\b|Gloria|\bGôa\b|\bGois\b|Gon(c|ss?)alves|\bGra[cs]s?as?\b|\bGrao\b|Guestao|Guimaraes|Gu?in(áz|as|az)io|Gu?ina[sz]tica|Guine(\sBiss?a[ou])?|Guiné(-|\s)?(Bi[çs]a[ou])|Hermini[ao]\b|Herois|Hipico|\bHor(áss?|ac)io|Horten[cs]ia|Horticula|\bH[õô]tel|Iberic[ao]|Imobiliaria|\bIn([áa]ss?|ac)io|Independencia|India\b|Industrias?\b|Inf(a[cs]s?ia|ânss?ia|antario)|\binformatica|\bIn(es|ez|êz)\b|Infantario|Informatica|Inspec?ç?(a|oes)|\bIrmao?s?\b|\bJeova\b|Jeronimo|\bJiesta|\bJoao\b|Joelheria|\bJoias?\b|J[oó]se\b|J[ou]d[iu]([cs]s?ia|ss?i[áa]|[cs]?i[cs]?ia)ria|\bJuliao\b|\bJusti(c|ss?)a|\bJulia?o\b|\bJuridic|Laboratorio|\bLampiao\b|L(ás|az|as)aro|Leao|Leitao|\bLinguas?\b|\bLiquido\b|\bLirio|Lo(gi|jí)stic|Loule|Louren(c|ss?)o|\bL(ú[çs]s?i|u[çcs]s?i)[ao]\b|Lu[sz]iada|Magalhaes|\bMalhao\b|Maquinas?|\bMarili|Maritim[oa]|\bMario\b|Martir(es)?\b|\bMatris\b|Marqu?(é[sz]|eza)\b|Matematic|\bMedic[oa]\b|Metal(úrjica|ur[jg]ica)|Mi(ss?iona|cion[áa])ri|M[ei][sz](erir?co|irec[oó])rd[ie](o[sz])?a|\bMoises\b|Mortuaria|Moveis|\bM(o[sz]e[ou]|useo|uze[ou])\b|M[uo]([sz]e[uo]lój|ze[uo]ló[gj])ic|Muni((c|ss?)i|ss?í)pio|Musica\b|\bNautic|\bNa(zare|sar[ée])|Negocio|Nem(éz|es)io\b|Ne[sç]s?e[scç]s?idades|Not(i[cs]s?|íss?)ias|\bNucleo\b|\bOp?tica\b|[ÒO]bidos?|Observatorio|O(ceanic[ao]\b|[çs]s?eânic)|Panoramic|\bPao\b|\bP[áa]teo\b|\bP[àaâã]tio\b|Pavilh(ao|oes)|\bPen(ss?a|ssã|çã)o\b|\bPredios?\b|P(siquia|ciqui[aá])tric[oa]|Politecnic|Porfirio|Portugue[sz]\b|Profi[cs]ional|\bProgre[sç]o|\bPublic(o|a)\b|P[ou]rifica(ca|ça|cã)o|Quiteria|\bRadio\b|\bRaínha\b|\bRaúl\b|Ress?into|\bR[eu]tunda\b|\bRe(gia|jiã|gi|ji)o\b|Rejimento|Remedio|Repara(cões|çoes|coes|çao|cao|cão)|R[ée]publica\b|R(épu|epú|épú)blican[ao]|Retro(za|[zs]e)ria|Re([zs]ide|zidê)n[cs]ias?\b|Rezid[êe]ncial|Re(zide|sidê)n[cs]ial|Re[sç]urrei(ça|[cs]s?ã)o|Ress?urrei(ça|[cs]s?ã)o|Retrozaria|\bRío\b|Rodoviari[oa]|\bRo([gj]e|jé)rio|Romanic[ao]|Romao|\bRo(sa|za|zá)[rl]i[oa]|Ruina|\bSa\b|Salao|Sand([ou][íi]x|[ou]ich|oích)e|\bSanitari|Sant(are|er[ée])m|Sant(í[sçc]|i[sçc]s?)im[ao]|\bSao\b|\bSaude|\sSe\b|Sebastiao|Seculo|Secundari[ao]|(Semina|Cemin[áa])rio|Senior|Ser(racao|raçao|racão|ação)|Sepulveda|Servi(c|ss?)o|S(erg|érji)io|Sidonio|\bSilverio|Sim(ao|oes)|Su(e(c|ss?)ia|éss?)ia|Su(íss?|iç|iss?)a|Su[çs]s?e(ss?|ç)o|\bT(ang|[âa]nj)er\b|Tape([çc]e|[cs]s?a)ria|Taxis?|Tecnico|Tecnol(ój|o[gj])ico|\bTenis\b|Tertulia|Teofilo|Teotonio|Textil|\bTilia|\bTipico|\bTomas\b|\bTome\b|\bTr(a[sz]|áz)\b|\bTr?ave[sç]a\b|\bTrese\b|\bTúlipa|\bTunel\b|\bTuristic|\bUniao\b|Univer(sita|cit[áa])ri|Univercidade|Urbani(za(ç|ss?)ao|sa(ç|ss?)ão|zac[aã]o)|Urg(enc|[êe]nss?)ia|\bV(ar[zs]|árs)ea\b|\bVarsim|\bV(árs|ar[zs])ea|\bValeri[ao]\b|\bVen(an[cs]s?|[âa]nss?)i[ao]|\bV(ide|[íi]di)o\b|\bVicio\b|\bV(ir[gj]i|jí|erj[íi]|ergi)li|Veter(i?na|en[áa])ri|\bVilaret?\b|Vitoria|Voluntario)/][inside("PT")] { 185 throwWarning: tr("PORTUGAL-Verificar:name ou similares, addr:street, addr:city com erros ortográficos"); 188 186 } 189 187 /* possui nome de rua mas não tem etiqueta de highway */ 190 way[!highway][!railway][route != road][type !~ /route|street/][name][name =~ /^(?i)(?u)(?U)(Auto-?estrada|Avenida|Beco|Cais|Calçad(inh)?a|Caminho|Ciclovia|Escad(a|inha|aria)s?|Estrada\s?(Nacional|Regional|Municipal)?|Itinerário\s? (Complementar|Principal)?|Passeio|Rampa|Rotunda|Rua|Ruela|Transversal|Travessa|Trilho|Túnel|Variante|Via(-|\s)Rápida|Viadutos?|Viela)\b/][name !~ /^(?i)(?u)estrada de ferro/][route != ferry][!amenity] { 188 way[!highway][!railway][route != road][type !~ /route|street/][name][name =~ /^(?i)(?u)(?U)(Auto-?estrada|Avenida|Beco|Cais|Calçad(inh)?a|Caminho|Ciclovia|Escad(a|inha|aria)s?|Estrada\s?(Nacional|Regional|Municipal)?|Itinerário\s? (Complementar|Principal)?|Passeio|Rampa|Rotunda|Rua|Ruela|Transversal|Travessa|Trilho|Túnel|Variante|Via(-|\s)Rápida|Viadutos?|Viela)\b/][name !~ /^(?i)(?u)estrada de ferro/][route != ferry][!amenity][inside("PT")] { 191 189 throwWarning: tr("PORTUGAL-Verificar: com nome de via mas sem etiqueta de {0}", "{0.key}"); 192 190 } 193 *[highway][name =~ /^(?i)(?u)(Auto-?Estrada|Alameda|Avenida|Beco|Calçad(inh)?a|Caminho|Ciclovia|Escad(a|inha|aria)s?|Estrada\s?(Nacional|Regional|Municipal)?|Itinerário\s? (Complementar|Principal)?|Ladeira|Largo|Pátio|Pra(ç|cet)a|Rampa|Rotunda|Rua|Ruela|Transversal|Travessa|Terreiro|Trilho|Túnel|Variante|Vereda|Via(-Rápida)?|Viadutos?|Viela)( (de acesso|sem nome|projetad(a|o)|em construção))?$/][highway!=bus_stop] { 191 *[highway][name =~ /^(?i)(?u)(Auto-?Estrada|Alameda|Avenida|Beco|Calçad(inh)?a|Caminho|Ciclovia|Escad(a|inha|aria)s?|Estrada\s?(Nacional|Regional|Municipal)?|Itinerário\s? (Complementar|Principal)?|Ladeira|Largo|Pátio|Pra(ç|cet)a|Rampa|Rotunda|Rua|Ruela|Transversal|Travessa|Terreiro|Trilho|Túnel|Variante|Vereda|Via(-Rápida)?|Viadutos?|Viela)( (de acesso|sem nome|projetad(a|o)|em construção))?$/][highway!=bus_stop][inside("PT")] { 194 192 throwWarning: tr("PORTUGAL-Via com nome incompleto"); 195 193 } 196 *[highway=service][name =~ /^(?i)(?u)(Auto-?Estrada|Alameda|Avenida|Beco|Calçad(inh)?a|Caminho|Ciclovia|Escad(a|inha|aria)s?|Estrada\s?(Nacional|Regional|Municipal)?|Itinerário\s? (Complementar|Principal)?|Ladeira|Largo|Pátio|Pra(ç|cet)a|Rampa|Rotunda|Rua|Ruela|Transversal|Travessa|Terreiro|Trilho|Túnel|Variante|Vereda|Via(-Rápida)?|Viadutos?|Viela)( (de acesso|sem nome|projetad(a|o)|em construção))?$/] { 197 throwWarning: tr("PORTUGAL-Via pública erradamente de serviço");194 *[highway=service][name =~ /^(?i)(?u)(Auto-?Estrada|Alameda|Avenida|Beco|Calçad(inh)?a|Caminho|Ciclovia|Escad(a|inha|aria)s?|Estrada\s?(Nacional|Regional|Municipal)?|Itinerário\s? (Complementar|Principal)?|Ladeira|Largo|Pátio|Pra(ç|cet)a|Rampa|Rotunda|Rua|Ruela|Transversal|Travessa|Terreiro|Trilho|Túnel|Variante|Vereda|Via(-Rápida)?|Viadutos?|Viela)( (de acesso|sem nome|projetad(a|o)|em construção))?$/][inside("PT")] { 195 throwWarning: tr("PORTUGAL-Via pública erradamente de serviço"); 198 196 } 199 197 /* endereços com nome de via errado */ 200 *["addr:street"]["addr:street" !~ /^(?U)((Adro|Alameda|Aldeamento|Alto|Arco|Autoparque|Avenida|Azinhaga|Bairro|Beco|Boqueirão|Burgal|Cabeço|Cais|Calçad(inh)?a|Caminho|Campo|Campus|Caracol|Carreiro|Casal|Circular|Colónia|Condomínio|Corredor|Costa|Cruz(es)?|Cunhal|Encosta|Escad(a|inha|aria)s?|Escolas|Esplanada|Estacada|Estrada|Grupos de Moradias Populares|Itinerário\s?|Jardi(m|ns)|Ladeira|Largo|Loteamento|Mercado|Miradouro|Monte|Outeirinho|Paço|Parada|Parque|Passeio|Pátio|Poço|Porta|Postigo|Pra(ç|cet)a|Praia|Quinta|Rampa|Regueirão|Rocha|Rossio|Rotunda|Rua|Ruela|Sítio|Telheiro|Terreiro|Transversal|Travessa|Urbanização|Variante|Vereda|Via(-Rápida)?|Viela|Vila)\b|Triste Feia)/] { 198 *["addr:street"]["addr:street" !~ /^(?U)((Adro|Alameda|Aldeamento|Alto|Arco|Autoparque|Avenida|Azinhaga|Bairro|Beco|Boqueirão|Burgal|Cabeço|Cais|Calçad(inh)?a|Caminho|Campo|Campus|Caracol|Carreiro|Casal|Circular|Colónia|Condomínio|Corredor|Costa|Cruz(es)?|Cunhal|Encosta|Escad(a|inha|aria)s?|Escolas|Esplanada|Estacada|Estrada|Grupos de Moradias Populares|Itinerário\s?|Jardi(m|ns)|Ladeira|Largo|Loteamento|Mercado|Miradouro|Monte|Outeirinho|Paço|Parada|Parque|Passeio|Pátio|Poço|Porta|Postigo|Pra(ç|cet)a|Praia|Quinta|Rampa|Regueirão|Rocha|Rossio|Rotunda|Rua|Ruela|Sítio|Telheiro|Terreiro|Transversal|Travessa|Urbanização|Variante|Vereda|Via(-Rápida)?|Viela|Vila)\b|Triste Feia)/][inside("PT")] { 201 199 throwWarning: tr("PORTUGAL- addr:street sem nome de via, errado, abreviado ou com maiúsculas"); 202 200 } 203 201 /* nome de vias sem logradouro correto */ 204 *[highway][highway !~ /bridleway|bus_stop|cycleway|crossing|elevator|footway|give_way|motorway_junction|path|raceway|speed_camera|steps|stop/][name][name !~ /^(?U)((Adro|Alameda|Aldeamento|Alto|Arco|Auto-?[Ee]strada|Autoparque|Avenida|Azinhaga|Bairro|Beco|Boqueirão|Burgal|Cabeço|Cais|Calçad(inh)?a|Caminho|Campo|Campus|Caracol|Carreiro|Casal|Circular|Colónia|Condomínio|Corredor|Costa|Cruz(es)?|Cunhal|Encosta|Escad(a|inha|aria)s?|Escolas|Esplanada|Estacada|Estrada|Grupos de Moradias Populares|Itinerário\s?|Jardi(m|ns)|Ladeira|Largo|Loteamento|Mercado|Miradouro|Monte|Outeirinho|Paço|Parada|Parque|Passeio|Pátio|Poço|Ponte|Porta|Postigo|Pra(ç|cet)a|Quinta|Rampa|Regueirão|Rocha|Rossio|Rotunda|Rua|Ruela|Sítio|Telheiro|Terreiro|Transversal|Travessa|Trilho|Túnel|Urbanização|Variante|Vereda|Via(-Rápida)?|Viaduto|Viela|Vila)\b|Triste Feia)/][name !~ /^(E(\.|\s)?[NRM]|C(\.|\s)?M)(\.|\s)?[1-9]/] { 202 *[highway][highway !~ /bridleway|bus_stop|cycleway|crossing|elevator|footway|give_way|motorway_junction|path|raceway|speed_camera|steps|stop/][name][name !~ /^(?U)((Adro|Alameda|Aldeamento|Alto|Arco|Auto-?[Ee]strada|Autoparque|Avenida|Azinhaga|Bairro|Beco|Boqueirão|Burgal|Cabeço|Cais|Calçad(inh)?a|Caminho|Campo|Campus|Caracol|Carreiro|Casal|Circular|Colónia|Condomínio|Corredor|Costa|Cruz(es)?|Cunhal|Encosta|Escad(a|inha|aria)s?|Escolas|Esplanada|Estacada|Estrada|Grupos de Moradias Populares|Itinerário\s?|Jardi(m|ns)|Ladeira|Largo|Loteamento|Mercado|Miradouro|Monte|Outeirinho|Paço|Parada|Parque|Passeio|Pátio|Poço|Ponte|Porta|Postigo|Pra(ç|cet)a|Quinta|Rampa|Regueirão|Rocha|Rossio|Rotunda|Rua|Ruela|Sítio|Telheiro|Terreiro|Transversal|Travessa|Trilho|Túnel|Urbanização|Variante|Vereda|Via(-Rápida)?|Viaduto|Viela|Vila)\b|Triste Feia)/][name !~ /^(E(\.|\s)?[NRM]|C(\.|\s)?M)(\.|\s)?[1-9]/][inside("PT")] { 205 203 throwWarning: tr("PORTUGAL- {0} sem nome de via, errado, abreviado ou maiúsculas no nome", "{0.key}"); 206 204 } 207 205 /* casos de marcas complicadas em que o melhor é indicar o nome correto na mensagem */ 208 *[name =~ /(?i)(?u)[Dd]ecat?[hl]?on/] { 209 throwWarning: tr("PORTUGAL-Correto é Decathlon");210 } 211 *[name =~ /(?i)(?u)Ma?c(\s[Dd]onald('|\s)?|[Dd]onald\s?)s/] { 212 throwWarning: tr("PORTUGAL-Correto é McDonalds com apóstrofo antes do s");213 } 214 *[name =~ /(?U)\b(Axxa|axx?a)\b/] { 215 throwWarning: tr("PORTUGAL-Correto é Axa");216 } 217 *[name =~ /(?i)(?u)(?U)\b[Ll]evi[ ´]?s\b/] { 218 throwWarning: tr("PORTUGAL-Correto é Levis com apóstrofo antes do s");219 } 220 *[name =~ /[Pp]ingo((D|d| d)ol?ce| Dolce)/] { 221 throwWarning: tr("PORTUGAL-Correto é Pingo Doce");222 } 223 *[name =~ /(?U)\b([Ee][Ll]ecler[kqc]|[Ee]\.[Ll]ecler[kq]|e\.Leclerc|E\.leclerc)/] { 224 throwWarning: tr("PORTUGAL-Correto é E.Leclerc");225 } 226 *[name =~ /(?i)(?u)(Inter?(\s|-)?ma(rche|x[ée]|r?che)|Inter(\s|-)marché)/] { 227 throwWarning: tr("PORTUGAL-Correto é Intermarché");228 } 229 *[name =~ /(?i)(?u)(?U)\bDeca(te?lo[mn]|th?lom|tom)\b/] { 230 throwWarning: tr("PORTUGAL-Correto é Decathlon");231 } 232 *[name =~ /(mini(\s|-)?preço|Mini(\s|-)preço|Mini(\s|-)?Preço|MINI(\s|-)?PREÇO)/] { 233 throwWarning: tr("PORTUGAL-Correto é Minipreço");234 } 235 *[name =~ /(?i)(?u)(^Phone House|[FP]one Hou[zs]e)/] { 236 throwWarning: tr("PORTUGAL-Correto é The Phone House");237 } 238 *[name =~ /Banco Português de Investimento/][!short_name] { 239 throwWarning: tr("PORTUGAL-Falta a etiqueta short_name=BPI");206 *[name =~ /(?i)(?u)[Dd]ecat?[hl]?on/][inside("PT")] { 207 throwWarning: tr("PORTUGAL-Correto é Decathlon"); 208 } 209 *[name =~ /(?i)(?u)Ma?c(\s[Dd]onald('|\s)?|[Dd]onald\s?)s/][inside("PT")] { 210 throwWarning: tr("PORTUGAL-Correto é McDonalds com apóstrofo antes do s"); 211 } 212 *[name =~ /(?U)\b(Axxa|axx?a)\b/][inside("PT")] { 213 throwWarning: tr("PORTUGAL-Correto é Axa"); 214 } 215 *[name =~ /(?i)(?u)(?U)\b[Ll]evi[ ´]?s\b/][inside("PT")] { 216 throwWarning: tr("PORTUGAL-Correto é Levis com apóstrofo antes do s"); 217 } 218 *[name =~ /[Pp]ingo((D|d| d)ol?ce| Dolce)/][inside("PT")] { 219 throwWarning: tr("PORTUGAL-Correto é Pingo Doce"); 220 } 221 *[name =~ /(?U)\b([Ee][Ll]ecler[kqc]|[Ee]\.[Ll]ecler[kq]|e\.Leclerc|E\.leclerc)/][inside("PT")] { 222 throwWarning: tr("PORTUGAL-Correto é E.Leclerc"); 223 } 224 *[name =~ /(?i)(?u)(Inter?(\s|-)?ma(rche|x[ée]|r?che)|Inter(\s|-)marché)/][inside("PT")] { 225 throwWarning: tr("PORTUGAL-Correto é Intermarché"); 226 } 227 *[name =~ /(?i)(?u)(?U)\bDeca(te?lo[mn]|th?lom|tom)\b/][inside("PT")] { 228 throwWarning: tr("PORTUGAL-Correto é Decathlon"); 229 } 230 *[name =~ /(mini(\s|-)?preço|Mini(\s|-)preço|Mini(\s|-)?Preço|MINI(\s|-)?PREÇO)/][inside("PT")] { 231 throwWarning: tr("PORTUGAL-Correto é Minipreço"); 232 } 233 *[name =~ /(?i)(?u)(^Phone House|[FP]one Hou[zs]e)/][inside("PT")] { 234 throwWarning: tr("PORTUGAL-Correto é The Phone House"); 235 } 236 *[name =~ /Banco Português de Investimento/][!short_name][inside("PT")] { 237 throwWarning: tr("PORTUGAL-Falta a etiqueta short_name=BPI"); 240 238 fixAdd: "short_name=BPI"; 241 239 } 242 *[name =~ /Caixa Geral de Depósitos/][!short_name] { 243 throwWarning: tr("PORTUGAL-Falta a etiqueta short_name=CGD");240 *[name =~ /Caixa Geral de Depósitos/][!short_name][inside("PT")] { 241 throwWarning: tr("PORTUGAL-Falta a etiqueta short_name=CGD"); 244 242 fixAdd: "short_name=CGD"; 245 243 } 246 *[name =~ /Banco Espírito Santo/][!short_name] { 247 throwWarning: tr("PORTUGAL-Falta a etiqueta short_name=BES");244 *[name =~ /Banco Espírito Santo/][!short_name][inside("PT")] { 245 throwWarning: tr("PORTUGAL-Falta a etiqueta short_name=BES"); 248 246 fixAdd: "short_name=BES"; 249 247 } 250 *[name =~ /Banco Bilbao Vizcaya Argentaria/][!short_name] { 251 throwWarning: tr("PORTUGAL-Falta a etiqueta short_name=BBVA");248 *[name =~ /Banco Bilbao Vizcaya Argentaria/][!short_name][inside("PT")] { 249 throwWarning: tr("PORTUGAL-Falta a etiqueta short_name=BBVA"); 252 250 fixAdd: "short_name=BBVA"; 253 251 } 254 *[name =~ /Guarda Nacional Republicana/][!short_name] { 255 throwWarning: tr("PORTUGAL-Falta a etiqueta short_name=GNR");252 *[name =~ /Guarda Nacional Republicana/][!short_name][inside("PT")] { 253 throwWarning: tr("PORTUGAL-Falta a etiqueta short_name=GNR"); 256 254 fixAdd: "short_name=GNR"; 257 255 } 258 *[name =~ /Polícia de Segurança Pública/][!short_name] { 259 throwWarning: tr("PORTUGAL-Falta a etiqueta short_name=PSP");256 *[name =~ /Polícia de Segurança Pública/][!short_name][inside("PT")] { 257 throwWarning: tr("PORTUGAL-Falta a etiqueta short_name=PSP"); 260 258 fixAdd: "short_name=PSP"; 261 259 } 262 *[amenity = police][name =~ /^(?i)(?u)P(\.\s?|\s)?S(\.\s?|\s)?P(\.\s?|\s)?$/] { 263 throwWarning: tr("PORTUGAL-Nome abreviado de Polícia de Segurança Pública");264 fixAdd: "name=Polícia de Segurança Pública";265 fixAdd: "short_name=PSP";266 } 267 *[amenity = police][name =~ /^(?i)(?u)G(\.\s?|\s)?N(\.\s?|\s)?R(\.\s?|\s)?$/] { 268 throwWarning: tr("PORTUGAL-Nome abreviado de Guarda Nacional Republicana");269 fixAdd: "name=Guarda Nacional Republicana";270 fixAdd: "short_name=GNR";271 } 272 *[amenity = bank][name =~ /^(?i)(?u)(Banco )?C(\.\s?|\s)?G(\.\s?|\s)?D(\.\s?|\s)?$/] { 273 throwWarning: tr("PORTUGAL-Nome abreviado de Caixa Geral de Depósitos");274 fixAdd: "name=Caixa Geral de Depósitos";275 fixAdd: "short_name=CGD";276 } 277 *[amenity = bank][name =~ /(?i)(?u)Cai((cha) Ge(ne)?ral (de )?Dep[óo]sito|xa Ge(ne)?ral (de )?Deposito)/] { 278 throwWarning: tr("PORTUGAL-O correto é Caixa Geral de Depósitos");279 } 280 *[amenity =~ /bank|atm/][operator =~ /^(?i)(?u)(Banco )?C(\.\s?|\s)?G(\.\s?|\s)?D(\.\s?|\s)?$/] { 281 throwWarning: tr("PORTUGAL-operator abreviado de Caixa Geral de Depósitos");282 fixAdd: "operator=Caixa Geral de Depósitos, S.A.";283 } 284 *[amenity = bank][name =~ /^(?i)(?u)(Banco )?B(\.\s?|\s)?P(\.\s?|\s)?I(\.\s?|\s)?$/] { 285 throwWarning: tr("PORTUGAL-Nome abreviado de Banco Português de Investimento");286 fixAdd: "name=Banco Português de Investimento";287 fixAdd: "short_name=BPI";288 } 289 *[amenity = bank][name =~ /^(?i)(?u)(Banco )?B(\.\s?|\s)?E(\.\s?|\s)?S(\.\s?|\s)?$/] { 290 throwWarning: tr("PORTUGAL-Nome abreviado de Banco Espírito Santo");291 fixAdd: "name=Banco Espírito Santo";292 fixAdd: "short_name=BES";293 } 294 *[amenity = bank][name =~ /^(?i)(?u)(Banco )?B(\.\s?|\s)?B(\.\s?|\s)?V(\.\s?|\s)?A(\.\s?|\s)?$/] { 295 throwWarning: tr("PORTUGAL-Nome abreviado de Banco Bilbao Vizcaya Argentaria");296 fixAdd: "name=Banco Bilbao Vizcaya Argentaria";297 fixAdd: "short_name=BBVA";298 } 299 *[amenity = bank][name =~ /^(?i)(?u)(Banco )?B(\.\s?|\s)?C(\.\s?|\s)?P(\.\s?|\s)?$/], 300 *[amenity = bank][name =~ /^(Banco )?([Mm]ill?en?nium[Bb][Cc][Pp]|[Mm]ill?enn?i[ou]m?( B[Cc][Pp])?|Mil(en|le|e)nium BCP)$/] { 301 throwWarning: tr("PORTUGAL-Nome abreviado ou errado de Millennium bcp");302 fixAdd: "name=Millennium bcp";303 fixAdd: "alt_name=Banco Comercial Português";304 } 305 *[name =~ /^Banco Comercial Português$/] { 306 throwWarning: tr("PORTUGAL-O correto é Millennium bcp");307 fixAdd: "name=Millennium bcp";308 fixAdd: "old_name=Banco Comercial Português";309 } 310 *[alt_name =~ /^Banco Comercial Português$/] { 311 throwWarning: tr("PORTUGAL-Banco Comercial Português deve estar em old_name");312 fixChangeKey: "alt_name => old_name";313 } 314 *[amenity = bank][name =~ /^(?i)(?u)(Banco )?(Santander|Tott?a|SantanderTott?a|Tott?a\s?Santander)$/] { 315 throwWarning: tr("PORTUGAL-O correto é Santander Totta");316 fixAdd: "name=Santander Totta";317 } 318 *[name =~ /(?i)(?u)(?U)Benett?o[mn]\b/][name !~ /(?U)\bUnited Colors\b/] { 319 throwWarning: tr("PORTUGAL-O correto é United Colors of Benetton");320 } 321 *[amenity = bank][name =~ /^(?i)(?u)(Banco )?BANIF$/] { 322 throwWarning: tr("PORTUGAL-Nome abreviado de Banco Internacional do Funchal");323 fixAdd: "name=Banco Internacional do Funchal";324 fixAdd: "short_name=Banif";325 } 326 *[/^(name|name:pt)$/ =~ /^(?i)(?u)(?U)((Loja (Social|Solid[áa]ria)|EMA[ÚU]S|\bREMAR\b)|EMA[ÚU]S|\bREMAR\b)$/][shop !~ /charity/][!highway][!railway][!boundary][!place] { 260 *[amenity = police][name =~ /^(?i)(?u)P(\.\s?|\s)?S(\.\s?|\s)?P(\.\s?|\s)?$/][inside("PT")] { 261 throwWarning: tr("PORTUGAL-Nome abreviado de Polícia de Segurança Pública"); 262 fixAdd: "name=Polícia de Segurança Pública"; 263 fixAdd: "short_name=PSP"; 264 } 265 *[amenity = police][name =~ /^(?i)(?u)G(\.\s?|\s)?N(\.\s?|\s)?R(\.\s?|\s)?$/][inside("PT")] { 266 throwWarning: tr("PORTUGAL-Nome abreviado de Guarda Nacional Republicana"); 267 fixAdd: "name=Guarda Nacional Republicana"; 268 fixAdd: "short_name=GNR"; 269 } 270 *[amenity = bank][name =~ /^(?i)(?u)(Banco )?C(\.\s?|\s)?G(\.\s?|\s)?D(\.\s?|\s)?$/][inside("PT")] { 271 throwWarning: tr("PORTUGAL-Nome abreviado de Caixa Geral de Depósitos"); 272 fixAdd: "name=Caixa Geral de Depósitos"; 273 fixAdd: "short_name=CGD"; 274 } 275 *[amenity = bank][name =~ /(?i)(?u)Cai((cha) Ge(ne)?ral (de )?Dep[óo]sito|xa Ge(ne)?ral (de )?Deposito)/][inside("PT")] { 276 throwWarning: tr("PORTUGAL-O correto é Caixa Geral de Depósitos"); 277 } 278 *[amenity =~ /bank|atm/][operator =~ /^(?i)(?u)(Banco )?C(\.\s?|\s)?G(\.\s?|\s)?D(\.\s?|\s)?$/][inside("PT")] { 279 throwWarning: tr("PORTUGAL-operator abreviado de Caixa Geral de Depósitos"); 280 fixAdd: "operator=Caixa Geral de Depósitos, S.A."; 281 } 282 *[amenity = bank][name =~ /^(?i)(?u)(Banco )?B(\.\s?|\s)?P(\.\s?|\s)?I(\.\s?|\s)?$/][inside("PT")] { 283 throwWarning: tr("PORTUGAL-Nome abreviado de Banco Português de Investimento"); 284 fixAdd: "name=Banco Português de Investimento"; 285 fixAdd: "short_name=BPI"; 286 } 287 *[amenity = bank][name =~ /^(?i)(?u)(Banco )?B(\.\s?|\s)?E(\.\s?|\s)?S(\.\s?|\s)?$/][inside("PT")] { 288 throwWarning: tr("PORTUGAL-Nome abreviado de Banco Espírito Santo"); 289 fixAdd: "name=Banco Espírito Santo"; 290 fixAdd: "short_name=BES"; 291 } 292 *[amenity = bank][name =~ /^(?i)(?u)(Banco )?B(\.\s?|\s)?B(\.\s?|\s)?V(\.\s?|\s)?A(\.\s?|\s)?$/][inside("PT")] { 293 throwWarning: tr("PORTUGAL-Nome abreviado de Banco Bilbao Vizcaya Argentaria"); 294 fixAdd: "name=Banco Bilbao Vizcaya Argentaria"; 295 fixAdd: "short_name=BBVA"; 296 } 297 *[amenity = bank][name =~ /^(?i)(?u)(Banco )?B(\.\s?|\s)?C(\.\s?|\s)?P(\.\s?|\s)?$/][inside("PT")], 298 *[amenity = bank][name =~ /^(Banco )?([Mm]ill?en?nium[Bb][Cc][Pp]|[Mm]ill?enn?i[ou]m?( B[Cc][Pp])?|Mil(en|le|e)nium BCP)$/][inside("PT")] { 299 throwWarning: tr("PORTUGAL-Nome abreviado ou errado de Millennium bcp"); 300 fixAdd: "name=Millennium bcp"; 301 fixAdd: "alt_name=Banco Comercial Português"; 302 } 303 *[name =~ /^Banco Comercial Português$/][inside("PT")] { 304 throwWarning: tr("PORTUGAL-O correto é Millennium bcp"); 305 fixAdd: "name=Millennium bcp"; 306 fixAdd: "old_name=Banco Comercial Português"; 307 } 308 *[alt_name =~ /^Banco Comercial Português$/][inside("PT")] { 309 throwWarning: tr("PORTUGAL-Banco Comercial Português deve estar em old_name"); 310 fixChangeKey: "alt_name => old_name"; 311 } 312 *[amenity = bank][name =~ /^(?i)(?u)(Banco )?(Santander|Tott?a|SantanderTott?a|Tott?a\s?Santander)$/][inside("PT")] { 313 throwWarning: tr("PORTUGAL-O correto é Santander Totta"); 314 fixAdd: "name=Santander Totta"; 315 } 316 *[name =~ /(?i)(?u)(?U)Benett?o[mn]\b/][name !~ /(?U)\bUnited Colors\b/][inside("PT")] { 317 throwWarning: tr("PORTUGAL-O correto é United Colors of Benetton"); 318 } 319 *[amenity = bank][name =~ /^(?i)(?u)(Banco )?BANIF$/][inside("PT")] { 320 throwWarning: tr("PORTUGAL-Nome abreviado de Banco Internacional do Funchal"); 321 fixAdd: "name=Banco Internacional do Funchal"; 322 fixAdd: "short_name=Banif"; 323 } 324 *[/^(name|name:pt)$/ =~ /^(?i)(?u)(?U)((Loja (Social|Solid[áa]ria)|EMA[ÚU]S|\bREMAR\b)|EMA[ÚU]S|\bREMAR\b)$/][shop !~ /charity/][!highway][!railway][!boundary][!place][inside("PT")] { 327 325 throwWarning: tr("PORTUGAL-Provavelmente devia ter shop=charity, caso tenha outra, adicionar esta também"); 328 326 } 329 *[/^(name|name:pt)$/ =~ /^Alfarrabista/][shop=books][!second_hand] { 327 *[/^(name|name:pt)$/ =~ /^Alfarrabista/][shop=books][!second_hand][inside("PT")] { 330 328 throwWarning: tr("PORTUGAL-Alfarrabista deve ter second_hand=yes ou second_hand=only se vender apenas livros em 2ª mão"); 331 329 } 332 *[place = city][!name], 333 *[place = town][!name], 334 *[place = village][!name] { 330 *[place = city][!name][inside("PT")], 331 *[place = town][!name][inside("PT")], 332 *[place = village][!name][inside("PT")] { 335 333 throwWarning: tr("PORTUGAL- {0} sem nome", "{0.value}"); 336 334 } 337 node[name =~ /^(?i)(?u)(?U)\b(Academia da Força Aérea|Academia Militar|Academia Nacional Superior|Conservatório Superior|Faculdade|Escola d[eo] Serviço de Saúde Militar|Escola Náutica Infante|Escola Naval|Escola Superior|Escola Universitária|Instituto de Ciências Biomédicas|Instituto de Engenharia|Instituto Militar|Instituto Politécnico|Instituto Português de Administração|Instituto Superior|Instituto Universitário|Universidade)\b/][amenity][amenity !~ /^(university|restaurant|cafe|pub|bar)$/][!highway][!railway][!boundary][!place][!shop], 338 node[name =~ /^(?i)(?u)(?U)\b(Academia da Força Aérea|Academia Militar|Academia Nacional Superior|Conservatório Superior|Faculdade|Escola d[eo] Serviço de Saúde Militar|Escola Náutica Infante|Escola Naval|Escola Superior|Escola Universitária|Instituto de Ciências Biomédicas|Instituto de Engenharia|Instituto Militar|Instituto Politécnico|Instituto Português de Administração|Instituto Superior|Instituto Universitário|Universidade)\b/][!amenity][!highway][!railway][!boundary][!place][!shop], 339 way[name =~ /^(?i)(?u)(?U)\b(Academia da Força Aérea|Academia Militar|Academia Nacional Superior|Conservatório Superior|Faculdade|Escola d[eo] Serviço de Saúde Militar|Escola Náutica Infante|Escola Naval|Escola Superior|Escola Universitária|Instituto de Ciências Biomédicas|Instituto de Engenharia|Instituto Militar|Instituto Politécnico|Instituto Português de Administração|Instituto Superior|Instituto Universitário|Universidade)\b/][amenity][amenity !~ /^(university|restaurant|cafe|pub|bar)$/][!highway][!railway][!boundary][!place][!shop], 340 way[name =~ /^(?i)(?u)(?U)\b(Academia da Força Aérea|Academia Militar|Academia Nacional Superior|Conservatório Superior|Faculdade|Escola d[eo] Serviço de Saúde Militar|Escola Náutica Infante|Escola Naval|Escola Superior|Escola Universitária|Instituto de Ciências Biomédicas|Instituto de Engenharia|Instituto Militar|Instituto Politécnico|Instituto Português de Administração|Instituto Superior|Instituto Universitário|Universidade)\b/][!amenity][!highway][!railway][!boundary][!place][!shop] { 335 node[name =~ /^(?i)(?u)(?U)\b(Academia da Força Aérea|Academia Militar|Academia Nacional Superior|Conservatório Superior|Faculdade|Escola d[eo] Serviço de Saúde Militar|Escola Náutica Infante|Escola Naval|Escola Superior|Escola Universitária|Instituto de Ciências Biomédicas|Instituto de Engenharia|Instituto Militar|Instituto Politécnico|Instituto Português de Administração|Instituto Superior|Instituto Universitário|Universidade)\b/][amenity][amenity !~ /^(university|restaurant|cafe|pub|bar)$/][!highway][!railway][!boundary][!place][!shop][inside("PT")], 336 node[name =~ /^(?i)(?u)(?U)\b(Academia da Força Aérea|Academia Militar|Academia Nacional Superior|Conservatório Superior|Faculdade|Escola d[eo] Serviço de Saúde Militar|Escola Náutica Infante|Escola Naval|Escola Superior|Escola Universitária|Instituto de Ciências Biomédicas|Instituto de Engenharia|Instituto Militar|Instituto Politécnico|Instituto Português de Administração|Instituto Superior|Instituto Universitário|Universidade)\b/][!amenity][!highway][!railway][!boundary][!place][!shop][inside("PT")], 337 way[name =~ /^(?i)(?u)(?U)\b(Academia da Força Aérea|Academia Militar|Academia Nacional Superior|Conservatório Superior|Faculdade|Escola d[eo] Serviço de Saúde Militar|Escola Náutica Infante|Escola Naval|Escola Superior|Escola Universitária|Instituto de Ciências Biomédicas|Instituto de Engenharia|Instituto Militar|Instituto Politécnico|Instituto Português de Administração|Instituto Superior|Instituto Universitário|Universidade)\b/][amenity][amenity !~ /^(university|restaurant|cafe|pub|bar)$/][!highway][!railway][!boundary][!place][!shop][inside("PT")], 338 way[name =~ /^(?i)(?u)(?U)\b(Academia da Força Aérea|Academia Militar|Academia Nacional Superior|Conservatório Superior|Faculdade|Escola d[eo] Serviço de Saúde Militar|Escola Náutica Infante|Escola Naval|Escola Superior|Escola Universitária|Instituto de Ciências Biomédicas|Instituto de Engenharia|Instituto Militar|Instituto Politécnico|Instituto Português de Administração|Instituto Superior|Instituto Universitário|Universidade)\b/][!amenity][!highway][!railway][!boundary][!place][!shop][inside("PT")] { 341 339 throwWarning: tr("PORTUGAL-Provavelmente devia ter amenity=university"); 342 340 } 343 *[name =~ /^(?i)(?u)(?U)\b(Escola|Agrupamento de Escolas|Liceu|Centro de Formação Profissional)\b/][name !~ /^(?i)(?u)(?U)\b(Escola d[eo] Serviço de Saúde Militar|Escola Náutica Infante|Escola Naval|Escola Superior|Escola Universitária|Escola (de )?Condução)\b/][amenity][amenity =~ /^(university|college|kindergarten|driving_school)$/][!highway][!railway][!boundary][!place][!shop], 344 *[name =~ /^(?i)(?u)(?U)\b(Escola|Agrupamento de Escolas|Liceu|Centro de Formação Profissional)\b/][name !~ /^(?i)(?u)(?U)\b(Escola d[eo] Serviço de Saúde Militar|Escola Náutica Infante|Escola Naval|Escola Superior|Escola Universitária|Escola (de )?Condução)\b/][!amenity][!highway][!railway][!boundary][!place][!shop] { 341 *[name =~ /^(?i)(?u)(?U)\b(Escola|Agrupamento de Escolas|Liceu|Centro de Formação Profissional)\b/][name !~ /^(?i)(?u)(?U)\b(Escola d[eo] Serviço de Saúde Militar|Escola Náutica Infante|Escola Naval|Escola Superior|Escola Universitária|Escola (de )?Condução)\b/][amenity][amenity =~ /^(university|college|kindergarten|driving_school)$/][!highway][!railway][!boundary][!place][!shop][inside("PT")], 342 *[name =~ /^(?i)(?u)(?U)\b(Escola|Agrupamento de Escolas|Liceu|Centro de Formação Profissional)\b/][name !~ /^(?i)(?u)(?U)\b(Escola d[eo] Serviço de Saúde Militar|Escola Náutica Infante|Escola Naval|Escola Superior|Escola Universitária|Escola (de )?Condução)\b/][!amenity][!highway][!railway][!boundary][!place][!shop][inside("PT")] { 345 343 throwWarning: tr("PORTUGAL-Provavelmente devia ter amenity=school"); 346 344 } 347 *[name =~ /^(?i)(?u)(?U)\b(Colégio|Internato|Real Colégio)\b/][amenity][amenity =~ /^(university|school|kindergarten|driving_school)$/][!highway][!railway][!boundary][!place][!shop], 348 *[name =~ /^(?i)(?u)(?U)\b(Colégio|Internato|Real Colégio)\b/][!amenity][!highway][!railway][!boundary][!place][!shop] { 345 *[name =~ /^(?i)(?u)(?U)\b(Colégio|Internato|Real Colégio)\b/][amenity][amenity =~ /^(university|school|kindergarten|driving_school)$/][!highway][!railway][!boundary][!place][!shop][inside("PT")], 346 *[name =~ /^(?i)(?u)(?U)\b(Colégio|Internato|Real Colégio)\b/][!amenity][!highway][!railway][!boundary][!place][!shop][inside("PT")] { 349 347 throwWarning: tr("PORTUGAL-Provavelmente devia ter amenity=college"); 350 348 } 351 *[name =~ /^(?i)(?u)(?U)\b(creche|jardim infantil|jardim de infância|infantário|externato|pré-primária)\b/][amenity][amenity =~ /^(university|school|college|driving_school)$/][!highway][!railway][!boundary][!place][!shop], 352 *[name =~ /^(?i)(?u)(?U)\b(creche|jardim infantil|jardim de infância|infantário|externato|pré-primária)\b/][!amenity][!highway][!railway][!boundary][!place][!shop] { 349 *[name =~ /^(?i)(?u)(?U)\b(creche|jardim infantil|jardim de infância|infantário|externato|pré-primária)\b/][amenity][amenity =~ /^(university|school|college|driving_school)$/][!highway][!railway][!boundary][!place][!shop][inside("PT")], 350 *[name =~ /^(?i)(?u)(?U)\b(creche|jardim infantil|jardim de infância|infantário|externato|pré-primária)\b/][!amenity][!highway][!railway][!boundary][!place][!shop][inside("PT")] { 353 351 throwWarning: tr("PORTUGAL-Provavelmente devia ter amenity=kindergarten"); 354 352 } 355 *[name =~ /^(?i)(?u)(?U)\bEscola de Condução\b/][amenity][amenity =~ /^(university|school|college|kindergarten)$/][!highway][!railway][!boundary][!place][!shop], 356 *[name =~ /^(?i)(?u)(?U)\bEscola de Condução\b/][!amenity][!highway][!railway][!boundary][!place][!shop] { 353 *[name =~ /^(?i)(?u)(?U)\bEscola de Condução\b/][amenity][amenity =~ /^(university|school|college|kindergarten)$/][!highway][!railway][!boundary][!place][!shop][inside("PT")], 354 *[name =~ /^(?i)(?u)(?U)\bEscola de Condução\b/][!amenity][!highway][!railway][!boundary][!place][!shop][inside("PT")] { 357 355 throwWarning: tr("PORTUGAL-Provavelmente devia ter amenity=driving_school"); 358 356 } 359 *[amenity = college] ∈ *[amenity = college] { 357 *[amenity = college][inside("PT")] ∈ *[amenity = college] { 360 358 throwWarning: tr("PORTUGAL- {0} dentro de {1}", "amenity=college", "{0.tag}"); 361 359 } 362 *[landuse = cemetery] ∈ *[landuse = cemetery] { 360 *[landuse = cemetery][inside("PT")] ∈ *[landuse = cemetery] { 363 361 throwWarning: tr("PORTUGAL- landuse=cemetery dentro de landuse = cemetery"); 364 362 } 365 *[shop] ∈ *[shop][shop !~ /mall|department_store|supermarket/][amenity!=fuel] { 363 *[shop][inside("PT")] ∈ *[shop][shop !~ /mall|department_store|supermarket/][amenity!=fuel] { 366 364 throwWarning: tr("PORTUGAL- shop dentro de shop"); 367 365 } 368 *[shop=supermarket] ∈ *[shop=supermarket] { 366 *[shop=supermarket][inside("PT")] ∈ *[shop=supermarket] { 369 367 throwWarning: tr("PORTUGAL- shop=supermarket dentro de shop=supermarket"); 370 368 } 371 *[amenity=police] ∈ *[amenity=police] { 369 *[amenity=police][inside("PT")] ∈ *[amenity=police] { 372 370 throwWarning: tr("PORTUGAL- amenity=police dentro de amenity=police"); 373 371 } 374 *[/^(name|name:pt)$/ =~ /(?i)(?u)(?U)\b(Seguros|Ass?eguradora?|Seguradora|Açoreana|Aegon|Allianz|AXA|Bonança|Fidelidade|Generali|Groupama|Liberty|Mapfre|Médis|Multicare|Tranquilidade|Zurich)\b/][name][office != insurance][!highway] { 372 *[/^(name|name:pt)$/ =~ /(?i)(?u)(?U)\b(Seguros|Ass?eguradora?|Seguradora|Açoreana|Aegon|Allianz|AXA|Bonança|Fidelidade|Generali|Groupama|Liberty|Mapfre|Médis|Multicare|Tranquilidade|Zurich)\b/][name][office != insurance][!highway][inside("PT")] { 375 373 throwWarning: tr("PORTUGAL-Seguradora e Mediador de Seguros deve ter office=insurance"); 376 374 } 377 *[/^(name|name:pt)$/ =~ /(?i)(?u)(?U)\b(Stande?|Automóveis|Concessionário)\b/][shop != car] { 375 *[/^(name|name:pt)$/ =~ /(?i)(?u)(?U)\b(Stande?|Automóveis|Concessionário)\b/][shop != car][inside("PT")] { 378 376 throwWarning: tr("PORTUGAL-Stande de Automóveis deve ter shop=car"); 379 377 } 380 *[/^(name|name:pt)$/ =~ /(?i)(?u)(Repara(ção|ções|dor|dores) (de )? Auto(móveis)?|Car Service|Oficina)/][name][shop != car_repair][!highway][!boundary][!place][!amenity] { 378 *[/^(name|name:pt)$/ =~ /(?i)(?u)(Repara(ção|ções|dor|dores) (de )? Auto(móveis)?|Car Service|Oficina)/][name][shop != car_repair][!highway][!boundary][!place][!amenity][inside("PT")] { 381 379 throwWarning: tr("PORTUGAL-Reparador de Automóveis deve ter shop=car_repair"); 382 380 } 383 *[/^(name|name:pt)$/ =~ /(?i)(?u)Lavagem/][name][amenity != car_wash] { 381 *[/^(name|name:pt)$/ =~ /(?i)(?u)Lavagem/][name][amenity != car_wash][inside("PT")] { 384 382 throwWarning: tr("PORTUGAL-Local de Lavagem de Automóveis deve ter amenity=car_wash"); 385 383 } 386 *[/^(name|name:pt)$/ =~ /(?i)(?u)Park Meter/][name][amenity != vending_machine] { 384 *[/^(name|name:pt)$/ =~ /(?i)(?u)Park Meter/][name][amenity != vending_machine][inside("PT")] { 387 385 throwWarning: tr("PORTUGAL-Máquina de bilhetes de parque de estacionamento deve ter amenity=vending_machine e vending=parking_tickets"); 388 386 } 389 *[/^(name|name:pt)$/ =~ /^(?i)(?u)(Hospital|Centro Hospitalar|(Centro|Extensão) (de )?Saúde) /][name][building][building != hospital] { 387 *[/^(name|name:pt)$/ =~ /^(?i)(?u)(Hospital|Centro Hospitalar|(Centro|Extensão) (de )?Saúde) /][name][building][building != hospital][inside("PT")] { 390 388 throwWarning: tr("PORTUGAL-Edifício de Hospital ou Centro de Saúde deve ter building=hospital"); 391 389 } 392 *[/^(name|name:pt)$/ =~ /^(?i)(?u)(Hospital|Centro Hospitalar|(Centro|Extensão) (de )?Saúde) /][name][amenity][amenity != hospital][/^(name|name:pt)$/ !~ /(?i)(?u)(?U)\b(Parque|Estacionamento)\b/] { 390 *[/^(name|name:pt)$/ =~ /^(?i)(?u)(Hospital|Centro Hospitalar|(Centro|Extensão) (de )?Saúde) /][name][amenity][amenity != hospital][/^(name|name:pt)$/ !~ /(?i)(?u)(?U)\b(Parque|Estacionamento)\b/][inside("PT")] { 393 391 throwWarning: tr("PORTUGAL-Hospital e Centro de Saúde deve ter amenity=hospital"); 394 392 } 395 *[/^(name|name:pt)$/ =~ /^(?i)(?u)(Cabine|Posto de Transformador) ((da )? EDP)/][name][building != transformer_tower], 396 *[/^(name|name:pt)$/ =~ /^(?i)(?u)(Cabine|Posto de Transformador) ((da )? EDP)/][name][power != substation], 397 *[/^(name|name:pt)$/ =~ /^(?i)(?u)(Cabine|Posto de Transformador) ((da )? EDP)/][name][substation != minor_distribution], 398 *[building = transformer_tower][name][power != substation], 399 *[building = transformer_tower][name][substation != minor_distribution] { 393 *[/^(name|name:pt)$/ =~ /^(?i)(?u)(Cabine|Posto de Transformador) ((da )? EDP)/][name][building != transformer_tower][inside("PT")], 394 *[/^(name|name:pt)$/ =~ /^(?i)(?u)(Cabine|Posto de Transformador) ((da )? EDP)/][name][power != substation][inside("PT")], 395 *[/^(name|name:pt)$/ =~ /^(?i)(?u)(Cabine|Posto de Transformador) ((da )? EDP)/][name][substation != minor_distribution][inside("PT")], 396 *[building = transformer_tower][name][power != substation][inside("PT")], 397 *[building = transformer_tower][name][substation != minor_distribution][inside("PT")] { 400 398 throwWarning: tr("PORTUGAL-Cabine da EDP deve ter building=transformer_tower power=substation e substation=minor_distribution"); 401 399 } 402 *[/^(name|name:pt)$/ =~ /^(?i)(?u)Estação (de Comboios|Ferroviária|(da)? CP|(dos )?Caminhos de Ferro) /][name][building != train_station][public_transport != station] { 400 *[/^(name|name:pt)$/ =~ /^(?i)(?u)Estação (de Comboios|Ferroviária|(da)? CP|(dos )?Caminhos de Ferro) /][name][building != train_station][public_transport != station][inside("PT")] { 403 401 throwWarning: tr("PORTUGAL-Estação de Comboios sem building=train_station ou public_transport=station"); 404 402 } 405 *[/^(name|name:pt)$/ =~ /(?i)(?u)((Encerr|Fech)(ou|ado)|Desocupad[ao])/], 406 *[description =~ /(?i)(?u)((Encerr|Fech)(ou|ado)|Desocupad[ao])/], 407 *[note =~ /(?i)(?u)((Encerr|Fech)(ou|ado)|Desocupad[ao])/], 408 *[designation =~ /(?i)(?u)((Encerr|Fech)(ou|ado)|Desocupad[ao])/] { 403 *[/^(name|name:pt)$/ =~ /(?i)(?u)((Encerr|Fech)(ou|ado)|Desocupad[ao])/][inside("PT")], 404 *[description =~ /(?i)(?u)((Encerr|Fech)(ou|ado)|Desocupad[ao])/][inside("PT")], 405 *[note =~ /(?i)(?u)((Encerr|Fech)(ou|ado)|Desocupad[ao])/][inside("PT")], 406 *[designation =~ /(?i)(?u)((Encerr|Fech)(ou|ado)|Desocupad[ao])/][inside("PT")] { 409 407 throwWarning: tr("PORTUGAL-Estabelecimento encerrado deve ter disused:shop=yes, disused:amenity=bar..."); 410 408 } 411 *[/^(name|name:pt)$/ =~ /(?i)(?u)(Abandon(ad[ao]|o)|Degrada(d[ao]|ção))/], 412 *[description =~ /(?i)(?u)(Abandon(ad[ao]|o)|Degrada(d[ao]|ção))/], 413 *[note =~ /(?i)(?u)(Abandon(ad[ao]|o)|Degrada(d[ao]|ção))/], 414 *[designation =~ /(?i)(?u)(Abandon(ad[ao]|o)|Degrada(d[ao]|ção))/] { 409 *[/^(name|name:pt)$/ =~ /(?i)(?u)(Abandon(ad[ao]|o)|Degrada(d[ao]|ção))/][inside("PT")], 410 *[description =~ /(?i)(?u)(Abandon(ad[ao]|o)|Degrada(d[ao]|ção))/][inside("PT")], 411 *[note =~ /(?i)(?u)(Abandon(ad[ao]|o)|Degrada(d[ao]|ção))/][inside("PT")], 412 *[designation =~ /(?i)(?u)(Abandon(ad[ao]|o)|Degrada(d[ao]|ção))/][inside("PT")] { 415 413 throwWarning: tr("PORTUGAL-Edifício degradado deve ter abandoned:building=yes ou abandoned:shop=yes..."); 416 414 } 417 *[/name|description|note|designation/ =~ /(?i)(?u)((Equipamentos?|Materia(is|l)) Hospitalar|instrumentos médicos)/][shop != medical_supply] { 415 *[/name|description|note|designation/ =~ /(?i)(?u)((Equipamentos?|Materia(is|l)) Hospitalar|instrumentos médicos)/][shop != medical_supply][inside("PT")] { 418 416 throwWarning: tr("PORTUGAL-Empresa de venda de material hospitalar deve ter shop=medical_supply"); 419 417 } 420 *[/^(name|name:pt)$/ =~ /(?i)(?u)Noiv[ao]s/][shop=clothes][!clothes] { 418 *[/^(name|name:pt)$/ =~ /(?i)(?u)Noiv[ao]s/][shop=clothes][!clothes][inside("PT")] { 421 419 throwWarning: tr("PORTUGAL-Loja de roupa para noivas deve ter clothes=wedding"); 422 420 } 423 *[/^(name|name:pt|note)$/ =~ /(?i)(?u)(?U)\b(Zara Kids|Lanidor J[úu]nior|Roupa (de |para )?Crianças?)\b/][shop=clothes][!clothes] { 421 *[/^(name|name:pt|note)$/ =~ /(?i)(?u)(?U)\b(Zara Kids|Lanidor J[úu]nior|Roupa (de |para )?Crianças?)\b/][shop=clothes][!clothes][inside("PT")] { 424 422 throwWarning: tr("PORTUGAL-Loja de roupa para criança deve ter clothes=children"); 425 423 } 426 *[/^(name|name:pt|note)$/ =~ /(?i)(?u)(?U)\b(Roupa (de |para )?B[ée]b[ée]s?)\b/][shop=clothes][!clothes] { 424 *[/^(name|name:pt|note)$/ =~ /(?i)(?u)(?U)\b(Roupa (de |para )?B[ée]b[ée]s?)\b/][shop=clothes][!clothes][inside("PT")] { 427 425 throwWarning: tr("PORTUGAL-Loja de roupa para bebé deve ter clothes=babies"); 428 426 } 429 *[/^(name|name:pt)$/ =~ /(?i)(?u)(?U)\b(Salsa|Levi's|Levi Strauss|Pepe Jeans|Lee|W52)\b/][shop=clothes][!clothes] { 427 *[/^(name|name:pt)$/ =~ /(?i)(?u)(?U)\b(Salsa|Levi's|Levi Strauss|Pepe Jeans|Lee|W52)\b/][shop=clothes][!clothes][inside("PT")] { 430 428 throwWarning: tr("PORTUGAL-Loja essencialmente de jeans deve ter clothes=denim"); 431 429 } 432 *[/^(name|name:pt)$/ =~ /(?i)(?u)(?U)\b(lingerie|women'secret|Calzedonia|Intimissimi|Loja das Meias)\b/][shop=clothes][!clothes] { 430 *[/^(name|name:pt)$/ =~ /(?i)(?u)(?U)\b(lingerie|women'secret|Calzedonia|Intimissimi|Loja das Meias)\b/][shop=clothes][!clothes][inside("PT")] { 433 431 throwWarning: tr("PORTUGAL-Loja de roupa interior,meias,etc. deve ter clothes=underwear"); 434 432 } 435 *["addr:country"]["addr:country" !~ /^PT$/] { 433 *["addr:country"]["addr:country" !~ /^PT$/][inside("PT")] { 436 434 throwWarning: tr("PORTUGAL-O país na morada deve ter o código PT"); 437 435 } 438 *[leisure][/^(name|name:pt)$/ =~ /^(?i)(?u)(campo|est(á|a)dio) (de (futebol|desportos?)|desportivo)?$/], 439 *[leisure][/^(name|name:pt)$/ =~ /^(?i)(?u)(estádio |Pavilhão )?Gimnodesportivo$/], 440 *[leisure=playground][/^(name|name:pt)$/ =~ /^(?i)(?u)Parque Infantil$/], 441 *[highway = bus_stop][/^(name|name:pt)$/ =~ /^(?i)(?u)(paragem( d(e|os) autocarros?)|bus stop)?$/], 442 *[highway = track][/^(name|name:pt)$/ =~ /^(?i)(?u)Trilhos?$/], 443 *[highway = path][/^(name|name:pt)$/ =~ /^(?i)(?u)Trilhos?$/], 444 *[highway][/^(name|name:pt)$/ =~ /^(?i)(?u)Estrad[ãa]o( de Terra)?$/], 445 *[natural = tree][/^(name|name:pt)$/ =~ /^(?i)(?u)[ÁA]rvores?$/], 446 *[amenity = drinking_water][/^(name|name:pt)$/ =~ /^(?i)(?u)(Fonte|Bebedouro)s?$/], 447 *[amenity = post_office][/^(name|name:pt)$/ =~ /^(?i)(?u)Correios$/], 448 *[amenity = fuel][/^(name|name:pt)$/ =~ /^(?i)(?u)(Estação|Posto|Bombas)(de (Serviço|Combustível|Gasolina))?$/], 449 *[amenity = parking][/^(name|name:pt)$/ =~ /^(?i)(?u)(Parque((de )?Estacionamento)?|Estacionamento(( de)? (Carros|Autom[óo]veis)?)?)$/], 450 *[amenity = bank][/^(name|name:pt)$/ =~ /^(?i)(?u)Banco$/], 451 *[amenity = bench][/^(name|name:pt)$/ =~ /^(?i)(?u)Bancos?$/], 452 *[amenity = waste_basket][/^(name|name:pt)$/ =~ /^(?i)(?u)Caixote (d[oe] |para( o)? )?Lixos?$/], 453 *[natural = tree][/^(name|name:pt)$/ =~ /^(?i)(?u)[ÁA]rvores?$/], 454 *[highway = steps][/^(name|name:pt)$/ =~ /^(?i)(?u)Escadas?$/], 455 *[highway = crossing][/^(name|name:pt)$/ =~ /^(?i)(?u)(Passadeira|Zebra)s?$/], 456 *[amenity = bench][/^(name|name:pt)$/ =~ /^(?i)(?u)Bancos?$/] { 436 *[leisure][/^(name|name:pt)$/ =~ /^(?i)(?u)(campo|est(á|a)dio) (de (futebol|desportos?)|desportivo)?$/][inside("PT")], 437 *[leisure][/^(name|name:pt)$/ =~ /^(?i)(?u)(estádio |Pavilhão )?Gimnodesportivo$/][inside("PT")], 438 *[leisure=playground][/^(name|name:pt)$/ =~ /^(?i)(?u)Parque Infantil$/][inside("PT")], 439 *[highway = bus_stop][/^(name|name:pt)$/ =~ /^(?i)(?u)(paragem( d(e|os) autocarros?)|bus stop)?$/][inside("PT")], 440 *[highway = track][/^(name|name:pt)$/ =~ /^(?i)(?u)Trilhos?$/][inside("PT")], 441 *[highway = path][/^(name|name:pt)$/ =~ /^(?i)(?u)Trilhos?$/][inside("PT")], 442 *[highway][/^(name|name:pt)$/ =~ /^(?i)(?u)Estrad[ãa]o( de Terra)?$/][inside("PT")], 443 *[natural = tree][/^(name|name:pt)$/ =~ /^(?i)(?u)[ÁA]rvores?$/][inside("PT")], 444 *[amenity = drinking_water][/^(name|name:pt)$/ =~ /^(?i)(?u)(Fonte|Bebedouro)s?$/][inside("PT")], 445 *[amenity = post_office][/^(name|name:pt)$/ =~ /^(?i)(?u)Correios$/][inside("PT")], 446 *[amenity = fuel][/^(name|name:pt)$/ =~ /^(?i)(?u)(Estação|Posto|Bombas)(de (Serviço|Combustível|Gasolina))?$/][inside("PT")], 447 *[amenity = parking][/^(name|name:pt)$/ =~ /^(?i)(?u)(Parque((de )?Estacionamento)?|Estacionamento(( de)? (Carros|Autom[óo]veis)?)?)$/][inside("PT")], 448 *[amenity = bank][/^(name|name:pt)$/ =~ /^(?i)(?u)Banco$/][inside("PT")], 449 *[amenity = bench][/^(name|name:pt)$/ =~ /^(?i)(?u)Bancos?$/][inside("PT")], 450 *[amenity = waste_basket][/^(name|name:pt)$/ =~ /^(?i)(?u)Caixote (d[oe] |para( o)? )?Lixos?$/][inside("PT")], 451 *[natural = tree][/^(name|name:pt)$/ =~ /^(?i)(?u)[ÁA]rvores?$/][inside("PT")], 452 *[highway = steps][/^(name|name:pt)$/ =~ /^(?i)(?u)Escadas?$/][inside("PT")], 453 *[highway = crossing][/^(name|name:pt)$/ =~ /^(?i)(?u)(Passadeira|Zebra)s?$/][inside("PT")], 454 *[amenity = bench][/^(name|name:pt)$/ =~ /^(?i)(?u)Bancos?$/][inside("PT")] { 457 455 throwWarning: tr("PORTUGAL-Nome supérfluo ou incompleto"); 458 456 } 459 node[highway=street_lamp][name] { 457 node[highway=street_lamp][name][inside("PT")] { 460 458 throwWarning: tr("PORTUGAL-Poste de Iluminação com nome"); 461 459 } 462 *[building][/^(name|name:pt)$/ =~ /^(?i)(?u)(Habita[çc][ãa]o|Casa|Moradia|Vivenda)?$/] { 460 *[building][/^(name|name:pt)$/ =~ /^(?i)(?u)(Habita[çc][ãa]o|Casa|Moradia|Vivenda)?$/][inside("PT")] { 463 461 throwWarning: tr("PORTUGAL-Nome supérfluo em edifício que deve ter building=house"); 464 462 } 465 463 466 464 /* Erro comum como Rua do CRuzeiro */ 467 *[/^(name|name:pt|addr:street)$/ =~ /[A-Z]{2}[a-z]/] { 465 *[/^(name|name:pt|addr:street)$/ =~ /[A-Z]{2}[a-z]/][inside("PT")] { 468 466 throwWarning: tr("PORTUGAL-Verificar: nome ou endereço com 2 letras seguidas em maiúsculo"); 469 467 } 470 468 /* lugar possui nome que inicia com "Edifício" mas não possui etiqueta building */ 471 *[/^(name|name:pt)$/ =~ /^(?i)(?u)edifício/][!building][/^(name|name:pt)$/ !~ /^(?i)(?u)(?U)\bEdifício Transparente\b/] { 469 *[/^(name|name:pt)$/ =~ /^(?i)(?u)edifício/][!building][/^(name|name:pt)$/ !~ /^(?i)(?u)(?U)\bEdifício Transparente\b/][inside("PT")] { 472 470 throwWarning: tr("PORTUGAL-Possível ausência de etiqueta {0}", "{1.key}"); 473 471 } 474 *["addr:postcode"]["addr:postcode" !~ /^[0-9]{4}(-[0-9]{3})?$/], 475 *[postal_code][postal_code !~ /^[0-9]{4}(-[0-9]{3})?$/] { 472 *["addr:postcode"]["addr:postcode" !~ /^[0-9]{4}(-[0-9]{3})?$/][inside("PT")], 473 *[postal_code][postal_code !~ /^[0-9]{4}(-[0-9]{3})?$/][inside("PT")] { 476 474 throwWarning: tr("PORTUGAL-Código postal em formato diferente de NNNN-NNN ou NNNN"); 477 475 } 478 node[surface] { 476 node[surface][inside("PT")] { 479 477 throwWarning: tr("PORTUGAL-Superfície ({0}) num nó", "{0.key}"); 480 478 } 481 479 /* highway/waterway com layer negativo e sem túnel */ 482 *[highway][layer < 0][!tunnel], 483 *[waterway][layer < 0][!tunnel] { 480 *[highway][layer < 0][!tunnel][inside("PT")], 481 *[waterway][layer < 0][!tunnel][inside("PT")] { 484 482 throwWarning: tr("PORTUGAL-Verificar: {0} negativo de {1} com ausência de {2}", "{1.key}", "{0.key}", "{2.key}"); 485 483 } 486 484 /* highway/waterway com layer positivo e sem ponte */ 487 *[highway][layer > 0][!bridge][highway != bus_stop], 488 *[waterway][layer > 0][!bridge] { 485 *[highway][layer > 0][!bridge][highway != bus_stop][inside("PT")], 486 *[waterway][layer > 0][!bridge][inside("PT")] { 489 487 throwWarning: tr("PORTUGAL-Verificar: {0} positivo de {1} com ausência de {2}", "{1.key}", "{0.key}", "{2.key}"); 490 488 } 491 way[highway = motorway_junction] { 489 way[highway = motorway_junction][inside("PT")] { 492 490 throwError: tr("PORTUGAL- {0} deve ser utilizado apenas no nó de saída da estrada", "{0.tag}"); 493 491 suggestAlternative: "highway=motorway_link"; 494 492 } 495 493 /* estradas de 2 vias mas apenas com 1 faixa estão provavelmente erradas */ 496 *[highway][lanes = 1][!oneway?][!junction] { 494 *[highway][lanes = 1][!oneway?][!junction][inside("PT")] { 497 495 throwWarning: tr("PORTUGAL- {0} provavelmente deveria ter {1} ≥ 2 ou {2}=yes", "{0.key}", "{1.key}", "{2.key}"); 498 496 } 499 497 /* admin_level deve ficar na relação e não no nó do local */ 500 node[place][admin_level] { 498 node[place][admin_level][inside("PT")] { 501 499 throwWarning: tr("PORTUGAL- {0} deve fazer parte do limite administrativo e não do nó do local", "{1.key}"); 502 500 } 503 relation[admin_level][!boundary], 504 relation[admin_level][boundary][boundary != administrative] { 501 relation[admin_level][!boundary][inside("PT")], 502 relation[admin_level][boundary][boundary != administrative][inside("PT")] { 505 503 throwError: tr("PORTUGAL- {0} ausência de boundary=administrative", "{0.key}"); 506 504 } 507 relation[boundary=administrative][!admin_level] { 505 relation[boundary=administrative][!admin_level][inside("PT")] { 508 506 throwError: tr("PORTUGAL- {0} deve possuir {1}", "{0.tag}", "{1.key}"); 509 507 } 510 508 relation[boundary=administrative] > way { set way_in_relation; } 511 509 relation[admin_level] > way { set way_in_relation; } 512 way[boundary=administrative][!admin_level]!.way_in_relation { 510 way[boundary=administrative][!admin_level][inside("PT")]!.way_in_relation { 513 511 throwError: tr("PORTUGAL- {0} deve possuir {1}", "{0.tag}", "{1.key}"); 514 512 } 515 way[admin_level][!boundary]!.way_in_relation, 516 way[admin_level][boundary][boundary != administrative]!.way_in_relation { 513 way[admin_level][!boundary][inside("PT")]!.way_in_relation, 514 way[admin_level][boundary][boundary != administrative][inside("PT")]!.way_in_relation { 517 515 throwError: tr("PORTUGAL- {0} ausência de boundary=administrative", "{0.key}"); 518 516 } 519 relation[boundary=administrative][type=multipolygon] { 517 relation[boundary=administrative][type=multipolygon][inside("PT")] { 520 518 throwError: tr("PORTUGAL-Relação deve ser do tipo ''type=boundary''"); 521 519 } 522 node[destination], 523 relation[destination][type != waterway] { 520 node[destination][inside("PT")], 521 relation[destination][type != waterway][inside("PT")] { 524 522 throwWarning: tr("PORTUGAL- {0} deve-se usar apenas em linhas", "{0.key}"); 525 523 } 526 524 /* landuse não deve ter layer */ 527 *[landuse][layer] { 525 *[landuse][layer][inside("PT")] { 528 526 throwWarning: tr("PORTUGAL-Verificar: {0} não deve ter {1}", "{0.key}", "{1.key}"); 529 527 } 530 528 /* path deve utilizar trail_visibility e não tracktype */ 531 way[highway = path][tracktype] { 529 way[highway = path][tracktype][inside("PT")] { 532 530 throwWarning: tr("PORTUGAL-Uso incorreto de {0}", "{1.key}"); 533 531 suggestAlternative: "trail_visibility"; 534 532 } 535 533 /* tracktype é uma propriedade de tracks apenas */ 536 way[highway != track][tracktype] { 534 way[highway != track][tracktype][inside("PT")] { 537 535 throwWarning: tr("PORTUGAL-Usar {0} apenas em {1}={2}", "{1.key}", "{0.key}", "{0.value}"); 538 536 } 539 537 /* número de saída de rodovia */ 540 *[highway=motorway_junction][ref][ref !~ /^[0-9]+( |-)*([A-Z])?$/] { 538 *[highway=motorway_junction][ref][ref !~ /^[0-9]+( |-)*([A-Z])?$/][inside("PT")] { 541 539 throwWarning: tr("PORTUGAL-Saída de via ({0}) fora do padrão", "{1.key}"); 542 540 } 543 *[alt_ref] { 541 *[alt_ref][inside("PT")] { 544 542 throwWarning: tr("PORTUGAL-O conteúdo de {0} deve fazer parte de ref, separado por ;", "{0.key}"); 545 543 suggestAlternative: "ref"; 546 544 } 547 *[/^(name|name:pt)$/ =~ /^(?i)(?u)pra(ç|cet)a/][!leisure][landuse = grass] { 545 *[/^(name|name:pt)$/ =~ /^(?i)(?u)pra(ç|cet)a/][!leisure][landuse = grass][inside("PT")] { 548 546 throwWarning: tr("PORTUGAL-Possível definição errada de praça: {0}", "{2.tag}"); 549 547 suggestAlternative: "leisure=park"; 550 548 } 551 549 /* layer não faz sentido em outros objetos */ 552 *[layer][!building][!highway][man_made!=pipeline][!tunnel][!railway][!waterway] { 550 *[layer][!building][!highway][man_made!=pipeline][!tunnel][!railway][!waterway][inside("PT")] { 553 551 throwWarning: tr("PORTUGAL-Verificar: possível uso incorreto de layer no objeto, pode ser andar, etiqueta level"); 554 552 } 555 553 /* https://github.com/OSMBrasil/validador-josm/issues/54 */ 556 554 /* requer JOSM ≥ 7761 */ 557 *[tourism = motel][amenity != love_hotel], 558 *[/^(name|name:pt)$/ =~ /(?i)(?u)(?U)\bmotel\b/][amenity != love_hotel] { 555 *[tourism = motel][amenity != love_hotel][inside("PT")], 556 *[/^(name|name:pt)$/ =~ /(?i)(?u)(?U)\bmotel\b/][amenity != love_hotel][inside("PT")] { 559 557 throwWarning: tr("PORTUGAL-Ausência de etiqueta ''{0}''", "{1.value}"); 560 558 } 561 *[amenity = love_hotel][tourism][tourism != motel] { 559 *[amenity = love_hotel][tourism][tourism != motel][inside("PT")] { 562 560 throwWarning: tr("PORTUGAL-Verificar: provavelmente deve ser ''{0}={1}''", "{2.key}", "{2.value}"); 563 561 } 564 *["building:levels" < 1] { 562 *["building:levels" < 1][inside("PT")] { 565 563 throwWarning: tr("PORTUGAL-Verificar: {0} com valor inválido", "{0.key}"); 566 564 } 567 565 /* deve-se utilizar short_name, name ou official_name ao invés de long_name */ 568 *[long_name] { 566 *[long_name][inside("PT")] { 569 567 throwWarning: tr("PORTUGAL-Chave inválida: {0}", "{0.key}"); 570 568 suggestAlternative: "highway=name"; … … 573 571 } 574 572 /* landuse deve conter algum valor que não seja yes */ 575 *[landuse?] { 573 *[landuse?][inside("PT")] { 576 574 throwWarning: tr("PORTUGAL-Especificar valor correto para {0} em vez de ''{1}''", "{0.key}", tag("landuse")); 577 575 } 578 576 /* vários valores para source devem estar na mesma chave, separados por ';' */ 579 *[alt_source][source] { 577 *[alt_source][source][inside("PT")] { 580 578 throwWarning: tr("PORTUGAL- {0} deve estar incluído em {1}, separado por '';'' caso necessário", "{0.key}", "{1.key}"); 581 579 } 582 *[access = permissive] { 580 *[access = permissive][inside("PT")] { 583 581 throwWarning: tr("PORTUGAL-Verificar: {0} usar só em vias privadas com permissão de acesso e não vias públicas", "{0.tag}"); 584 582 } 585 *[aeroway][designation =~ /^[A-Z]{4}$/][!icao], 586 *[aeroway][ref =~ /^[A-Z]{4}$/][!icao] { 583 *[aeroway][designation =~ /^[A-Z]{4}$/][!icao][inside("PT")], 584 *[aeroway][ref =~ /^[A-Z]{4}$/][!icao][inside("PT")] { 587 585 throwWarning: tr("PORTUGAL- {0} provavelmente deve ser utilizado como {1}", "{1.key}", "{2.key}"); 588 586 } 589 *[crossing][!highway][!railway] { 587 *[crossing][!highway][!railway][inside("PT")] { 590 588 throwWarning: tr("PORTUGAL- crossing deve ser utilizado com highway=crossing, railway=crossing ou highway=traffic_signals"); 591 589 } 592 node[highway =~ /^(give_way|mini_roundabout|stop|turning_circle)$/][name] { 590 node[highway =~ /^(give_way|mini_roundabout|stop|turning_circle)$/][name][inside("PT")] { 593 591 throwWarning: tr("PORTUGAL-Objeto não deve possuir {0}", "{1.key}"); 594 592 } 595 way[highway = give_way], 596 way[highway = mini_roundabout], 597 way[highway = stop], 598 way[highway = turning_circle], 599 relation[highway = give_way], 600 relation[highway = mini_roundabout], 601 relation[highway = stop], 602 relation[highway = turning_circle] { 593 way[highway = give_way][inside("PT")], 594 way[highway = mini_roundabout][inside("PT")], 595 way[highway = stop][inside("PT")], 596 way[highway = turning_circle][inside("PT")], 597 relation[highway = give_way][inside("PT")], 598 relation[highway = mini_roundabout][inside("PT")], 599 relation[highway = stop][inside("PT")], 600 relation[highway = turning_circle][inside("PT")] { 603 601 throwWarning: tr("PORTUGAL- {0} deve ser utilizado apenas em nós", "{0.tag}"); 604 602 } 605 603 /* torres de energia, lombas, câmaras, semáforos etc que não estão ligados a numa via */ 606 node:unconnected[power = pole], 607 node:unconnected[power = tower], 608 node:unconnected[highway = speed_camera] { 604 node:unconnected[power = pole][inside("PT")], 605 node:unconnected[power = tower][inside("PT")], 606 node:unconnected[highway = speed_camera][inside("PT")] { 609 607 throwWarning: tr("PORTUGAL- {0} deve fazer parte de uma linha e não isolado", "{1.tag}"); 610 608 } 611 *[iata = "0"] { 612 throwWarning: tr("{0} com valor = {1}", "{0.key}", "{0.value}"); 609 *[iata = "0"][inside("PT")] { 610 throwWarning: tr("PORTUGAL- {0} com valor = {1}", "{0.key}", "{0.value}"); 613 611 } 614 612 /* saídas de estradas devem ter nome e/ou referência */ 615 node[highway = motorway_junction][!name][!ref] { 613 node[highway = motorway_junction][!name][!ref][inside("PT")] { 616 614 throwWarning: tr("PORTUGAL- {0} sem pelo menos uma das etiquetas: {1} ou {2}", "{0.value}", "{1.key}", "{2.key}"); 617 615 } 618 616 /* provalvemente o tipo dessas vias não deve ser link */ 619 *[highway $= _link][name =~ /(Alameda|Avenida|Rua|Travessa|Viela) /] { 617 *[highway $= _link][name =~ /(Alameda|Avenida|Rua|Travessa|Viela) /][inside("PT")] { 620 618 throwWarning: tr("PORTUGAL-Verificar: via possivelmente errada com {0}", tag("highway")); 621 619 } 622 node[noname?] { 620 node[junction=roundabout][inside("PT")] { 621 throwWarning: tr("PORTUGAL-Rotunda num nó, é melhor num círculo"); 622 } 623 node[noname?][inside("PT")] { 623 624 throwWarning: tr("PORTUGAL-Verificar: uso suspeito de {0} num nó", "{0.key}"); 624 625 } 625 626 /* source estranhamente igual o name */ 626 *[source = *name] { 627 *[source = *name][inside("PT")] { 627 628 throwWarning: tr("PORTUGAL-Verificar: {0} e {1} são iguais", "{0.key}", "{0.value}"); 628 629 } 629 630 630 *[/^(name|name:pt)$/ =~ /^(?i)(?u)(Junta (de )?Freguesia|Câmara Municipal)/][!highway][amenity!=townhall] { 631 *[/^(name|name:pt)$/ =~ /^(?i)(?u)(Junta (de )?Freguesia|Câmara Municipal)/][!highway][amenity!=townhall][inside("PT")] { 631 632 throwWarning: tr("PORTUGAL-Juntas de Freguesia e Câmaras Municipais deve ter amenity=townhall"); 632 633 } 633 *[vatin][!"ref:vatin"], 634 *[nif][!"ref:vatin"], 635 *[NIF][!"ref:vatin"], 636 *[nipc][!"ref:vatin"], 637 *[NIPC][!"ref:vatin"] { 634 *[vatin][!"ref:vatin"][inside("PT")], 635 *[nif][!"ref:vatin"][inside("PT")], 636 *[NIF][!"ref:vatin"][inside("PT")], 637 *[nipc][!"ref:vatin"][inside("PT")], 638 *[NIPC][!"ref:vatin"][inside("PT")] { 638 639 throwWarning: tr("PORTUGAL-Etiqueta errada para Número de Identificaçáo Fiscal, usar ref:vatin=XXX", "{0.key}", "{1.key}"); 639 640 } 640 *["ref:vatin"]["ref:vatin" !~ /^PT[0-9]{9}$/] { 641 *["ref:vatin"]["ref:vatin" !~ /^PT[0-9]{9}$/][inside("PT")] { 641 642 throwWarning: tr("PORTUGAL-Número de Identificaçáo Fiscal tem de ter o formato PTxxxxxxxxx"); 642 643 } 643 *["phone:pt"][!phone] { 644 *["phone:pt"][!phone][inside("PT")] { 644 645 throwWarning: tr("PORTUGAL-Chave de etiqueta mal aplicada phone:pt sem haver etiqueta phone"); 645 646 } 646 node[layer < 0][amenity=parking] { 647 node[layer < 0][amenity=parking][inside("PT")] { 647 648 throwWarning: tr("PORTUGAL-provavelmente é uma entrada/saída parque estac.subterrâneo, usar amenity=parking_entrance e parking=underground"); 648 649 } 649 node[layer > 0][amenity=parking] { 650 node[layer > 0][amenity=parking][inside("PT")] { 650 651 throwWarning: tr("PORTUGAL-provavelmente é uma entrada/saída parque estac.no topo de 1 edifício, usar amenity=parking_entrance e parking=rooftop"); 651 652 } 652 node:unconnected[amenity=parking_entrance] { 653 node:unconnected[amenity=parking_entrance][inside("PT")] { 653 654 throwWarning: tr("PORTUGAL-Nós de entradas ou saídas de parque estac. devem estar ligados a 1 estrada"); 654 655 } 655 *[tourism][tourism != attraction][layer], 656 *[shop][layer], 657 *[amenity][amenity != place_of_worship][parking !~ /underground|rooftop/][building!=roof][layer], 658 *[craft][layer], 659 *[office][layer], 660 *[leisure][layer], 661 *[man_made][man_made !~ /surveillance|pipeline/][layer], 662 *[natural][layer], 663 *[sport][layer], 664 *[military][layer], 665 *["building:part"][layer], 666 *[historic][historic !~ /(monument|city_gate)/][layer], 667 *[landuse][layer] { 656 *[tourism][tourism != attraction][layer][inside("PT")], 657 *[shop][layer][inside("PT")], 658 *[amenity][amenity != place_of_worship][parking !~ /underground|rooftop/][building!=roof][layer][inside("PT")], 659 *[craft][layer][inside("PT")], 660 *[office][layer][inside("PT")], 661 *[leisure][layer][inside("PT")], 662 *[man_made][man_made !~ /surveillance|pipeline/][layer][inside("PT")], 663 *[natural][layer][inside("PT")], 664 *[sport][layer][inside("PT")], 665 *[military][layer][inside("PT")], 666 *["building:part"][layer][inside("PT")], 667 *[historic][historic !~ /(monument|city_gate)/][layer][inside("PT")], 668 *[landuse][layer][inside("PT")] { 668 669 throwWarning: tr("PORTUGAL-provavelmente layer devia ser level - nº de andar ou não ter layer"); 669 670 } 670 *[natural][shop] { 671 *[natural][shop][inside("PT")] { 671 672 throwWarning: tr("PORTUGAL-natural junto com shop"); 672 673 } 673 *[/name|brand|operator/ =~ /(?U)\b(5 (à s|[áa]\s[Ss])ec)\b/] { 674 *[/name|brand|operator/ =~ /(?U)\b(5 (à s|[áa]\s[Ss])ec)\b/][inside("PT")] { 674 675 throwWarning: tr("PORTUGAL-O correto é 5 à Sec"); 675 676 } 676 *[amenity=fuel][!brand][name =~ /^(?i)(?u)(Agip|BP|Cepsa|Esso|Exxon|Galp|Mobil|Repsol|Shell|Total)?$/] { 677 *[amenity=fuel][!brand][name =~ /^(?i)(?u)(Agip|BP|Cepsa|Esso|Exxon|Galp|Mobil|Repsol|Shell|Total)?$/][inside("PT")] { 677 678 throwWarning: tr("PORTUGAL-Marca de combustível deve estar em brand e não name. O posto costuma ser de privados e com nome extenso "); 678 679 } 679 *[/name|brand|operator/ =~ /(?U)\b(galp|GALP)\b/] { 680 *[/name|brand|operator/ =~ /(?U)\b(galp|GALP)\b/][inside("PT")] { 680 681 throwWarning: tr("PORTUGAL-O correto é Galp e não GALP ou galp"); 681 682 } 682 *[/name|brand|operator/ =~ /(?U)\b(CEPSA|cepsa)\b/] { 683 *[/name|brand|operator/ =~ /(?U)\b(CEPSA|cepsa)\b/][inside("PT")] { 683 684 throwWarning: tr("PORTUGAL-O correto é Cepsa e não CEPSA ou cepsa"); 684 685 } 685 *[/name|brand|operator/ =~ /(?U)\b(ESSO|esso)\b/] { 686 *[/name|brand|operator/ =~ /(?U)\b(ESSO|esso)\b/][inside("PT")] { 686 687 throwWarning: tr("PORTUGAL-O correto é Esso e não ESSO ou esso"); 687 688 } 688 *[/name|brand|operator/ =~ /(?U)\b(EXX?ON|exx?on)\b/] { 689 *[/name|brand|operator/ =~ /(?U)\b(EXX?ON|exx?on)\b/][inside("PT")] { 689 690 throwWarning: tr("PORTUGAL-O correto é Exxon e não EXXON ou exxon"); 690 691 } 691 *[/name|brand|operator/ =~ /(?U)\b(REPSOL|repsol)\b/] { 692 *[/name|brand|operator/ =~ /(?U)\b(REPSOL|repsol)\b/][inside("PT")] { 692 693 throwWarning: tr("PORTUGAL-O correto é Repsol e não REPSOL ou repsol"); 693 694 } 694 *[/name|brand|operator/ =~ /(?U)\b(SHELL?|shell?)\b/] { 695 *[/name|brand|operator/ =~ /(?U)\b(SHELL?|shell?)\b/][inside("PT")] { 695 696 throwWarning: tr("PORTUGAL-O correto é Shell e não SHELL ou shell"); 696 697 } 697 *[amenity=fuel][/name|brand|operator/ =~ /(?U)\b(TOTAL|total)\b/] { 698 *[amenity=fuel][/name|brand|operator/ =~ /(?U)\b(TOTAL|total)\b/][inside("PT")] { 698 699 throwWarning: tr("PORTUGAL-O correto é Total e não TOTAL ou total"); 699 700 } 700 *[amenity=fuel][/name|brand|operator/ =~ /(?U)\bMul?ti(\s?[óÓ]p?|\s?[ÓO]|\sOp?)ticas?\b/] { 701 *[amenity=fuel][/name|brand|operator/ =~ /(?U)\bMul?ti(\s?[óÓ]p?|\s?[ÓO]|\sOp?)ticas?\b/][inside("PT")] { 701 702 throwWarning: tr("PORTUGAL-O correto é MultiOpticas"); 702 703 } 703 *[amenity=fuel][/name|brand|operator/ =~ /(?U)\b(L[ÍI]DE?L|l[íi]de?l|Líde?l)[Ee]?\b/] { 704 *[amenity=fuel][/name|brand|operator/ =~ /(?U)\b(L[ÍI]DE?L|l[íi]de?l|Líde?l)[Ee]?\b/][inside("PT")] { 704 705 throwWarning: tr("PORTUGAL-O correto é Lidl"); 705 706 } 706 *[name][name =~ /(?U)\b(L[ÍI]DE?L|l[íi]de?l|Líde?l)[Ee]?\b/] { 707 *[name][name =~ /(?U)\b(L[ÍI]DE?L|l[íi]de?l|Líde?l)[Ee]?\b/][inside("PT")] { 707 708 throwWarning: tr("PORTUGAL-O correto é Lidl"); 708 709 } 709 *[wikipedia][wikipedia !~ /^pt:/] { 710 *[wikipedia][wikipedia !~ /^pt:/][inside("PT")] { 710 711 throwWarning: tr("PORTUGAL-Usar prefixo em português (pt:) em {0}", "{0.key}"); 711 712 } 712 713 area[/natural|landuse/] > node { set .area_ligada_via } 713 way[highway][highway != pedestrian][!barrier] > node.area_ligada_via, 714 way[railway] > node.area_ligada_via { 714 way[highway][highway != pedestrian][!barrier][inside("PT")] > node.area_ligada_via, 715 way[railway][inside("PT")] > node.area_ligada_via { 715 716 throwWarning: tr("PORTUGAL-Não é recomendável ter áreas de landuse ou natural ligados a estradas, rios ou ferrovias"); 716 717 } 717 718 way[man_made=pipeline] > node { set .is_in_pipeline } 718 way[highway] > node.is_in_pipeline, 719 way[railway] > node.is_in_pipeline { 719 way[highway][inside("PT")] > node.is_in_pipeline, 720 way[railway[inside("PT")]] > node.is_in_pipeline { 720 721 throwWarning: tr("PORTUGAL-Pipeline não deve estar ligado a estradas ou ferrovias"); 721 722 } 722 723 /* utilizar ; como separador de valores em source */ 723 *[source =~ /,/], 724 *["source:ref" =~ /,/], 725 *["source:name" =~ /,/] { 724 *[source =~ /,/][inside("PT")], 725 *["source:ref" =~ /,/][inside("PT")], 726 *["source:name" =~ /,/][inside("PT")] { 726 727 throwOther: tr("utilizar ; como separador de valores em {0}", "{0.key}"); 727 728 } 728 *[/^(name|name:pt)$/ =~ /(?i)(?u)Posto (de )?Turismo/][name][information != office][!highway][/^(name|name:pt)$/ !~ /(?i)(?u)(?U)\b(Parque|Estacionamento)\b/] { 729 *[/^(name|name:pt)$/ =~ /(?i)(?u)Posto (de )?Turismo/][name][information != office][!highway][/^(name|name:pt)$/ !~ /(?i)(?u)(?U)\b(Parque|Estacionamento)\b/][inside("PT")] { 729 730 throwWarning: tr("PORTUGAL-Posto de Turismo deve ter information=office e tourism=information"); 730 731 } 731 *[capacity=0] { 732 *[capacity=0][inside("PT")] { 732 733 throwWarning: tr("PORTUGAL-Valor provavelmente errado de capacity=0"); 733 734 } 734 *[ele][ele !~ /^[1-9][0-9]?[0-9]?[0-9]?(\.[0-9][0-9]?[0-9]?)?$/], 735 *[ele > 2351], 736 *[ele < 0] { 735 *[ele][ele !~ /^[1-9][0-9]?[0-9]?[0-9]?(\.[0-9][0-9]?[0-9]?)?$/][inside("PT")], 736 *[ele > 2351][inside("PT")], 737 *[ele < 0][inside("PT")] { 737 738 throwWarning: tr("PORTUGAL-ele tem de ser um número em metros e sem unidade de medida entre 0 e 2351 em Portugal"); 738 739 } 739 area[name =~ /^(?i)(?u)Adro/][name][landuse != churchyard][!railway][!boundary][!place] { 740 area[name =~ /^(?i)(?u)Adro/][name][landuse != churchyard][!railway][!boundary][!place][inside("PT")] { 740 741 throwWarning: tr("PORTUGAL-Adro de igreja deve ter landuse=churchyard"); 741 742 } 742 *[/^(name|name:pt)$/ =~ /^(?i)(?u)Cruzeiro/][name][historic != wayside_cross][!railway][!highway][!boundary][!place][!shop][!amenity] { 743 *[/^(name|name:pt)$/ =~ /^(?i)(?u)Cruzeiro/][name][historic != wayside_cross][!railway][!highway][!boundary][!place][!shop][!amenity][inside("PT")] { 743 744 throwWarning: tr("PORTUGAL-Cruzeiro ou cruz em zonas urbanas deve ter historic=wayside_cross"); 744 745 } 745 *["addr:housenumber" =~ /^(?i)(?u)n\.?º?/] { 746 *["addr:housenumber" =~ /^(?i)(?u)n\.?º?/][inside("PT")] { 746 747 throwWarning: tr("PORTUGAL-addr:housenumber não deve ter NºX, apenas o número de porta"); 747 748 } 748 *[building][ele][ele =~ /^[1-3]?[0-9]$/] { 749 *[building][ele][ele =~ /^[1-3]?[0-9]$/][inside("PT")] { 749 750 throwWarning: tr("PORTUGAL-Verificar: edifício com etiqueta ele com valores que parecem nº de andares, pode ser building:levels"); 750 751 } 751 *[religion=christian][denomination=catholic][!route] { 752 *[religion=christian][denomination=catholic][!route][inside("PT")] { 752 753 throwWarning: tr("PORTUGAL-Locais de oração cristãos devem ter denomination=roman_catholic e não a genérica denomination=catholic"); 753 754 } 754 *[name][name =~ /^(?i)(?u)Depósito de Água/][man_made][man_made != water_tower][!railway][!highway][!boundary][!place][!shop][!amenity] { 755 *[name][name =~ /^(?i)(?u)Depósito de Água/][man_made][man_made != water_tower][!railway][!highway][!boundary][!place][!shop][!amenity][inside("PT")] { 755 756 throwWarning: tr("PORTUGAL-Depósito de água deve ter man_made=water_tower"); 756 757 } 757 *[name][name =~ /^(?i)(?u)Estádio/][leisure][leisure != stadium] { 758 *[name][name =~ /^(?i)(?u)Estádio/][leisure][leisure != stadium][inside("PT")] { 758 759 throwWarning: tr("PORTUGAL-Estádio deve ter leisure=stadium"); 759 760 } 760 *[name][name =~ /^".*"$/] { 761 *[name][name =~ /^".*"$/][inside("PT")] { 761 762 throwWarning: tr("PORTUGAL-Nome que começa e termina com aspas, não são necessárias aspas para marcas ou nomes"); 762 763 } 763 *[/^(name|name:pt|note|description)$/ =~ /(?i)(?u)Oliveiras?/][natural=tree][!genus], 764 *[/^(name|name:pt|note|description)$/ =~ /(?i)(?u)Oliveiras?/][natural=tree][!leaf_cycle] { 764 *[/^(name|name:pt|note|description)$/ =~ /(?i)(?u)Oliveiras?/][natural=tree][!genus][inside("PT")], 765 *[/^(name|name:pt|note|description)$/ =~ /(?i)(?u)Oliveiras?/][natural=tree][!leaf_cycle][inside("PT")] { 765 766 throwWarning: tr("PORTUGAL-Oliveira deve ter genus=Olea e leaf_cycle=evergreen, retirar nome"); 766 767 } 767 *[/^(name|name:pt|note|description)$/ =~ /(?i)(?u)Plátanos?/][natural=tree][!genus], 768 *[/^(name|name:pt|note|description)$/ =~ /(?i)(?u)Plátanos?/][natural=tree][!leaf_cycle], 769 *[/^(name|name:pt|note|description)$/ =~ /(?i)(?u)Plátanos?/][natural=tree][!leaf_type] { 768 *[/^(name|name:pt|note|description)$/ =~ /(?i)(?u)Plátanos?/][natural=tree][!genus][inside("PT")], 769 *[/^(name|name:pt|note|description)$/ =~ /(?i)(?u)Plátanos?/][natural=tree][!leaf_cycle][inside("PT")], 770 *[/^(name|name:pt|note|description)$/ =~ /(?i)(?u)Plátanos?/][natural=tree][!leaf_type][inside("PT")] { 770 771 throwWarning: tr("PORTUGAL-Plátano deve ter genus=Platanus, leaf_cycle=deciduous e leaf_type=broadleaved, retirar nome"); 771 772 } 772 *[/^(name|name:pt|note|description)$/ =~ /(?i)(?u)Pinheiros?/][natural=tree][!genus], 773 *[/^(name|name:pt|note|description)$/ =~ /(?i)(?u)Pinheiros?/][natural=tree][!leaf_cycle], 774 *[/^(name|name:pt|note|description)$/ =~ /(?i)(?u)Pinheiros?/][natural=tree][!leaf_type] { 773 *[/^(name|name:pt|note|description)$/ =~ /(?i)(?u)Pinheiros?/][natural=tree][!genus][inside("PT")], 774 *[/^(name|name:pt|note|description)$/ =~ /(?i)(?u)Pinheiros?/][natural=tree][!leaf_cycle][inside("PT")], 775 *[/^(name|name:pt|note|description)$/ =~ /(?i)(?u)Pinheiros?/][natural=tree][!leaf_type][inside("PT")] { 775 776 throwWarning: tr("PORTUGAL-Pinheiro deve ter genus=Pinus, leaf_cycle=evergreen e leaf_type=needleleaved, retirar nome"); 776 777 } 777 node[addr:housenumber] ∈ *[building][addr:housenumber] { 778 node[addr:housenumber][inside("PT")] ∈ *[building][addr:housenumber] { 778 779 throwWarning: tr("PORTUGAL-Nó com addr:housenumber dentro de edifício com addr:housenumber"); 779 780 } 780 *["addr:housenumber"]["addr:housenumber" =~ /^(\+351)?\s?[0-9]{3}\s?[0-9]{3}[0-9]{3}((;\s?\+351\s?[0-9]{3}\s?[0-9]{3}[0-9]{3})?)+$/] { 781 *["addr:housenumber"]["addr:housenumber" =~ /^(\+351)?\s?[0-9]{3}\s?[0-9]{3}[0-9]{3}((;\s?\+351\s?[0-9]{3}\s?[0-9]{3}[0-9]{3})?)+$/][inside("PT")] { 781 782 throwWarning: tr("PORTUGAL-addr:housenumber com nº de telefone em vez de nº de porta"); 782 783 } 783 *["addr:housenumber"]["addr:housenumber" =~ /(\\|-|,|\.|\/)/] { 784 *["addr:housenumber"]["addr:housenumber" =~ /(\\|-|,|\.|\/)/][inside("PT")] { 784 785 throwWarning: tr("PORTUGAL-Os nº em addr:housenumber devem ser separados por ponto e vírgula apenas"); 785 786 } 786 *[name][name =~ /^(?i)(?u)((isto é Um )?Teste|(Para |A )?Testar|Experiência)$/] { 787 *[name][name =~ /^(?i)(?u)((isto é Um )?Teste|(Para |A )?Testar|Experiência)$/][inside("PT")] { 787 788 throwWarning: tr("PORTUGAL-Verificar: nome Teste"); 788 789 } 789 *[!ref][name][name =~ /^(E(\.|\s)?[NRM]|C(\.|\s)?M)(\.|\s)?[1-9]/] { 790 *[!ref][name][name =~ /^(E(\.|\s)?[NRM]|C(\.|\s)?M)(\.|\s)?[1-9]/][inside("PT")] { 790 791 throwWarning: tr("PORTUGAL-name c/ referência da estrada mas sem ref, passar name para ref"); 791 792 } 792 *[!ref]["name:pt"]["name:pt" =~ /^(E(\.|\s)?[NRM]|C(\.|\s)?M)(\.|\s)?[1-9]/] { 793 *[!ref]["name:pt"]["name:pt" =~ /^(E(\.|\s)?[NRM]|C(\.|\s)?M)(\.|\s)?[1-9]/][inside("PT")] { 793 794 throwWarning: tr("PORTUGAL-name:pt c/ referência da estrada mas sem ref, passar name:pt para ref"); 794 795 } … … 796 797 797 798 798 799 800 801 802 803 799 /* AVISOS INFORMATIVOS */ 804 800 805 801 /* é útil ter o destino das saídas de estradas */ 806 *[highway = motorway_link][!destination] { 802 *[highway = motorway_link][!destination][inside("PT")] { 807 803 throwOther: tr("PORTUGAL- {0} sem etiqueta {1}", "{0.value}", "{1.key}"); 808 804 } 809 *[place = city][!population], 810 *[place = town][!population], 811 *[place = village][!population] { 805 *[place = city][!population][inside("PT")], 806 *[place = town][!population][inside("PT")], 807 *[place = village][!population][inside("PT")] { 812 808 throwOther: tr("PORTUGAL- {0} sem etiqueta de população", "{0.value}"); 813 809 } 814 *[place][place !~ /hamlet|island|isolated_dwelling|neighbourhood|suburb|village/][population < 10000] { 810 *[place][place !~ /hamlet|island|isolated_dwelling|neighbourhood|suburb|village/][population < 10000][inside("PT")] { 815 811 throwOther: tr("PORTUGAL-Verificar: local com <10.000 hab. deve ser village, EXCEPTO sedes de freguesia!"); 816 812 fixAdd: "place=village"; 817 813 } 818 *[place =~ /city|hamlet|isolated_dwelling|village/][population >= 10000][population < 100000] { 814 *[place =~ /city|hamlet|isolated_dwelling|village/][population >= 10000][population < 100000][inside("PT")] { 819 815 throwOther: tr("PORTUGAL-Verificar: local com 10.000-100.000 hab. deve ser town, EXCEPTO sedes de concelho!"); 820 816 fixAdd: "place=town"; 821 817 } 822 *[place =~ /hamlet|isolated_dwelling|town|village/][population >= 100000] { 818 *[place =~ /hamlet|isolated_dwelling|town|village/][population >= 100000][inside("PT")] { 823 819 throwOther: tr("PORTUGAL-Verificar: local com +100.000 hab. deve ser city, EXCEPTO capitais de distrito!"); 824 820 fixAdd: "place=city"; 825 821 } 826 822 /* é bom especificar o tipo de torre */ 827 node[man_made = tower][!"tower:type"] { 823 node[man_made = tower][!"tower:type"][inside("PT")] { 828 824 throwOther: tr("PORTUGAL-Ausência do tipo de torre ({0})", "{1.key}"); 829 825 } 830 *[highway][highway !~ /construction|give_way|motorway_junction|proposed|raceway|speed_camera|stop/][!wheelchair], 831 *[building][!wheelchair] { 826 *[highway][highway !~ /construction|give_way|motorway_junction|proposed|raceway|speed_camera|stop/][!wheelchair][inside("PT")], 827 *[building][!wheelchair][inside("PT")] { 832 828 throwOther: tr("PORTUGAL- {0} sem etiqueta de acessibilidade ({1})", "{0.key}", "{1.key}"); 833 829 } … … 835 831 throwOther: tr("PORTUGAL-Ausência do tempo de duração ({0}) do ferry", "{1.key}"); 836 832 } 837 *[highway = service][!service] { 833 *[highway = service][!service][inside("PT")] { 838 834 throwOther: tr("PORTUGAL-Ausência do tipo de serviço ({0}) na {1}", "{1.key}", "{0.key}"); 839 835 } 840 *[highway = track][!tracktype] { 836 *[highway = track][!tracktype][inside("PT")] { 841 837 throwOther: tr("PORTUGAL-Ausência do tipo de track ({0}) na {1}", "{1.key}", "{0.key}"); 842 838 } 843 839 /* número de faixas apenas para rodovias maiores e links */ 844 way[highway =~ /motorway|trunk|primary|secondary|tertiary/][!lanes], 845 way[highway $= _link][!lanes] { 840 way[highway =~ /motorway|trunk|primary|secondary|tertiary/][!lanes][inside("PT")], 841 way[highway $= _link][!lanes][inside("PT")] { 846 842 throwOther: tr("PORTUGAL- {0} sem número de faixas ({1}) definido", "{0.key}", "{1.key}"); 847 843 } 848 way[highway][!surface][highway != bus_stop] { 844 way[highway][!surface][highway != bus_stop][inside("PT")] { 849 845 throwOther: tr("PORTUGAL- {0} sem superfície ({1}) definida", "{0.key}", "{1.key}"); 850 846 } 851 node[amenity = place_of_worship] { 847 node[amenity = place_of_worship][inside("PT")] { 852 848 throwOther: tr("PORTUGAL-local de oração num nó, é melhor num edifício"); 853 849 } 854 node[highway=speed_camera][!maxspeed], 855 relation[enforcement=maxspeed][!maxspeed], 856 relation[enforcement=maxheight][!maxheight], 857 relation[enforcement=maxweight][!maxweight] { 850 node[highway=speed_camera][!maxspeed][inside("PT")], 851 relation[enforcement=maxspeed][!maxspeed][inside("PT")], 852 relation[enforcement=maxheight][!maxheight][inside("PT")], 853 relation[enforcement=maxweight][!maxweight][inside("PT")] { 858 854 throwOther: tr("PORTUGAL-Adicionar {0} ao {1}", "{1.key}", "{0.tag}"); 859 855 } 860 node[junction=roundabout] { 861 throwWarning: tr("PORTUGAL-Rotunda num nó, é melhor num círculo"); 862 } 856 863 857 }}}
