def node(self, data, tags):
        capture_tags = {}
        keys = tags.keys()
        err = []


        # *[name=~/ي/][language("fa")]
        # *[name:fa=~/ي/]
        if (u'name' in keys) or (u'name:fa' in keys):
            match = False
            if not match:
                capture_tags = {}
                try: match = (mapcss.regexp_test_(mapcss._value_capture(capture_tags, 0, self.re_5eeade1c), mapcss._tag_capture(capture_tags, 0, tags, u'name')) and mapcss.language(self.father.config.options, u'fa'))
                except mapcss.RuleAbort: pass
            if not match:
                capture_tags = {}
                try: match = (mapcss.regexp_test_(mapcss._value_capture(capture_tags, 0, self.re_5eeade1c), mapcss._tag_capture(capture_tags, 0, tags, u'name:fa')))
                except mapcss.RuleAbort: pass
            if match:
                # group:tr("Arabic letter detected in Farsi name")
                # -osmoseItemClassLevel:"5010/50109001/2"
                # throwError:tr("In Farsi, the Arabic letter '{0}' should be replaced by '{1}'","ي","ی")
                # fixAdd:concat("{0.key}=",replace("{0.value}","ي","ی"))
                # assertMatchWithContext:list('node name="روابط عمومي مجتمع مس شهربابك"','language=fa')
                # assertMatch:'node name:fa="روابط عمومي مجتمع مس شهربابك"'
                # assertNoMatch:'node name="روابط عمومي مجتمع مس شهربابك"'
                err.append({'class': 50109001, 'subclass': 0, 'text': mapcss.tr(u'In Farsi, the Arabic letter \'{0}\' should be replaced by \'{1}\'', u'ي', u'ی'), 'allow_fix_override': True, 'fix': {
                    '+': dict([
                    (mapcss.concat(mapcss._tag_uncapture(capture_tags, u'{0.key}='), mapcss.replace(mapcss._tag_uncapture(capture_tags, u'{0.value}'), u'ي', u'ی'))).split('=', 1)])
                }})

        # *[name=~/ك/][language("fa")]
        # *[name:fa=~/ك/]
        if (u'name' in keys) or (u'name:fa' in keys):
            match = False
            if not match:
                capture_tags = {}
                try: match = (mapcss.regexp_test_(mapcss._value_capture(capture_tags, 0, self.re_4234bf3b), mapcss._tag_capture(capture_tags, 0, tags, u'name')) and mapcss.language(self.father.config.options, u'fa'))
                except mapcss.RuleAbort: pass
            if not match:
                capture_tags = {}
                try: match = (mapcss.regexp_test_(mapcss._value_capture(capture_tags, 0, self.re_4234bf3b), mapcss._tag_capture(capture_tags, 0, tags, u'name:fa')))
                except mapcss.RuleAbort: pass
            if match:
                # group:tr("Arabic letter detected in Farsi name")
                # -osmoseItemClassLevel:"5010/50109001/2"
                # throwError:tr("In Farsi, the Arabic letter '{0}' should be replaced by '{1}'","ك","ک")
                # fixAdd:concat("{0.key}=",replace("{0.value}","ك","ک"))
                # assertMatchWithContext:list('node name="روابط عمومي مجتمع مس شهربابك"','language=fa')
                # assertMatch:'node name:fa="روابط عمومي مجتمع مس شهربابك"'
                # assertNoMatch:'node name="روابط عمومي مجتمع مس شهربابك"'
                err.append({'class': 50109001, 'subclass': 0, 'text': mapcss.tr(u'In Farsi, the Arabic letter \'{0}\' should be replaced by \'{1}\'', u'ك', u'ک'), 'allow_fix_override': True, 'fix': {
                    '+': dict([
                    (mapcss.concat(mapcss._tag_uncapture(capture_tags, u'{0.key}='), mapcss.replace(mapcss._tag_uncapture(capture_tags, u'{0.value}'), u'ك', u'ک'))).split('=', 1)])
                }})

        return err
Example #2
0
    def way(self, data, tags, nds):
        capture_tags = {}
        keys = tags.keys()
        err = []


        # *[operator=ERDF][inside("FR")]
        if (u'operator' in keys):
            match = False
            if not match:
                capture_tags = {}
                try: match = (mapcss._tag_capture(capture_tags, 0, tags, u'operator') == mapcss._value_capture(capture_tags, 0, u'ERDF') and mapcss.inside(self.father.config.options, u'FR'))
                except mapcss.RuleAbort: pass
            if match:
                # group:tr("deprecated tagging")
                # throwWarning:tr("{0} is deprecated","{0.tag}")
                # suggestAlternative:"operator=Enedis"
                # fixAdd:"operator=Enedis"
                err.append({'class': 9009001, 'subclass': 262422756, 'text': mapcss.tr(u'{0} is deprecated', mapcss._tag_uncapture(capture_tags, u'{0.tag}')), 'allow_fix_override': True, 'fix': {
                    '+': dict([
                    [u'operator',u'Enedis']])
                }})

        # *[addr:street=~/(?i).*Strasse.*/][addr:street!~/(?i).*Strasser.*/][inside("DE,AT")]
        # *[name=~/(?i).*Strasse.*/][name!~/(?i).*Strasser.*/][inside("DE,AT")]
        if (u'addr:street' in keys) or (u'name' in keys):
            match = False
            if not match:
                capture_tags = {}
                try: match = (mapcss.regexp_test_(mapcss._value_capture(capture_tags, 0, self.re_5b84a257), mapcss._tag_capture(capture_tags, 0, tags, u'addr:street')) and not mapcss.regexp_test_(mapcss._value_capture(capture_tags, 1, self.re_559797c8), mapcss._tag_capture(capture_tags, 1, tags, u'addr:street')) and mapcss.inside(self.father.config.options, u'DE,AT'))
                except mapcss.RuleAbort: pass
            if not match:
                capture_tags = {}
                try: match = (mapcss.regexp_test_(mapcss._value_capture(capture_tags, 0, self.re_5b84a257), mapcss._tag_capture(capture_tags, 0, tags, u'name')) and not mapcss.regexp_test_(mapcss._value_capture(capture_tags, 1, self.re_559797c8), mapcss._tag_capture(capture_tags, 1, tags, u'name')) and mapcss.inside(self.father.config.options, u'DE,AT'))
                except mapcss.RuleAbort: pass
            if match:
                # throwError:tr("street name contains ss")
                err.append({'class': 9009002, 'subclass': 821908491, 'text': mapcss.tr(u'street name contains ss')})

        # *[addr:street=~/(?i).*Straße.*/][inside("LI,CH")]
        # *[name=~/(?i).*Straße.*/][inside("LI,CH")]
        if (u'addr:street' in keys) or (u'name' in keys):
            match = False
            if not match:
                capture_tags = {}
                try: match = (mapcss.regexp_test_(mapcss._value_capture(capture_tags, 0, self.re_3d3faeb5), mapcss._tag_capture(capture_tags, 0, tags, u'addr:street')) and mapcss.inside(self.father.config.options, u'LI,CH'))
                except mapcss.RuleAbort: pass
            if not match:
                capture_tags = {}
                try: match = (mapcss.regexp_test_(mapcss._value_capture(capture_tags, 0, self.re_3d3faeb5), mapcss._tag_capture(capture_tags, 0, tags, u'name')) and mapcss.inside(self.father.config.options, u'LI,CH'))
                except mapcss.RuleAbort: pass
            if match:
                # throwError:tr("street name contains ß")
                err.append({'class': 9009003, 'subclass': 610086334, 'text': mapcss.tr(u'street name contains ß')})

        return err
Example #3
0
    def node(self, data, tags):
        capture_tags = {}
        keys = tags.keys()
        err = []

        # node[place=locality][name=~/.+([Nn]ord|[Ss]ud$|[Ee]st|[Oo]uest|[Cc]entre)$/][inside("FR")]
        # node[place=hamlet][name=~/.+([Nn]ord|[Ss]ud$|[Ee]st|[Oo]uest|[Cc]entre)$/][inside("FR")]
        if (u'name' in keys and u'place' in keys):
            match = False
            if not match:
                capture_tags = {}
                try:
                    match = (
                        mapcss._tag_capture(capture_tags, 0, tags, u'place')
                        == mapcss._value_capture(capture_tags, 0, u'locality')
                        and mapcss.regexp_test_(
                            mapcss._value_capture(capture_tags, 1,
                                                  self.re_422a87ff),
                            mapcss._tag_capture(capture_tags, 1, tags,
                                                u'name'))
                        and mapcss.inside(self.father.config.options, u'FR'))
                except mapcss.RuleAbort:
                    pass
            if not match:
                capture_tags = {}
                try:
                    match = (
                        mapcss._tag_capture(capture_tags, 0, tags, u'place')
                        == mapcss._value_capture(capture_tags, 0, u'hamlet')
                        and mapcss.regexp_test_(
                            mapcss._value_capture(capture_tags, 1,
                                                  self.re_422a87ff),
                            mapcss._tag_capture(capture_tags, 1, tags,
                                                u'name'))
                        and mapcss.inside(self.father.config.options, u'FR'))
                except mapcss.RuleAbort:
                    pass
            if match:
                # -osmoseItemClassLevel:"5080/50801/1"
                # throwError:tr("Hamlet or Locality name suffix Nord, Sud, Est, Ouest, Centre should be removed from Cadastre name. Place should be integrated only once.")
                # assertNoMatchWithContext:list('node place=hamlet name="ZA Sud Loire"',"inside=FR")
                # assertMatchWithContext:list('node place=hamlet name=Montdésert-Sud',"inside=FR")
                err.append({
                    'class':
                    50801,
                    'subclass':
                    0,
                    'text':
                    mapcss.
                    tr(u'Hamlet or Locality name suffix Nord, Sud, Est, Ouest, Centre should be removed from Cadastre name. Place should be integrated only once.'
                       )
                })

        return err
    def relation(self, data, tags, *args):
        capture_tags = {}
        keys = tags.keys()
        err = []

        # *[addr:housenumber][addr:housenumber!~/^((?:вл)?[0-9]+[А-Я]?(?:\/[0-9]+[А-Я]?)?(?: к[0-9А-Я]+)?(?: с[0-9А-Я]+)?(?: соор[0-9А-Я]+)?(?: лит[0-9А-Я]+)?(?: фл[0-9А-Я]+)?|[0-9]+-[0-9]+|[0-9]+[А-Я]?[\/-][0-9]+[А-Я]?[\/-][0-9]+[А-Я]?|(([0-9]+[А-Я]?[IXV]*)|[IXV]*)[\/-]([0-9]+[А-Я]?|[IXV]*)|ЗЯБ-[0-9]+|С-([0-9]+[А-Я]?(?:\/[0-9]+[А-Я]?)?|[IXV]*)|к[0-9А-Я]+)$/]
        if u'addr:housenumber' in keys:
            match = False
            try:
                match = match or ((mapcss._tag_capture(
                    capture_tags, 0, tags,
                    u'addr:housenumber') and not mapcss.regexp_test_(
                        mapcss._value_capture(capture_tags, 1,
                                              self.re_62d22c1b),
                        mapcss._tag_capture(capture_tags, 1, tags,
                                            u'addr:housenumber'))))
            except mapcss.RuleAbort:
                pass
            if match:
                # throwWarning:tr("Номера домов не соответствующие принятому соглашению")
                err.append({
                    'class':
                    9017001,
                    'subclass':
                    774061168,
                    'text':
                    mapcss.
                    tr(u'Номера домов не соответствующие принятому соглашению',
                       capture_tags)
                })

        return err
Example #5
0
    def way(self, data, tags, *args):
        capture_tags = {}
        keys = tags.keys()
        err = []

        # way[place=locality][name=~/.+([Nn]ord|[Ss]ud$|[Ee]st|[Oo]uest|[Cc]entre)$/][inside("FR")]
        # way[place=hamlet][name=~/.+([Nn]ord|[Ss]ud$|[Ee]st|[Oo]uest|[Cc]entre)$/][inside("FR")]
        if u'place' in keys:
            match = False
            try:
                match = match or (
                    (mapcss._tag_capture(capture_tags, 0, tags, u'place')
                     == mapcss._value_capture(capture_tags, 0, u'locality')
                     and mapcss.regexp_test_(
                         mapcss._value_capture(capture_tags, 1,
                                               self.re_422a87ff),
                         mapcss._tag_capture(capture_tags, 1, tags, u'name'))
                     and mapcss.inside(self.father.config.options, u'FR')))
            except mapcss.RuleAbort:
                pass
            try:
                match = match or (
                    (mapcss._tag_capture(capture_tags, 0, tags, u'place')
                     == mapcss._value_capture(capture_tags, 0, u'hamlet')
                     and mapcss.regexp_test_(
                         mapcss._value_capture(capture_tags, 1,
                                               self.re_422a87ff),
                         mapcss._tag_capture(capture_tags, 1, tags, u'name'))
                     and mapcss.inside(self.father.config.options, u'FR')))
            except mapcss.RuleAbort:
                pass
            if match:
                # osmoseTags:list("name")
                # osmoseItemClassLevel:"5080/50801/1"
                # throwError:tr("Hamlet or Locality name suffix Nord, Sud, Est, Ouest, Centre should be removed from Cadastre name. Place should be integrated only once.")
                err.append({
                    'class':
                    50801,
                    'subclass':
                    0,
                    'text':
                    mapcss.tr(
                        u'Hamlet or Locality name suffix Nord, Sud, Est, Ouest, Centre should be removed from Cadastre name. Place should be integrated only once.',
                        capture_tags)
                })

        return err
Example #6
0
    def node(self, data, tags, *args):
        capture_tags = {}
        keys = tags.keys()
        err = []
        set_fixable_footway = set_link_road = set_major_road = set_minor_road = set_not_fixable_footway = False

        # node[highway=~/motorway|trunk|primary|secondary|tertiary|unclassified|residential|service|living_street|pedestrian|track|path|footway|cycleway|bus_guideway|bridleway/][highway!=motorway_junction][highway!=services]
        if u'highway' in keys:
            match = False
            try:
                match = match or (
                    (mapcss.regexp_test_(
                        mapcss._value_capture(capture_tags, 0,
                                              self.re_3dc5dd7c),
                        mapcss._tag_capture(capture_tags, 0, tags, u'highway'))
                     and mapcss._tag_capture(capture_tags, 1, tags, u'highway')
                     != mapcss._value_capture(capture_tags, 1,
                                              u'motorway_junction')
                     and mapcss._tag_capture(capture_tags, 2, tags, u'highway')
                     != mapcss._value_capture(capture_tags, 2, u'services')))
            except mapcss.RuleAbort:
                pass
            if match:
                # throwWarning:tr("wrong highway tag on a node")
                # assertNoMatch:"node highway=bus_stop"
                # assertNoMatch:"node highway=crossing"
                # assertNoMatch:"node highway=emergency_access_point"
                # assertNoMatch:"node highway=give_way"
                # assertNoMatch:"node highway=mini_roundabout"
                # assertNoMatch:"node highway=motorway_junction"
                # assertNoMatch:"node highway=passing_place"
                # assertMatch:"node highway=primary"
                # assertMatch:"node highway=primary_link"
                # assertNoMatch:"node highway=rest_area"
                # assertNoMatch:"node highway=services"
                # assertNoMatch:"node highway=speed_camera"
                # assertNoMatch:"node highway=stop"
                # assertNoMatch:"node highway=street_lamp"
                # assertNoMatch:"node highway=traffic_calming"
                # assertNoMatch:"node highway=traffic_signals"
                # assertNoMatch:"node highway=turning_circle"
                err.append({
                    'class':
                    9004008,
                    'subclass':
                    325492196,
                    'text':
                    mapcss.tr(u'wrong highway tag on a node', capture_tags)
                })

        # node[railway!=crossing].is_in_railway.is_in_minor_road!.is_in_major_road
        # Use undeclared class is_in_major_road, is_in_minor_road, is_in_railway

        # node[railway!=level_crossing].is_in_railway.is_in_major_road!.is_in_minor_road
        # Use undeclared class is_in_major_road, is_in_minor_road, is_in_railway

        return err
Example #7
0
    def way(self, data, tags, *args):
        capture_tags = {}
        keys = tags.keys()
        err = []
        set_fixable_footway = set_link_road = set_major_road = set_minor_road = set_not_fixable_footway = False

        # way[highway=~/^(motorway|trunk|primary|secondary|tertiary)$/]
        if u'highway' in keys:
            match = False
            try:
                match = match or ((mapcss.regexp_test_(
                    mapcss._value_capture(capture_tags, 0, self.re_55ee32ac),
                    mapcss._tag_capture(capture_tags, 0, tags, u'highway'))))
            except mapcss.RuleAbort:
                pass
            if match:
                # setmajor_road
                set_major_road = True

        # way[highway=~/^.*_link$/]
        if u'highway' in keys:
            match = False
            try:
                match = match or ((mapcss.regexp_test_(
                    mapcss._value_capture(capture_tags, 0, self.re_3092b7ac),
                    mapcss._tag_capture(capture_tags, 0, tags, u'highway'))))
            except mapcss.RuleAbort:
                pass
            if match:
                # setlink_road
                set_link_road = True

        # way[highway=~/^(unclassified|residential|living_street|service)$/]
        if u'highway' in keys:
            match = False
            try:
                match = match or ((mapcss.regexp_test_(
                    mapcss._value_capture(capture_tags, 0, self.re_015aabd5),
                    mapcss._tag_capture(capture_tags, 0, tags, u'highway'))))
            except mapcss.RuleAbort:
                pass
            if match:
                # setminor_road
                set_minor_road = True

        # way[highway][name=~/(?i).* (Ave|Blvd|Br|Brg|Cct|Cir|Cl|Cr|Crct|Cres|Crt|Ct|Dr|Drv|Esp|Espl|Hwy|Ln|Mw|Mwy|Pky|Pkwy|Pl|Rd|Qy|Qys|Sq|St|Str|Ter|Tce|Tr|Wy)[.]?$/]
        if u'highway' in keys:
            match = False
            try:
                match = match or ((mapcss._tag_capture(
                    capture_tags, 0, tags, u'highway') and mapcss.regexp_test_(
                        mapcss._value_capture(capture_tags, 1,
                                              self.re_776f2c1a),
                        mapcss._tag_capture(capture_tags, 1, tags, u'name'))))
            except mapcss.RuleAbort:
                pass
            if match:
                # throwWarning:tr("abbreviated street name")
                # assertMatch:"way highway=unclassified name=\"Bou Blvd.\""
                # assertMatch:"way highway=unclassified name=\"Bou blvd.\""
                # assertMatch:"way highway=unclassified name=\"Foo Ave\""
                # assertMatch:"way highway=unclassified name=\"Foo Ave.\""
                err.append({
                    'class':
                    9004001,
                    'subclass':
                    544432044,
                    'text':
                    mapcss.tr(u'abbreviated street name', capture_tags)
                })

        # way[highway=crossing]
        # way[railway=crossing]
        # way[railway=level_crossing]
        if u'highway' in keys or u'railway' in keys:
            match = False
            try:
                match = match or (
                    (mapcss._tag_capture(capture_tags, 0, tags, u'highway')
                     == mapcss._value_capture(capture_tags, 0, u'crossing')))
            except mapcss.RuleAbort:
                pass
            try:
                match = match or (
                    (mapcss._tag_capture(capture_tags, 0, tags, u'railway')
                     == mapcss._value_capture(capture_tags, 0, u'crossing')))
            except mapcss.RuleAbort:
                pass
            try:
                match = match or ((mapcss._tag_capture(capture_tags, 0, tags,
                                                       u'railway')
                                   == mapcss._value_capture(
                                       capture_tags, 0, u'level_crossing')))
            except mapcss.RuleAbort:
                pass
            if match:
                # throwWarning:tr("wrong crossing tag on a way")
                # assertMatch:"way highway=crossing"
                err.append({
                    'class':
                    9004002,
                    'subclass':
                    1549110307,
                    'text':
                    mapcss.tr(u'wrong crossing tag on a way', capture_tags)
                })

        # way[highway=road]
        if u'highway' in keys:
            match = False
            try:
                match = match or (
                    (mapcss._tag_capture(capture_tags, 0, tags, u'highway')
                     == mapcss._value_capture(capture_tags, 0, u'road')))
            except mapcss.RuleAbort:
                pass
            if match:
                # throwWarning:tr("Unspecific highway type")
                # assertNoMatch:"way highway=residential"
                # assertMatch:"way highway=road"
                err.append({
                    'class':
                    9004004,
                    'subclass':
                    1856552890,
                    'text':
                    mapcss.tr(u'Unspecific highway type', capture_tags)
                })

        # way[highway=footway][maxspeed]
        # way[highway=steps][maxspeed]
        # way[highway=cycleway][bicycle=no]
        # way[highway=footway][foot=no]
        # way[highway=cycleway][cycleway=lane]
        if u'highway' in keys:
            match = False
            try:
                match = match or (
                    (mapcss._tag_capture(capture_tags, 0, tags, u'highway')
                     == mapcss._value_capture(capture_tags, 0, u'footway') and
                     mapcss._tag_capture(capture_tags, 1, tags, u'maxspeed')))
            except mapcss.RuleAbort:
                pass
            try:
                match = match or (
                    (mapcss._tag_capture(capture_tags, 0, tags, u'highway')
                     == mapcss._value_capture(capture_tags, 0, u'steps') and
                     mapcss._tag_capture(capture_tags, 1, tags, u'maxspeed')))
            except mapcss.RuleAbort:
                pass
            try:
                match = match or (
                    (mapcss._tag_capture(capture_tags, 0, tags, u'highway')
                     == mapcss._value_capture(capture_tags, 0, u'cycleway')
                     and mapcss._tag_capture(capture_tags, 1, tags, u'bicycle')
                     == mapcss._value_capture(capture_tags, 1, u'no')))
            except mapcss.RuleAbort:
                pass
            try:
                match = match or (
                    (mapcss._tag_capture(capture_tags, 0, tags, u'highway')
                     == mapcss._value_capture(capture_tags, 0, u'footway')
                     and mapcss._tag_capture(capture_tags, 1, tags, u'foot')
                     == mapcss._value_capture(capture_tags, 1, u'no')))
            except mapcss.RuleAbort:
                pass
            try:
                match = match or ((
                    mapcss._tag_capture(capture_tags, 0, tags, u'highway')
                    == mapcss._value_capture(capture_tags, 0, u'cycleway')
                    and mapcss._tag_capture(capture_tags, 1, tags, u'cycleway')
                    == mapcss._value_capture(capture_tags, 1, u'lane')))
            except mapcss.RuleAbort:
                pass
            if match:
                # throwWarning:tr("{0} used with {1}","{0.value}","{1.tag}")
                # assertNoMatch:"way highway=cycleway bicycle=yes"
                # assertMatch:"way highway=cycleway cycleway=lane"
                # assertNoMatch:"way highway=cycleway"
                # assertNoMatch:"way highway=cycleway"
                # assertNoMatch:"way highway=footway foot=yes"
                # assertMatch:"way highway=footway maxspeed=20"
                # assertNoMatch:"way highway=footway"
                # assertNoMatch:"way highway=footway"
                # assertNoMatch:"way highway=residential cycleway=lane"
                # assertNoMatch:"way highway=residential maxspeed=20"
                err.append({
                    'class':
                    9004005,
                    'subclass':
                    469607562,
                    'text':
                    mapcss.tr(u'{0} used with {1}', capture_tags, u'{0.value}',
                              u'{1.tag}')
                })

        # way[footway=left][/^footway:/]
        # way[footway=right][/^footway:/]
        # way[footway=both][/^footway:/]
        # way[footway=no][/^footway:/]
        if u'footway' in keys:
            match = False
            try:
                match = match or (
                    (mapcss._tag_capture(capture_tags, 0, tags, u'footway')
                     == mapcss._value_capture(capture_tags, 0, u'left')
                     and mapcss._tag_capture(capture_tags, 1, tags,
                                             self.re_4dcdb354)))
            except mapcss.RuleAbort:
                pass
            try:
                match = match or (
                    (mapcss._tag_capture(capture_tags, 0, tags, u'footway')
                     == mapcss._value_capture(capture_tags, 0, u'right')
                     and mapcss._tag_capture(capture_tags, 1, tags,
                                             self.re_4dcdb354)))
            except mapcss.RuleAbort:
                pass
            try:
                match = match or (
                    (mapcss._tag_capture(capture_tags, 0, tags, u'footway')
                     == mapcss._value_capture(capture_tags, 0, u'both')
                     and mapcss._tag_capture(capture_tags, 1, tags,
                                             self.re_4dcdb354)))
            except mapcss.RuleAbort:
                pass
            try:
                match = match or (
                    (mapcss._tag_capture(capture_tags, 0, tags, u'footway')
                     == mapcss._value_capture(capture_tags, 0, u'no')
                     and mapcss._tag_capture(capture_tags, 1, tags,
                                             self.re_4dcdb354)))
            except mapcss.RuleAbort:
                pass
            if match:
                # setnot_fixable_footway
                # group:tr("deprecated tagging")
                # throwWarning:tr("{0} is deprecated, use {1} instead. Also check similar tags like {2}","{0.tag}","sidewalk","{1.key}")
                # assertMatch:"way footway=both footway:surface=asphalt"
                set_not_fixable_footway = True
                err.append({
                    'class':
                    9004006,
                    'subclass':
                    141262069,
                    'text':
                    mapcss.tr(
                        u'{0} is deprecated, use {1} instead. Also check similar tags like {2}',
                        capture_tags, u'{0.tag}', u'sidewalk', u'{1.key}')
                })

        # way[footway=none][/footway:/]
        if u'footway' in keys:
            match = False
            try:
                match = match or (
                    (mapcss._tag_capture(capture_tags, 0, tags, u'footway')
                     == mapcss._value_capture(capture_tags, 0, u'none')
                     and mapcss._tag_capture(capture_tags, 1, tags,
                                             self.re_61bbe299)))
            except mapcss.RuleAbort:
                pass
            if match:
                # setnot_fixable_footway
                # group:tr("deprecated tagging")
                # throwWarning:tr("{0} is deprecated, use {1} instead. Also check similar tags like {2}","{0.tag}","sidewalk=no","{1.key}")
                set_not_fixable_footway = True
                err.append({
                    'class':
                    9004006,
                    'subclass':
                    1570348899,
                    'text':
                    mapcss.tr(
                        u'{0} is deprecated, use {1} instead. Also check similar tags like {2}',
                        capture_tags, u'{0.tag}', u'sidewalk=no', u'{1.key}')
                })

        # way[footway=left]!.not_fixable_footway
        # way[footway=right]!.not_fixable_footway
        # way[footway=both]!.not_fixable_footway
        # way[footway=no]!.not_fixable_footway
        if u'footway' in keys:
            match = False
            try:
                match = match or (
                    (not set_not_fixable_footway
                     and mapcss._tag_capture(capture_tags, 0, tags, u'footway')
                     == mapcss._value_capture(capture_tags, 0, u'left')))
            except mapcss.RuleAbort:
                pass
            try:
                match = match or (
                    (not set_not_fixable_footway
                     and mapcss._tag_capture(capture_tags, 0, tags, u'footway')
                     == mapcss._value_capture(capture_tags, 0, u'right')))
            except mapcss.RuleAbort:
                pass
            try:
                match = match or (
                    (not set_not_fixable_footway
                     and mapcss._tag_capture(capture_tags, 0, tags, u'footway')
                     == mapcss._value_capture(capture_tags, 0, u'both')))
            except mapcss.RuleAbort:
                pass
            try:
                match = match or (
                    (not set_not_fixable_footway
                     and mapcss._tag_capture(capture_tags, 0, tags, u'footway')
                     == mapcss._value_capture(capture_tags, 0, u'no')))
            except mapcss.RuleAbort:
                pass
            if match:
                # setfixable_footway
                # group:tr("deprecated tagging")
                # throwWarning:tr("{0} is deprecated","{0.tag}")
                # suggestAlternative:"sidewalk"
                # fixChangeKey:"footway => sidewalk"
                set_fixable_footway = True
                err.append({
                    'class':
                    9004006,
                    'subclass':
                    2076937761,
                    'text':
                    mapcss.tr(u'{0} is deprecated', capture_tags, u'{0.tag}'),
                    'fix': {
                        '+': dict([[u'sidewalk',
                                    mapcss.tag(tags, u'footway')]]),
                        '-': ([u'footway'])
                    }
                })

        # way[footway=none]!.not_fixable_footway
        if u'footway' in keys:
            match = False
            try:
                match = match or (
                    (not set_not_fixable_footway
                     and mapcss._tag_capture(capture_tags, 0, tags, u'footway')
                     == mapcss._value_capture(capture_tags, 0, u'none')))
            except mapcss.RuleAbort:
                pass
            if match:
                # setfixable_footway
                # group:tr("deprecated tagging")
                # throwWarning:tr("{0} is deprecated","{0.tag}")
                # suggestAlternative:"sidewalk=no"
                # fixRemove:"footway"
                # fixAdd:"sidewalk=no"
                set_fixable_footway = True
                err.append({
                    'class':
                    9004006,
                    'subclass':
                    430589555,
                    'text':
                    mapcss.tr(u'{0} is deprecated', capture_tags, u'{0.tag}'),
                    'fix': {
                        '+': dict([[u'sidewalk', u'no']]),
                        '-': ([u'footway'])
                    }
                })

        # way[footway][footway!=sidewalk][footway!=crossing]!.fixable_footway!.not_fixable_footway
        if u'footway' in keys:
            match = False
            try:
                match = match or (
                    (not set_fixable_footway and not set_not_fixable_footway
                     and mapcss._tag_capture(capture_tags, 0, tags, u'footway')
                     and mapcss._tag_capture(capture_tags, 1, tags, u'footway')
                     != mapcss._value_capture(capture_tags, 1, u'sidewalk')
                     and mapcss._tag_capture(capture_tags, 2, tags, u'footway')
                     != mapcss._value_capture(capture_tags, 2, u'crossing')))
            except mapcss.RuleAbort:
                pass
            if match:
                # throwWarning:tr("Value of ''{0}'' should either be ''{1}'' or ''{2}''. For sidewalks use ''{3}'' instead.","{0.key}","{1.value}","{2.value}","sidewalk=left|right|both|no")
                # assertMatch:"way footway=bar"
                # assertNoMatch:"way footway=left footway:left:surface=asphalt"
                # assertNoMatch:"way footway=left"
                # assertNoMatch:"way footway=none"
                err.append({
                    'class':
                    9004007,
                    'subclass':
                    156640320,
                    'text':
                    mapcss.tr(
                        u'Value of \'\'{0}\'\' should either be \'\'{1}\'\' or \'\'{2}\'\'. For sidewalks use \'\'{3}\'\' instead.',
                        capture_tags, u'{0.key}', u'{1.value}', u'{2.value}',
                        u'sidewalk=left|right|both|no')
                })

        return err
Example #8
0
    def way(self, data, tags, *args):
        capture_tags = {}
        keys = tags.keys()
        err = []

        # way[cycleway][cycleway:right][cycleway:left]
        if u'cycleway' in keys:
            match = False
            try:
                match = match or (
                    (mapcss._tag_capture(capture_tags, 0, tags, u'cycleway')
                     and mapcss._tag_capture(capture_tags, 1, tags,
                                             u'cycleway:right')
                     and mapcss._tag_capture(capture_tags, 2, tags,
                                             u'cycleway:left')))
            except mapcss.RuleAbort:
                pass
            if match:
                # osmoseTags:list("tag","highway","cycleway")
                # osmoseItemClassLevel:"4030/40301/2"
                # throwWarning:tr("{0} with {1} and {2}","{0.key}","{1.key}","{2.key}")
                # assertMatch:"way cycleway=a cycleway:right=b cycleway:left=c"
                err.append({
                    'class':
                    40301,
                    'subclass':
                    0,
                    'text':
                    mapcss.tr(u'{0} with {1} and {2}', capture_tags,
                              u'{0.key}', u'{1.key}', u'{2.key}')
                })

        # way[footway=sidewalk][highway!~/footway|construction/]
        if u'footway' in keys:
            match = False
            try:
                match = match or (
                    (mapcss._tag_capture(capture_tags, 0, tags, u'footway')
                     == mapcss._value_capture(capture_tags, 0, u'sidewalk')
                     and not mapcss.regexp_test_(
                         mapcss._value_capture(capture_tags, 1,
                                               self.re_1825c777),
                         mapcss._tag_capture(capture_tags, 1, tags,
                                             u'highway'))))
            except mapcss.RuleAbort:
                pass
            if match:
                # osmoseTags:list("tag","highway","footway")
                # osmoseItemClassLevel:"2080/20805/3"
                # throwWarning:tr("{0} without {1}","{0.tag}","highway=footway|construction")
                # assertNoMatch:"way footway=sidewalk highway=construction construction=footway"
                # assertNoMatch:"way footway=sidewalk highway=footway"
                # assertMatch:"way footway=sidewalk highway=path"
                err.append({
                    'class':
                    20805,
                    'subclass':
                    0,
                    'text':
                    mapcss.tr(u'{0} without {1}', capture_tags, u'{0.tag}',
                              u'highway=footway|construction')
                })

        # way[highway=service][service=psv][psv!=yes]
        if u'highway' in keys:
            match = False
            try:
                match = match or (
                    (mapcss._tag_capture(capture_tags, 0, tags, u'highway')
                     == mapcss._value_capture(capture_tags, 0, u'service')
                     and mapcss._tag_capture(capture_tags, 1, tags, u'service')
                     == mapcss._value_capture(capture_tags, 1, u'psv')
                     and mapcss._tag_capture(capture_tags, 2, tags, u'psv') !=
                     mapcss._value_capture(capture_tags, 2, u'yes')))
            except mapcss.RuleAbort:
                pass
            if match:
                # osmoseTags:list("tag","highway")
                # osmoseItemClassLevel:"4010/40101/2"
                # throwWarning:tr("{0} is preferred to {1}","{2.tag}","{1.tag}")
                # fixAdd:"psv=yes"
                # fixRemove:"service"
                # assertMatch:"way highway=service service=psv psv=no"
                # assertNoMatch:"way highway=service service=psv psv=yes"
                err.append({
                    'class':
                    40101,
                    'subclass':
                    0,
                    'text':
                    mapcss.tr(u'{0} is preferred to {1}', capture_tags,
                              u'{2.tag}', u'{1.tag}'),
                    'fix': {
                        '+': dict([[u'psv', u'yes']]),
                        '-': ([u'service'])
                    }
                })

        # way[highway=cycleway][cycleway=track]
        if u'highway' in keys:
            match = False
            try:
                match = match or ((
                    mapcss._tag_capture(capture_tags, 0, tags, u'highway')
                    == mapcss._value_capture(capture_tags, 0, u'cycleway')
                    and mapcss._tag_capture(capture_tags, 1, tags, u'cycleway')
                    == mapcss._value_capture(capture_tags, 1, u'track')))
            except mapcss.RuleAbort:
                pass
            if match:
                # osmoseTags:list("tag","highway","cycleway")
                # osmoseItemClassLevel:"3032/30328/2"
                # throwWarning:tr("{0} with {1}","{0.tag}","{1.tag}")
                # fixRemove:"cycleway"
                err.append({
                    'class':
                    30328,
                    'subclass':
                    0,
                    'text':
                    mapcss.tr(u'{0} with {1}', capture_tags, u'{0.tag}',
                              u'{1.tag}'),
                    'fix': {
                        '-': ([u'cycleway'])
                    }
                })

        # way[cycleway=~/opposite|opposite_lane/][!oneway]
        # way[cycleway=~/opposite|opposite_lane/][oneway=no]
        if u'cycleway' in keys:
            match = False
            try:
                match = match or ((mapcss.regexp_test_(
                    mapcss._value_capture(capture_tags, 0, self.re_67b51e41),
                    mapcss._tag_capture(capture_tags, 0, tags, u'cycleway'))
                                   and not mapcss._tag_capture(
                                       capture_tags, 1, tags, u'oneway')))
            except mapcss.RuleAbort:
                pass
            try:
                match = match or ((mapcss.regexp_test_(
                    mapcss._value_capture(capture_tags, 0, self.re_67b51e41),
                    mapcss._tag_capture(capture_tags, 0, tags, u'cycleway'))
                                   and mapcss._tag_capture(
                                       capture_tags, 1, tags,
                                       u'oneway') == mapcss._value_capture(
                                           capture_tags, 1, u'no')))
            except mapcss.RuleAbort:
                pass
            if match:
                # osmoseTags:list("tag","highway","cycleway","fix:survey")
                # osmoseItemClassLevel:"2030/20301/1"
                # throwError:tr("Opposite cycleway without oneway")
                # assertNoMatch:"way cycleway=lane oneway=yes"
                # assertNoMatch:"way cycleway=opposite oneway=yes"
                # assertMatch:"way cycleway=opposite"
                err.append({
                    'class':
                    20301,
                    'subclass':
                    0,
                    'text':
                    mapcss.tr(u'Opposite cycleway without oneway',
                              capture_tags)
                })

        # way:righthandtraffic["cycleway:right"=~/opposite|opposite_lane/][oneway=yes]
        # way:righthandtraffic["cycleway:left"=~/opposite|opposite_lane/][oneway="-1"]
        # way!:righthandtraffic["cycleway:left"=~/opposite|opposite_lane/][oneway=yes]
        # way!:righthandtraffic["cycleway:right"=~/opposite|opposite_lane/][oneway="-1"]
        if u'cycleway:left' in keys or u'cycleway:right' in keys:
            match = False
            try:
                match = match or (
                    (mapcss.regexp_test_(
                        mapcss._value_capture(capture_tags, 0,
                                              self.re_67b51e41),
                        mapcss._tag_capture(capture_tags, 0, tags,
                                            u'cycleway:right'))
                     and mapcss._tag_capture(capture_tags, 1, tags, u'oneway')
                     == mapcss._value_capture(capture_tags, 1, u'yes')
                     and mapcss.setting(self.father.config.options,
                                        u'driving_side') != u'left'))
            except mapcss.RuleAbort:
                pass
            try:
                match = match or (
                    (mapcss.regexp_test_(
                        mapcss._value_capture(capture_tags, 0,
                                              self.re_67b51e41),
                        mapcss._tag_capture(capture_tags, 0, tags,
                                            u'cycleway:left'))
                     and mapcss._tag_capture(capture_tags, 1, tags, u'oneway')
                     == mapcss._value_capture(capture_tags, 1, u'-1')
                     and mapcss.setting(self.father.config.options,
                                        u'driving_side') != u'left'))
            except mapcss.RuleAbort:
                pass
            try:
                match = match or (
                    (mapcss.regexp_test_(
                        mapcss._value_capture(capture_tags, 0,
                                              self.re_67b51e41),
                        mapcss._tag_capture(capture_tags, 0, tags,
                                            u'cycleway:left'))
                     and mapcss._tag_capture(capture_tags, 1, tags, u'oneway')
                     == mapcss._value_capture(capture_tags, 1, u'yes')
                     and mapcss.setting(self.father.config.options,
                                        u'driving_side') == u'left'))
            except mapcss.RuleAbort:
                pass
            try:
                match = match or (
                    (mapcss.regexp_test_(
                        mapcss._value_capture(capture_tags, 0,
                                              self.re_67b51e41),
                        mapcss._tag_capture(capture_tags, 0, tags,
                                            u'cycleway:right'))
                     and mapcss._tag_capture(capture_tags, 1, tags, u'oneway')
                     == mapcss._value_capture(capture_tags, 1, u'-1')
                     and mapcss.setting(self.father.config.options,
                                        u'driving_side') == u'left'))
            except mapcss.RuleAbort:
                pass
            if match:
                # osmoseTags:list("tag","highway","cycleway","fix:survey")
                # osmoseItemClassLevel:"2030/20302/1"
                # throwError:tr("Opposite or opposite lane in the same way of the oneway")
                # assertMatch:"way cycleway:right=opposite oneway=yes"
                # assertNoMatch:"way cycleway=opposite oneway=yes"
                err.append({
                    'class':
                    20302,
                    'subclass':
                    0,
                    'text':
                    mapcss.tr(
                        u'Opposite or opposite lane in the same way of the oneway',
                        capture_tags)
                })

        return err
    def relation(self, data, tags, members):
        capture_tags = {}
        keys = tags.keys()
        err = []

        # *[access][highway=proposed]
        # *[motor_vehicle?][vehicle!=no][access!=no][bicycle_road!=yes][highway=~/^(motorway|motorway_link|trunk|trunk_link|primary|primary_link|secondary|secondary_link|tertiary|tertiary_link|unclassified|residential|service|living_street)$/]
        # *[bridge=no]
        # *[building=no]
        # *[elevation="0"]
        # *[layer="0"]
        if (u'bridge' in keys) or (u'building' in keys) or (
                u'elevation'
                in keys) or (u'access' in keys and u'highway' in keys) or (
                    u'highway' in keys
                    and u'motor_vehicle' in keys) or (u'layer' in keys):
            match = False
            if not match:
                capture_tags = {}
                try:
                    match = (
                        mapcss._tag_capture(capture_tags, 0, tags, u'access')
                        and mapcss._tag_capture(capture_tags, 1, tags,
                                                u'highway')
                        == mapcss._value_capture(capture_tags, 1, u'proposed'))
                except mapcss.RuleAbort:
                    pass
            if not match:
                capture_tags = {}
                try:
                    match = (
                        mapcss._tag_capture(
                            capture_tags, 0, tags,
                            u'motor_vehicle') in ('yes', 'true', '1') and
                        mapcss._tag_capture(capture_tags, 1, tags, u'vehicle')
                        != mapcss._value_capture(capture_tags, 1, u'no') and
                        mapcss._tag_capture(capture_tags, 2, tags, u'access')
                        != mapcss._value_capture(capture_tags, 2, u'no')
                        and mapcss._tag_capture(capture_tags, 3, tags,
                                                u'bicycle_road') !=
                        mapcss._value_capture(capture_tags, 3, u'yes')
                        and mapcss.regexp_test_(
                            mapcss._value_capture(capture_tags, 4,
                                                  self.re_3ad9e1f5),
                            mapcss._tag_capture(capture_tags, 4, tags,
                                                u'highway')))
                except mapcss.RuleAbort:
                    pass
            if not match:
                capture_tags = {}
                try:
                    match = (mapcss._tag_capture(
                        capture_tags, 0, tags,
                        u'bridge') == mapcss._value_capture(
                            capture_tags, 0, u'no'))
                except mapcss.RuleAbort:
                    pass
            if not match:
                capture_tags = {}
                try:
                    match = (mapcss._tag_capture(
                        capture_tags, 0, tags,
                        u'building') == mapcss._value_capture(
                            capture_tags, 0, u'no'))
                except mapcss.RuleAbort:
                    pass
            if not match:
                capture_tags = {}
                try:
                    match = (mapcss._tag_capture(
                        capture_tags, 0, tags,
                        u'elevation') == mapcss._value_capture(
                            capture_tags, 0, u'0'))
                except mapcss.RuleAbort:
                    pass
            if not match:
                capture_tags = {}
                try:
                    match = (mapcss._tag_capture(
                        capture_tags, 0, tags,
                        u'layer') == mapcss._value_capture(
                            capture_tags, 0, u'0'))
                except mapcss.RuleAbort:
                    pass
            if match:
                # group:tr("unnecessary tag")
                # throwWarning:tr("{0} is unnecessary","{0.tag}")
                # fixRemove:"{0.key}"
                err.append({
                    'class':
                    9010001,
                    'subclass':
                    1949087363,
                    'text':
                    mapcss.tr(u'{0} is unnecessary',
                              mapcss._tag_uncapture(capture_tags, u'{0.tag}')),
                    'allow_fix_override':
                    True,
                    'fix': {
                        '-':
                        ([mapcss._tag_uncapture(capture_tags, u'{0.key}')])
                    }
                })

        # *[emergency=permissive]
        if (u'emergency' in keys):
            match = False
            if not match:
                capture_tags = {}
                try:
                    match = (mapcss._tag_capture(
                        capture_tags, 0, tags,
                        u'emergency') == mapcss._value_capture(
                            capture_tags, 0, u'permissive'))
                except mapcss.RuleAbort:
                    pass
            if match:
                # throwWarning:tr("{0} makes no sense","{0.tag")
                # fixAdd:"emergency=yes"
                err.append({
                    'class': 9010002,
                    'subclass': 325672362,
                    'text': mapcss.tr(u'{0} makes no sense', u'{0.tag'),
                    'allow_fix_override': True,
                    'fix': {
                        '+': dict([[u'emergency', u'yes']])
                    }
                })

        # *[payment:cash][payment:coins][payment:notes]
        if (u'payment:cash' in keys and u'payment:coins' in keys
                and u'payment:notes' in keys):
            match = False
            if not match:
                capture_tags = {}
                try:
                    match = (mapcss._tag_capture(capture_tags, 0, tags,
                                                 u'payment:cash')
                             and mapcss._tag_capture(capture_tags, 1, tags,
                                                     u'payment:coins')
                             and mapcss._tag_capture(capture_tags, 2, tags,
                                                     u'payment:notes'))
                except mapcss.RuleAbort:
                    pass
            if match:
                # group:tr("unnecessary tag")
                # throwWarning:tr("{0} together with {1} and {2}. Remove {0}.","{0.key}","{1.key}","{2.key}")
                # fixRemove:"payment:cash"
                err.append({
                    'class':
                    9010001,
                    'subclass':
                    1340792439,
                    'text':
                    mapcss.tr(u'{0} together with {1} and {2}. Remove {0}.',
                              mapcss._tag_uncapture(capture_tags, u'{0.key}'),
                              mapcss._tag_uncapture(capture_tags, u'{1.key}'),
                              mapcss._tag_uncapture(capture_tags, u'{2.key}')),
                    'allow_fix_override':
                    True,
                    'fix': {
                        '-': ([u'payment:cash'])
                    }
                })

        return err
Example #10
0
    def relation(self, data, tags, members):
        capture_tags = {}
        keys = tags.keys()
        err = []
        set_pt_route = set_pt_route_master = False

        # relation[type=route][!route]
        if (u'type' in keys):
            match = False
            if not match:
                capture_tags = {}
                try: match = (mapcss._tag_capture(capture_tags, 0, tags, u'type') == mapcss._value_capture(capture_tags, 0, u'route') and not mapcss._tag_capture(capture_tags, 1, tags, u'route'))
                except mapcss.RuleAbort: pass
            if match:
                # throwError:tr("Missing transportation mode, add a tag route = bus/coach/tram/etc")
                err.append({'class': 9014009, 'subclass': 828849115, 'text': mapcss.tr(u'Missing transportation mode, add a tag route = bus/coach/tram/etc')})

        # relation[type=route_master][!route_master][!route]
        if (u'type' in keys):
            match = False
            if not match:
                capture_tags = {}
                try: match = (mapcss._tag_capture(capture_tags, 0, tags, u'type') == mapcss._value_capture(capture_tags, 0, u'route_master') and not mapcss._tag_capture(capture_tags, 1, tags, u'route_master') and not mapcss._tag_capture(capture_tags, 2, tags, u'route'))
                except mapcss.RuleAbort: pass
            if match:
                # throwError:tr("Missing transportation mode, add a tag route = bus/coach/tram/etc")
                err.append({'class': 9014009, 'subclass': 607011337, 'text': mapcss.tr(u'Missing transportation mode, add a tag route = bus/coach/tram/etc')})

        # relation[type=route_master][!route_master][route]
        if (u'route' in keys and u'type' in keys):
            match = False
            if not match:
                capture_tags = {}
                try: match = (mapcss._tag_capture(capture_tags, 0, tags, u'type') == mapcss._value_capture(capture_tags, 0, u'route_master') and not mapcss._tag_capture(capture_tags, 1, tags, u'route_master') and mapcss._tag_capture(capture_tags, 2, tags, u'route'))
                except mapcss.RuleAbort: pass
            if match:
                # throwError:tr("Missing transportation mode, change tag route to route_master")
                # fixChangeKey:"route=>route_master"
                err.append({'class': 9014010, 'subclass': 3385524, 'text': mapcss.tr(u'Missing transportation mode, change tag route to route_master'), 'allow_fix_override': True, 'fix': {
                    '+': dict([
                    [u'route_master', mapcss.tag(tags, u'route')]]),
                    '-': ([
                    u'route'])
                }})

        # relation[type=route][route=~/^(bus|coach|train|subway|monorail|trolleybus|aerialway|funicular|ferry|tram|share_taxi|light_rail|school_bus)$/]
        if (u'route' in keys and u'type' in keys):
            match = False
            if not match:
                capture_tags = {}
                try: match = (mapcss._tag_capture(capture_tags, 0, tags, u'type') == mapcss._value_capture(capture_tags, 0, u'route') and mapcss.regexp_test_(mapcss._value_capture(capture_tags, 1, self.re_37f81db8), mapcss._tag_capture(capture_tags, 1, tags, u'route')))
                except mapcss.RuleAbort: pass
            if match:
                # setpt_route
                set_pt_route = True

        # relation[type=route_master][route_master=~/^(bus|coach|train|subway|monorail|trolleybus|aerialway|funicular|ferry|tram|share_taxi|light_rail|school_bus)$/]
        if (u'route_master' in keys and u'type' in keys):
            match = False
            if not match:
                capture_tags = {}
                try: match = (mapcss._tag_capture(capture_tags, 0, tags, u'type') == mapcss._value_capture(capture_tags, 0, u'route_master') and mapcss.regexp_test_(mapcss._value_capture(capture_tags, 1, self.re_37f81db8), mapcss._tag_capture(capture_tags, 1, tags, u'route_master')))
                except mapcss.RuleAbort: pass
            if match:
                # setpt_route_master
                set_pt_route_master = True

        # relation.pt_route[!public_transport:version]
        if True:
            match = False
            if not match:
                capture_tags = {}
                try: match = (set_pt_route and not mapcss._tag_capture(capture_tags, 0, tags, u'public_transport:version'))
                except mapcss.RuleAbort: pass
            if match:
                # -osmoseItemClassLevel:"2140/21401/3"
                # throwError:tr("Missing public_transport:version tag on a public_transport route relation")
                # assertNoMatch:"relation type=route route=bus public_transport:version=1"
                # assertMatch:"relation type=route route=bus"
                err.append({'class': 21401, 'subclass': 0, 'text': mapcss.tr(u'Missing public_transport:version tag on a public_transport route relation')})

        # relation.pt_route[!network]
        # relation.pt_route_master[!network]
        if True:
            match = False
            if not match:
                capture_tags = {}
                try: match = (set_pt_route and not mapcss._tag_capture(capture_tags, 0, tags, u'network'))
                except mapcss.RuleAbort: pass
            if not match:
                capture_tags = {}
                try: match = (set_pt_route_master and not mapcss._tag_capture(capture_tags, 0, tags, u'network'))
                except mapcss.RuleAbort: pass
            if match:
                # -osmoseItemClassLevel:"2140/21402/3"
                # throwError:tr("Missing network tag on a public_transport relation")
                # assertNoMatch:"relation type=route route=bus network=BiBiBus"
                # assertMatch:"relation type=route route=bus"
                err.append({'class': 21402, 'subclass': 0, 'text': mapcss.tr(u'Missing network tag on a public_transport relation')})

        # relation.pt_route[!operator]
        # relation.pt_route_master[!operator]
        if True:
            match = False
            if not match:
                capture_tags = {}
                try: match = (set_pt_route and not mapcss._tag_capture(capture_tags, 0, tags, u'operator'))
                except mapcss.RuleAbort: pass
            if not match:
                capture_tags = {}
                try: match = (set_pt_route_master and not mapcss._tag_capture(capture_tags, 0, tags, u'operator'))
                except mapcss.RuleAbort: pass
            if match:
                # -osmoseItemClassLevel:"2140/21403/3"
                # throwError:tr("Missing operator tag on a public_transport relation")
                # assertNoMatch:"relation type=route route=bus operator=BiBiBus"
                # assertMatch:"relation type=route route=bus"
                err.append({'class': 21403, 'subclass': 0, 'text': mapcss.tr(u'Missing operator tag on a public_transport relation')})

        # relation.pt_route[!ref]
        # relation.pt_route_master[!ref]
        if True:
            match = False
            if not match:
                capture_tags = {}
                try: match = (set_pt_route and not mapcss._tag_capture(capture_tags, 0, tags, u'ref'))
                except mapcss.RuleAbort: pass
            if not match:
                capture_tags = {}
                try: match = (set_pt_route_master and not mapcss._tag_capture(capture_tags, 0, tags, u'ref'))
                except mapcss.RuleAbort: pass
            if match:
                # -osmoseItemClassLevel:"2140/21404/3"
                # throwError:tr("Missing ref tag for line number on a public_transport relation")
                # assertNoMatch:"relation type=route route=bus ref=3"
                # assertMatch:"relation type=route route=bus"
                err.append({'class': 21404, 'subclass': 0, 'text': mapcss.tr(u'Missing ref tag for line number on a public_transport relation')})

        # relation.pt_route[!from]
        # relation.pt_route[!to]
        if True:
            match = False
            if not match:
                capture_tags = {}
                try: match = (set_pt_route and not mapcss._tag_capture(capture_tags, 0, tags, u'from'))
                except mapcss.RuleAbort: pass
            if not match:
                capture_tags = {}
                try: match = (set_pt_route and not mapcss._tag_capture(capture_tags, 0, tags, u'to'))
                except mapcss.RuleAbort: pass
            if match:
                # -osmoseItemClassLevel:"2140/21405/3"
                # throwError:tr("Missing from/to tag on a public_transport route relation")
                # assertNoMatch:"relation type=route route=bus from=A to=B"
                # assertMatch:"relation type=route route=bus from=A"
                # assertMatch:"relation type=route route=bus to=B"
                # assertMatch:"relation type=route route=bus"
                err.append({'class': 21405, 'subclass': 0, 'text': mapcss.tr(u'Missing from/to tag on a public_transport route relation')})

        # relation.pt_route["operator"=~/STIF|Kéolis|Véolia/][inside("FR")]
        # relation.pt_route_master["operator"=~/STIF|Kéolis|Véolia/][inside("FR")]
        if (u'operator' in keys):
            match = False
            if not match:
                capture_tags = {}
                try: match = (set_pt_route and mapcss.regexp_test_(mapcss._value_capture(capture_tags, 0, self.re_25554804), mapcss._tag_capture(capture_tags, 0, tags, u'operator')) and mapcss.inside(self.father.config.options, u'FR'))
                except mapcss.RuleAbort: pass
            if not match:
                capture_tags = {}
                try: match = (set_pt_route_master and mapcss.regexp_test_(mapcss._value_capture(capture_tags, 0, self.re_25554804), mapcss._tag_capture(capture_tags, 0, tags, u'operator')) and mapcss.inside(self.father.config.options, u'FR'))
                except mapcss.RuleAbort: pass
            if match:
                # throwError:tr("Check the operator tag")
                err.append({'class': 9014013, 'subclass': 286137008, 'text': mapcss.tr(u'Check the operator tag')})

        # relation.pt_route["network"=~/STIF|Kéolis|Véolia/][inside("FR")]
        # relation.pt_route_master["network"=~/STIF|Kéolis|Véolia/][inside("FR")]
        if (u'network' in keys):
            match = False
            if not match:
                capture_tags = {}
                try: match = (set_pt_route and mapcss.regexp_test_(mapcss._value_capture(capture_tags, 0, self.re_25554804), mapcss._tag_capture(capture_tags, 0, tags, u'network')) and mapcss.inside(self.father.config.options, u'FR'))
                except mapcss.RuleAbort: pass
            if not match:
                capture_tags = {}
                try: match = (set_pt_route_master and mapcss.regexp_test_(mapcss._value_capture(capture_tags, 0, self.re_25554804), mapcss._tag_capture(capture_tags, 0, tags, u'network')) and mapcss.inside(self.father.config.options, u'FR'))
                except mapcss.RuleAbort: pass
            if match:
                # throwError:tr("Check the network tag")
                err.append({'class': 9014014, 'subclass': 735027962, 'text': mapcss.tr(u'Check the network tag')})

        # relation.pt_route!.route_ok
        # Use undeclared class pt_route, route_ok

        return err
Example #11
0
    def way(self, data, tags, *args):
        capture_tags = {}
        keys = tags.keys()
        err = []

        # way["mtb:scale:uphill"][!incline]
        if u'mtb:scale:uphill' in keys:
            match = False
            try:
                match = match or ((mapcss._tag_capture(capture_tags, 0, tags,
                                                       u'mtb:scale:uphill')
                                   and not mapcss._tag_capture(
                                       capture_tags, 1, tags, u'incline')))
            except mapcss.RuleAbort:
                pass
            if match:
                # throwWarning:tr("Way contains ''{0}'' but not ''{1}''.","{0.key}","{1.key}")
                err.append({
                    'class':
                    9013001,
                    'subclass':
                    1368047539,
                    'text':
                    mapcss.tr(u'Way contains \'\'{0}\'\' but not \'\'{1}\'\'.',
                              capture_tags, u'{0.key}', u'{1.key}')
                })

        # way["mtb:scale:uphill"][highway][highway!~/path|track/]
        if u'mtb:scale:uphill' in keys:
            match = False
            try:
                match = match or (
                    (mapcss._tag_capture(capture_tags, 0, tags,
                                         u'mtb:scale:uphill')
                     and mapcss._tag_capture(capture_tags, 1, tags, u'highway')
                     and not mapcss.regexp_test_(
                         mapcss._value_capture(capture_tags, 2,
                                               self.re_6937bec1),
                         mapcss._tag_capture(capture_tags, 2, tags,
                                             u'highway'))))
            except mapcss.RuleAbort:
                pass
            if match:
                # throwWarning:tr("Way contains ''{0}'' but is neither a track nor a path.","{0.key}")
                err.append({
                    'class':
                    9013002,
                    'subclass':
                    139842783,
                    'text':
                    mapcss.tr(
                        u'Way contains \'\'{0}\'\' but is neither a track nor a path.',
                        capture_tags, u'{0.key}')
                })

        # way["mtb:scale"]["mtb:scale"!~/^[0-6][-+]?$/]
        if u'mtb:scale' in keys:
            match = False
            try:
                match = match or ((mapcss._tag_capture(
                    capture_tags, 0, tags, u'mtb:scale'
                ) and not mapcss.regexp_test_(
                    mapcss._value_capture(capture_tags, 1, self.re_1b95e3e9),
                    mapcss._tag_capture(capture_tags, 1, tags, u'mtb:scale'))))
            except mapcss.RuleAbort:
                pass
            if match:
                # throwWarning:tr("Invalid ''{0}'' value: ''{1}''","{0.key}","{0.value}")
                err.append({
                    'class':
                    9013003,
                    'subclass':
                    1229830952,
                    'text':
                    mapcss.tr(u'Invalid \'\'{0}\'\' value: \'\'{1}\'\'',
                              capture_tags, u'{0.key}', u'{0.value}')
                })

        # way["mtb:scale:uphill"]["mtb:scale:uphill"!~/^[0-5]$/]
        if u'mtb:scale:uphill' in keys:
            match = False
            try:
                match = match or ((mapcss._tag_capture(
                    capture_tags, 0, tags,
                    u'mtb:scale:uphill') and not mapcss.regexp_test_(
                        mapcss._value_capture(capture_tags, 1,
                                              self.re_3d3b0752),
                        mapcss._tag_capture(capture_tags, 1, tags,
                                            u'mtb:scale:uphill'))))
            except mapcss.RuleAbort:
                pass
            if match:
                # throwWarning:tr("Invalid ''{0}'' value: ''{1}''","{0.key}","{0.value}")
                err.append({
                    'class':
                    9013003,
                    'subclass':
                    86930524,
                    'text':
                    mapcss.tr(u'Invalid \'\'{0}\'\' value: \'\'{1}\'\'',
                              capture_tags, u'{0.key}', u'{0.value}')
                })

        # way["mtb:scale:imba"]["mtb:scale:imba"!~/^[0-4]$/]
        if u'mtb:scale:imba' in keys:
            match = False
            try:
                match = match or ((mapcss._tag_capture(
                    capture_tags, 0, tags,
                    u'mtb:scale:imba') and not mapcss.regexp_test_(
                        mapcss._value_capture(capture_tags, 1,
                                              self.re_731f6ce6),
                        mapcss._tag_capture(capture_tags, 1, tags,
                                            u'mtb:scale:imba'))))
            except mapcss.RuleAbort:
                pass
            if match:
                # throwWarning:tr("Invalid ''{0}'' value: ''{1}''","{0.key}","{0.value}")
                err.append({
                    'class':
                    9013003,
                    'subclass':
                    2005358544,
                    'text':
                    mapcss.tr(u'Invalid \'\'{0}\'\' value: \'\'{1}\'\'',
                              capture_tags, u'{0.key}', u'{0.value}')
                })

        return err
Example #12
0
    def relation(self, data, tags, *args):
        capture_tags = {}
        keys = tags.keys()
        err = []


        # *["addr:street"=~/.+;(.+)?/]
        # *[highway=~/.+;(.+)?/]
        # *[lanes=~/.+;(.+)?/]
        # *[maxspeed=~/.+;(.+)?/]
        # *[name=~/.+;(.+)?/]
        # *[surface=~/.+;(.+)?/]
        # *[water=~/.+;(.+)?/]
        if u'addr:street' in keys or u'highway' in keys or u'lanes' in keys or u'maxspeed' in keys or u'name' in keys or u'surface' in keys or u'water' in keys:
            match = False
            try: match = match or ((mapcss.regexp_test_(mapcss._value_capture(capture_tags, 0, self.re_53db61ac), mapcss._tag_capture(capture_tags, 0, tags, u'addr:street'))))
            except mapcss.RuleAbort: pass
            try: match = match or ((mapcss.regexp_test_(mapcss._value_capture(capture_tags, 0, self.re_53db61ac), mapcss._tag_capture(capture_tags, 0, tags, u'highway'))))
            except mapcss.RuleAbort: pass
            try: match = match or ((mapcss.regexp_test_(mapcss._value_capture(capture_tags, 0, self.re_53db61ac), mapcss._tag_capture(capture_tags, 0, tags, u'lanes'))))
            except mapcss.RuleAbort: pass
            try: match = match or ((mapcss.regexp_test_(mapcss._value_capture(capture_tags, 0, self.re_53db61ac), mapcss._tag_capture(capture_tags, 0, tags, u'maxspeed'))))
            except mapcss.RuleAbort: pass
            try: match = match or ((mapcss.regexp_test_(mapcss._value_capture(capture_tags, 0, self.re_53db61ac), mapcss._tag_capture(capture_tags, 0, tags, u'name'))))
            except mapcss.RuleAbort: pass
            try: match = match or ((mapcss.regexp_test_(mapcss._value_capture(capture_tags, 0, self.re_53db61ac), mapcss._tag_capture(capture_tags, 0, tags, u'surface'))))
            except mapcss.RuleAbort: pass
            try: match = match or ((mapcss.regexp_test_(mapcss._value_capture(capture_tags, 0, self.re_53db61ac), mapcss._tag_capture(capture_tags, 0, tags, u'water'))))
            except mapcss.RuleAbort: pass
            if match:
                # throwWarning:tr("{0} with multiple values","{0.key}")
                err.append({'class': 9005001, 'subclass': 1911063816, 'text': mapcss.tr(u'{0} with multiple values', capture_tags, u'{0.key}')})

        # *[source=~/^(;.*|.*;;.*|.*;)$/]
        # *["source:addr"=~/^(;.*|.*;;.*|.*;)$/]
        # *["source:maxspeed"=~/^(;.*|.*;;.*|.*;)$/]
        # *["source:name"=~/^(;.*|.*;;.*|.*;)$/]
        # *["source:position"=~/^(;.*|.*;;.*|.*;)$/]
        # *["source:postcode"=~/^(;.*|.*;;.*|.*;)$/]
        # *[ref=~/^(;.*|.*;;.*|.*;)$/]
        # *[int_ref=~/^(;.*|.*;;.*|.*;)$/]
        # *[old_ref=~/^(;.*|.*;;.*|.*;)$/]
        # *[source_ref=~/^(;.*|.*;;.*|.*;)$/]
        # *[route_ref=~/^(;.*|.*;;.*|.*;)$/]
        # *[attribution=~/^(;.*|.*;;.*|.*;)$/]
        # *[name=~/^(;.*|.*;;.*|.*;)$/]
        # *[alt_name=~/^(;.*|.*;;.*|.*;)$/]
        # *[note=~/^(;.*|.*;;.*|.*;)$/]
        # *[fixme=~/^(;.*|.*;;.*|.*;)$/]
        # *["addr:housenumber"=~/^(;.*|.*;;.*|.*;)$/]
        # *[destination=~/^(;.*|.*;;.*|.*;)$/]
        # *[exit_to=~/^(;.*|.*;;.*|.*;)$/]
        # *[surface=~/^(;.*|.*;;.*|.*;)$/]
        # *["building:use"=~/^(;.*|.*;;.*|.*;)$/]
        # *[traffic_sign=~/^(;.*|.*;;.*|.*;)$/]
        # *[voltage=~/^(;.*|.*;;.*|.*;)$/]
        # *[cuisine=~/^(;.*|.*;;.*|.*;)$/]
        if u'addr:housenumber' in keys or u'alt_name' in keys or u'attribution' in keys or u'building:use' in keys or u'cuisine' in keys or u'destination' in keys or u'exit_to' in keys or u'fixme' in keys or u'int_ref' in keys or u'name' in keys or u'note' in keys or u'old_ref' in keys or u'ref' in keys or u'route_ref' in keys or u'source' in keys or u'source:addr' in keys or u'source:maxspeed' in keys or u'source:name' in keys or u'source:position' in keys or u'source:postcode' in keys or u'source_ref' in keys or u'surface' in keys or u'traffic_sign' in keys or u'voltage' in keys:
            match = False
            try: match = match or ((mapcss.regexp_test_(mapcss._value_capture(capture_tags, 0, self.re_579c7c6a), mapcss._tag_capture(capture_tags, 0, tags, u'source'))))
            except mapcss.RuleAbort: pass
            try: match = match or ((mapcss.regexp_test_(mapcss._value_capture(capture_tags, 0, self.re_579c7c6a), mapcss._tag_capture(capture_tags, 0, tags, u'source:addr'))))
            except mapcss.RuleAbort: pass
            try: match = match or ((mapcss.regexp_test_(mapcss._value_capture(capture_tags, 0, self.re_579c7c6a), mapcss._tag_capture(capture_tags, 0, tags, u'source:maxspeed'))))
            except mapcss.RuleAbort: pass
            try: match = match or ((mapcss.regexp_test_(mapcss._value_capture(capture_tags, 0, self.re_579c7c6a), mapcss._tag_capture(capture_tags, 0, tags, u'source:name'))))
            except mapcss.RuleAbort: pass
            try: match = match or ((mapcss.regexp_test_(mapcss._value_capture(capture_tags, 0, self.re_579c7c6a), mapcss._tag_capture(capture_tags, 0, tags, u'source:position'))))
            except mapcss.RuleAbort: pass
            try: match = match or ((mapcss.regexp_test_(mapcss._value_capture(capture_tags, 0, self.re_579c7c6a), mapcss._tag_capture(capture_tags, 0, tags, u'source:postcode'))))
            except mapcss.RuleAbort: pass
            try: match = match or ((mapcss.regexp_test_(mapcss._value_capture(capture_tags, 0, self.re_579c7c6a), mapcss._tag_capture(capture_tags, 0, tags, u'ref'))))
            except mapcss.RuleAbort: pass
            try: match = match or ((mapcss.regexp_test_(mapcss._value_capture(capture_tags, 0, self.re_579c7c6a), mapcss._tag_capture(capture_tags, 0, tags, u'int_ref'))))
            except mapcss.RuleAbort: pass
            try: match = match or ((mapcss.regexp_test_(mapcss._value_capture(capture_tags, 0, self.re_579c7c6a), mapcss._tag_capture(capture_tags, 0, tags, u'old_ref'))))
            except mapcss.RuleAbort: pass
            try: match = match or ((mapcss.regexp_test_(mapcss._value_capture(capture_tags, 0, self.re_579c7c6a), mapcss._tag_capture(capture_tags, 0, tags, u'source_ref'))))
            except mapcss.RuleAbort: pass
            try: match = match or ((mapcss.regexp_test_(mapcss._value_capture(capture_tags, 0, self.re_579c7c6a), mapcss._tag_capture(capture_tags, 0, tags, u'route_ref'))))
            except mapcss.RuleAbort: pass
            try: match = match or ((mapcss.regexp_test_(mapcss._value_capture(capture_tags, 0, self.re_579c7c6a), mapcss._tag_capture(capture_tags, 0, tags, u'attribution'))))
            except mapcss.RuleAbort: pass
            try: match = match or ((mapcss.regexp_test_(mapcss._value_capture(capture_tags, 0, self.re_579c7c6a), mapcss._tag_capture(capture_tags, 0, tags, u'name'))))
            except mapcss.RuleAbort: pass
            try: match = match or ((mapcss.regexp_test_(mapcss._value_capture(capture_tags, 0, self.re_579c7c6a), mapcss._tag_capture(capture_tags, 0, tags, u'alt_name'))))
            except mapcss.RuleAbort: pass
            try: match = match or ((mapcss.regexp_test_(mapcss._value_capture(capture_tags, 0, self.re_579c7c6a), mapcss._tag_capture(capture_tags, 0, tags, u'note'))))
            except mapcss.RuleAbort: pass
            try: match = match or ((mapcss.regexp_test_(mapcss._value_capture(capture_tags, 0, self.re_579c7c6a), mapcss._tag_capture(capture_tags, 0, tags, u'fixme'))))
            except mapcss.RuleAbort: pass
            try: match = match or ((mapcss.regexp_test_(mapcss._value_capture(capture_tags, 0, self.re_579c7c6a), mapcss._tag_capture(capture_tags, 0, tags, u'addr:housenumber'))))
            except mapcss.RuleAbort: pass
            try: match = match or ((mapcss.regexp_test_(mapcss._value_capture(capture_tags, 0, self.re_579c7c6a), mapcss._tag_capture(capture_tags, 0, tags, u'destination'))))
            except mapcss.RuleAbort: pass
            try: match = match or ((mapcss.regexp_test_(mapcss._value_capture(capture_tags, 0, self.re_579c7c6a), mapcss._tag_capture(capture_tags, 0, tags, u'exit_to'))))
            except mapcss.RuleAbort: pass
            try: match = match or ((mapcss.regexp_test_(mapcss._value_capture(capture_tags, 0, self.re_579c7c6a), mapcss._tag_capture(capture_tags, 0, tags, u'surface'))))
            except mapcss.RuleAbort: pass
            try: match = match or ((mapcss.regexp_test_(mapcss._value_capture(capture_tags, 0, self.re_579c7c6a), mapcss._tag_capture(capture_tags, 0, tags, u'building:use'))))
            except mapcss.RuleAbort: pass
            try: match = match or ((mapcss.regexp_test_(mapcss._value_capture(capture_tags, 0, self.re_579c7c6a), mapcss._tag_capture(capture_tags, 0, tags, u'traffic_sign'))))
            except mapcss.RuleAbort: pass
            try: match = match or ((mapcss.regexp_test_(mapcss._value_capture(capture_tags, 0, self.re_579c7c6a), mapcss._tag_capture(capture_tags, 0, tags, u'voltage'))))
            except mapcss.RuleAbort: pass
            try: match = match or ((mapcss.regexp_test_(mapcss._value_capture(capture_tags, 0, self.re_579c7c6a), mapcss._tag_capture(capture_tags, 0, tags, u'cuisine'))))
            except mapcss.RuleAbort: pass
            if match:
                # throwWarning:tr("empty value in semicolon-separated ''{0}''","{0.key}")
                err.append({'class': 9005002, 'subclass': 978530936, 'text': mapcss.tr(u'empty value in semicolon-separated \'\'{0}\'\'', capture_tags, u'{0.key}')})

        return err
Example #13
0
    def way(self, data, tags, *args):
        capture_tags = {}
        keys = tags.keys()
        err = []

        # *[access][highway=proposed]
        # *[motor_vehicle?][vehicle!=no][access!=no][bicycle_road!=yes][highway=~/^(motorway|motorway_link|trunk|trunk_link|primary|primary_link|secondary|secondary_link|tertiary|tertiary_link|unclassified|residential|service|living_street)$/]
        # *[bridge=no]
        # *[building=no]
        # *[elevation="0"]
        # *[layer="0"]
        if u'access' in keys or u'bridge' in keys or u'building' in keys or u'elevation' in keys or u'layer' in keys or u'motor_vehicle' in keys:
            match = False
            try:
                match = match or (
                    (mapcss._tag_capture(capture_tags, 0, tags, u'access')
                     and mapcss._tag_capture(capture_tags, 1, tags, u'highway')
                     == mapcss._value_capture(capture_tags, 1, u'proposed')))
            except mapcss.RuleAbort:
                pass
            try:
                match = match or ((
                    mapcss._tag_capture(
                        capture_tags, 0, tags,
                        u'motor_vehicle') in ('yes', 'true', '1')
                    and mapcss._tag_capture(capture_tags, 1, tags, u'vehicle')
                    != mapcss._value_capture(capture_tags, 1, u'no')
                    and mapcss._tag_capture(capture_tags, 2, tags, u'access')
                    != mapcss._value_capture(capture_tags, 2, u'no') and
                    mapcss._tag_capture(capture_tags, 3, tags, u'bicycle_road')
                    != mapcss._value_capture(capture_tags, 3, u'yes')
                    and mapcss.regexp_test_(
                        mapcss._value_capture(capture_tags, 4,
                                              self.re_3ad9e1f5),
                        mapcss._tag_capture(capture_tags, 4, tags,
                                            u'highway'))))
            except mapcss.RuleAbort:
                pass
            try:
                match = match or ((mapcss._tag_capture(
                    capture_tags, 0, tags, u'bridge') == mapcss._value_capture(
                        capture_tags, 0, u'no')))
            except mapcss.RuleAbort:
                pass
            try:
                match = match or (
                    (mapcss._tag_capture(capture_tags, 0, tags, u'building')
                     == mapcss._value_capture(capture_tags, 0, u'no')))
            except mapcss.RuleAbort:
                pass
            try:
                match = match or (
                    (mapcss._tag_capture(capture_tags, 0, tags, u'elevation')
                     == mapcss._value_capture(capture_tags, 0, u'0')))
            except mapcss.RuleAbort:
                pass
            try:
                match = match or ((mapcss._tag_capture(
                    capture_tags, 0, tags, u'layer') == mapcss._value_capture(
                        capture_tags, 0, u'0')))
            except mapcss.RuleAbort:
                pass
            if match:
                # group:tr("unnecessary tag")
                # throwWarning:tr("{0} is unnecessary","{0.tag}")
                # fixRemove:"{0.key}"
                # assertMatch:"way bridge=no"
                # assertMatch:"way highway=proposed access=no"
                # assertMatch:"way layer=0"
                err.append({
                    'class':
                    9010001,
                    'subclass':
                    1949087363,
                    'text':
                    mapcss.tr(u'{0} is unnecessary', capture_tags, u'{0.tag}'),
                    'fix': {
                        '-': ([u'{0.key}'])
                    }
                })

        # *[emergency=permissive]
        if u'emergency' in keys:
            match = False
            try:
                match = match or (
                    (mapcss._tag_capture(capture_tags, 0, tags, u'emergency')
                     == mapcss._value_capture(capture_tags, 0, u'permissive')))
            except mapcss.RuleAbort:
                pass
            if match:
                # throwWarning:tr("{0} makes no sense","{0.tag")
                # fixAdd:"emergency=yes"
                # assertNoMatch:"way emergency=designated"
                # assertMatch:"way emergency=permissive"
                err.append({
                    'class':
                    9010002,
                    'subclass':
                    325672362,
                    'text':
                    mapcss.tr(u'{0} makes no sense', capture_tags, u'{0.tag'),
                    'fix': {
                        '+': dict([[u'emergency', u'yes']])
                    }
                })

        # *[payment:cash][payment:coins][payment:notes]
        if u'payment:cash' in keys:
            match = False
            try:
                match = match or ((
                    mapcss._tag_capture(capture_tags, 0, tags, u'payment:cash')
                    and mapcss._tag_capture(capture_tags, 1, tags,
                                            u'payment:coins')
                    and mapcss._tag_capture(capture_tags, 2, tags,
                                            u'payment:notes')))
            except mapcss.RuleAbort:
                pass
            if match:
                # group:tr("unnecessary tag")
                # throwWarning:tr("{0} together with {1} and {2}. Remove {0}.","{0.key}","{1.key}","{2.key}")
                # fixRemove:"payment:cash"
                err.append({
                    'class':
                    9010001,
                    'subclass':
                    1340792439,
                    'text':
                    mapcss.tr(u'{0} together with {1} and {2}. Remove {0}.',
                              capture_tags, u'{0.key}', u'{1.key}',
                              u'{2.key}'),
                    'fix': {
                        '-': ([u'payment:cash'])
                    }
                })

        # way[waterway][oneway?]
        if u'waterway' in keys:
            match = False
            try:
                match = match or (
                    (mapcss._tag_capture(capture_tags, 0, tags, u'waterway')
                     and mapcss._tag_capture(capture_tags, 1, tags, u'oneway')
                     in ('yes', 'true', '1')))
            except mapcss.RuleAbort:
                pass
            if match:
                # group:tr("unnecessary tag")
                # throwWarning:tr("{0} is unnecessary for {1}","{1.key}","{0.key}")
                # fixRemove:"{1.key}"
                err.append({
                    'class':
                    9010001,
                    'subclass':
                    877465780,
                    'text':
                    mapcss.tr(u'{0} is unnecessary for {1}', capture_tags,
                              u'{1.key}', u'{0.key}'),
                    'fix': {
                        '-': ([u'{1.key}'])
                    }
                })

        # way[waterway][oneway=-1]
        if u'waterway' in keys:
            match = False
            try:
                match = match or (
                    (mapcss._tag_capture(capture_tags, 0, tags, u'waterway')
                     and mapcss._tag_capture(capture_tags, 1, tags, u'oneway')
                     == mapcss._value_capture(capture_tags, 1, -1)))
            except mapcss.RuleAbort:
                pass
            if match:
                # group:tr("unnecessary tag")
                # throwWarning:tr("{0} is unnecessary for {1}. The flow direction is defined by the way direction.","{1.key}","{0.key}")
                err.append({
                    'class':
                    9010001,
                    'subclass':
                    1802985931,
                    'text':
                    mapcss.tr(
                        u'{0} is unnecessary for {1}. The flow direction is defined by the way direction.',
                        capture_tags, u'{1.key}', u'{0.key}')
                })

        return err
Example #14
0
    def way(self, data, tags, *args):
        capture_tags = {}
        keys = tags.keys()
        err = []

        # way[entrance]
        # way[railway=subway_entrance]
        # way[man_made=survey_point]
        # way[aeroway=holding_position]
        # way[power=transformer]
        # way[power=pole]
        # way[power=catenary_mast]
        # way[power=terminal]
        # way[amenity=vending_machine]
        # way[natural=peak]
        # way[natural=saddle]
        # way[natural=volcano]
        # way[natural=tree]
        # way[highway=give_way]
        # way[highway=milestone]
        # way[highway=mini_roundabout]
        # way[highway=stop]
        # way[highway=street_lamp]
        # way[highway=traffic_signals]
        # way[highway=turning_loop]
        # way[highway=turning_circle]
        # way[highway=motorway_junction]
        if u'aeroway' in keys or u'amenity' in keys or u'entrance' in keys or u'highway' in keys or u'man_made' in keys or u'natural' in keys or u'power' in keys or u'railway' in keys:
            match = False
            try:
                match = match or ((mapcss._tag_capture(capture_tags, 0, tags,
                                                       u'entrance')))
            except mapcss.RuleAbort:
                pass
            try:
                match = match or ((mapcss._tag_capture(capture_tags, 0, tags,
                                                       u'railway')
                                   == mapcss._value_capture(
                                       capture_tags, 0, u'subway_entrance')))
            except mapcss.RuleAbort:
                pass
            try:
                match = match or ((mapcss._tag_capture(capture_tags, 0, tags,
                                                       u'man_made')
                                   == mapcss._value_capture(
                                       capture_tags, 0, u'survey_point')))
            except mapcss.RuleAbort:
                pass
            try:
                match = match or ((mapcss._tag_capture(capture_tags, 0, tags,
                                                       u'aeroway')
                                   == mapcss._value_capture(
                                       capture_tags, 0, u'holding_position')))
            except mapcss.RuleAbort:
                pass
            try:
                match = match or ((mapcss._tag_capture(
                    capture_tags, 0, tags, u'power') == mapcss._value_capture(
                        capture_tags, 0, u'transformer')))
            except mapcss.RuleAbort:
                pass
            try:
                match = match or ((mapcss._tag_capture(
                    capture_tags, 0, tags, u'power') == mapcss._value_capture(
                        capture_tags, 0, u'pole')))
            except mapcss.RuleAbort:
                pass
            try:
                match = match or ((mapcss._tag_capture(
                    capture_tags, 0, tags, u'power') == mapcss._value_capture(
                        capture_tags, 0, u'catenary_mast')))
            except mapcss.RuleAbort:
                pass
            try:
                match = match or ((mapcss._tag_capture(
                    capture_tags, 0, tags, u'power') == mapcss._value_capture(
                        capture_tags, 0, u'terminal')))
            except mapcss.RuleAbort:
                pass
            try:
                match = match or ((mapcss._tag_capture(capture_tags, 0, tags,
                                                       u'amenity')
                                   == mapcss._value_capture(
                                       capture_tags, 0, u'vending_machine')))
            except mapcss.RuleAbort:
                pass
            try:
                match = match or (
                    (mapcss._tag_capture(capture_tags, 0, tags, u'natural')
                     == mapcss._value_capture(capture_tags, 0, u'peak')))
            except mapcss.RuleAbort:
                pass
            try:
                match = match or (
                    (mapcss._tag_capture(capture_tags, 0, tags, u'natural')
                     == mapcss._value_capture(capture_tags, 0, u'saddle')))
            except mapcss.RuleAbort:
                pass
            try:
                match = match or (
                    (mapcss._tag_capture(capture_tags, 0, tags, u'natural')
                     == mapcss._value_capture(capture_tags, 0, u'volcano')))
            except mapcss.RuleAbort:
                pass
            try:
                match = match or (
                    (mapcss._tag_capture(capture_tags, 0, tags, u'natural')
                     == mapcss._value_capture(capture_tags, 0, u'tree')))
            except mapcss.RuleAbort:
                pass
            try:
                match = match or (
                    (mapcss._tag_capture(capture_tags, 0, tags, u'highway')
                     == mapcss._value_capture(capture_tags, 0, u'give_way')))
            except mapcss.RuleAbort:
                pass
            try:
                match = match or (
                    (mapcss._tag_capture(capture_tags, 0, tags, u'highway')
                     == mapcss._value_capture(capture_tags, 0, u'milestone')))
            except mapcss.RuleAbort:
                pass
            try:
                match = match or ((mapcss._tag_capture(capture_tags, 0, tags,
                                                       u'highway')
                                   == mapcss._value_capture(
                                       capture_tags, 0, u'mini_roundabout')))
            except mapcss.RuleAbort:
                pass
            try:
                match = match or (
                    (mapcss._tag_capture(capture_tags, 0, tags, u'highway')
                     == mapcss._value_capture(capture_tags, 0, u'stop')))
            except mapcss.RuleAbort:
                pass
            try:
                match = match or ((mapcss._tag_capture(capture_tags, 0, tags,
                                                       u'highway')
                                   == mapcss._value_capture(
                                       capture_tags, 0, u'street_lamp')))
            except mapcss.RuleAbort:
                pass
            try:
                match = match or ((mapcss._tag_capture(capture_tags, 0, tags,
                                                       u'highway')
                                   == mapcss._value_capture(
                                       capture_tags, 0, u'traffic_signals')))
            except mapcss.RuleAbort:
                pass
            try:
                match = match or ((mapcss._tag_capture(capture_tags, 0, tags,
                                                       u'highway')
                                   == mapcss._value_capture(
                                       capture_tags, 0, u'turning_loop')))
            except mapcss.RuleAbort:
                pass
            try:
                match = match or ((mapcss._tag_capture(capture_tags, 0, tags,
                                                       u'highway')
                                   == mapcss._value_capture(
                                       capture_tags, 0, u'turning_circle')))
            except mapcss.RuleAbort:
                pass
            try:
                match = match or ((mapcss._tag_capture(capture_tags, 0, tags,
                                                       u'highway')
                                   == mapcss._value_capture(
                                       capture_tags, 0, u'motorway_junction')))
            except mapcss.RuleAbort:
                pass
            if match:
                # throwWarning:tr("{0} on a way. Should be used on a node.","{0.tag}")
                err.append({
                    'class':
                    9003007,
                    'subclass':
                    172369653,
                    'text':
                    mapcss.tr(u'{0} on a way. Should be used on a node.',
                              capture_tags, u'{0.tag}')
                })

        # way[restriction][restriction=~/^(no_right_turn|no_left_turn|no_u_turn|no_straight_on|only_right_turn|only_left_turn|only_straight_on|no_entry|no_exit)$/]
        # way[type=multipolygon]
        # way[route=bus]
        if u'restriction' in keys or u'route' in keys or u'type' in keys:
            match = False
            try:
                match = match or (
                    (mapcss._tag_capture(capture_tags, 0, tags, u'restriction')
                     and mapcss.regexp_test_(
                         mapcss._value_capture(capture_tags, 1,
                                               self.re_22f56734),
                         mapcss._tag_capture(capture_tags, 1, tags,
                                             u'restriction'))))
            except mapcss.RuleAbort:
                pass
            try:
                match = match or ((mapcss._tag_capture(
                    capture_tags, 0, tags, u'type') == mapcss._value_capture(
                        capture_tags, 0, u'multipolygon')))
            except mapcss.RuleAbort:
                pass
            try:
                match = match or ((mapcss._tag_capture(
                    capture_tags, 0, tags, u'route') == mapcss._value_capture(
                        capture_tags, 0, u'bus')))
            except mapcss.RuleAbort:
                pass
            if match:
                # throwError:tr("{0} on a way. Should be used in a relation","{0.tag}")
                err.append({
                    'class':
                    9003008,
                    'subclass':
                    1728608057,
                    'text':
                    mapcss.tr(u'{0} on a way. Should be used in a relation',
                              capture_tags, u'{0.tag}')
                })

        return err