Exemple #1
0
 def test_alternatives(self):
     pattern = JSGPattern(r'iri|bnode|nonliteral|literal')
     self.assertTrue(pattern.matches('iri'))
     self.assertTrue(pattern.matches('literal'))
     self.assertTrue(pattern.matches('nonliteral'))
     self.assertTrue(pattern.matches('bnode'))
     self.assertFalse(pattern.matches('node'))
     self.assertFalse(pattern.matches('bnod'))
     self.assertFalse(pattern.matches('IRI'))
     self.assertFalse(pattern.matches(' iri'))
     self.assertFalse(pattern.matches('iri '))
Exemple #2
0
 def test_fixed_values(self):
     pattern = JSGPattern(r'http:\/\/www\.w3\.org\/ns\/shex\.jsonld')
     self.assertTrue(pattern.matches("http://www.w3.org/ns/shex.jsonld"))
     self.assertFalse(pattern.matches("http://www.w3.org/ns/shex/jsonldx"))
     self.assertFalse(pattern.matches("http://www.w3.org/ns/shex/jsonld "))
     self.assertFalse(pattern.matches("http://www.w3.org/ns/shex/jsonld\n"))
     self.assertFalse(pattern.matches(" http://www.w3.org/ns/shex/jsonld"))
Exemple #3
0
 class LANGTAG(JSGString):
     pattern = JSGPattern(r'[a-zA-Z]+(\-([a-zA-Z0-9])+)*')
Exemple #4
0
class HEX(JSGString):
    pattern = JSGPattern(r'[0-9]|[A-F]|[a-f]')
Exemple #5
0
 class WildCard(JSGString):
     pattern = JSGPattern(r'.*')
     python_type = object
Exemple #6
0
class PN_CHARS_U(JSGString):
    pattern = JSGPattern(r'{PN_CHARS_BASE}|_'.format(PN_CHARS_BASE=PN_CHARS_BASE.pattern))
Exemple #7
0
class PN_CHARS(JSGString):
    pattern = JSGPattern(r'{PN_CHARS_U}|\-|[0-9]|\\u00B7|[\u0300-\u036F]|[\u203F-\u2040]'.format(PN_CHARS_U=PN_CHARS_U.pattern))
Exemple #8
0
 class TP(JSGString):
     pattern = JSGPattern("[a-zA-Z]+")
Exemple #9
0
 class INCOMPAT(Integer):
     pattern = JSGPattern(r'[a-z]+')
Exemple #10
0
 class INT(JSGString):
     pattern = JSGPattern(r'[+-]?[0-9]+')
Exemple #11
0
 class NUM(JSGString):
     pattern = JSGPattern(r'[+-]?[0-9]*\.[0-9]+')
Exemple #12
0
 class BOOL(JSGString):
     pattern = JSGPattern(r'[Tt]rue|[Ff]alse')
     python_type = (str, bool)
Exemple #13
0
 class Alts(JSGString):
     pattern = JSGPattern(r'iri|bnode|nonliteral|literal')
Exemple #14
0
 class IRI(JSGString):
     pattern = JSGPattern(r'http:\/\/www\.w3\.org\/ns\/shex\.jsonld')
Exemple #15
0
    def test_assorted_patterns(self):
        pattern = JSGPattern(r'[+-]?[0-9]+')
        self.assertTrue(pattern.matches("0"))
        self.assertTrue(pattern.matches(str(-173)))
        self.assertTrue(pattern.matches("+11720000845197308888890"))
        self.assertTrue(pattern.matches("01"))
        self.assertFalse(pattern.matches("--17"))
        self.assertFalse(pattern.matches("1.0"))

        pattern = JSGPattern(r'[+-]?[0-9]*\.[0-9]+')
        self.assertFalse(pattern.matches("0"))
        self.assertTrue(pattern.matches("0.0"))
        self.assertTrue(pattern.matches(str(float(-173))))
        self.assertTrue(pattern.matches("1.0"))
        self.assertTrue(pattern.matches("+11720000845197308888.0000000000"))

        PN_CHARS_BASE = r'[A-Z]|[a-z]|[\u00C0-\u00D6]|[\u00D8-\u00F6]|[\u00F8-\u02FF]|[\u0370-\u037D]|' \
                        r'[\u037F-\u1FFF]|[\u200C-\u200D]|[\u2070-\u218F]|[\u2C00-\u2FEF]|[\u3001-\uD7FF]|' \
                        r'[\uF900-\uFDCF]|[\uFDF0-\uFFFD]|[\u10000-\uEFFFF]'

        HEX = r'[0-9]|[A-F]|[a-f]'
        UCHAR = r'\\\\u{HEX}{HEX}{HEX}{HEX}|\\\\U{HEX}{HEX}{HEX}{HEX}{HEX}{HEX}{HEX}{HEX}'.format(HEX=HEX)
        PN_CHARS_U = r'{PN_CHARS_BASE}|_'.format(PN_CHARS_BASE=PN_CHARS_BASE)
        PN_CHARS = r'{PN_CHARS_U}|\-|[0-9]|\\u00B7|[\u0300-\u036F]|[\u203F-\u2040]'.format(PN_CHARS_U=PN_CHARS_U)
        pattern = JSGPattern(r'({PN_CHARS}|\.|\:|\/|\\\\|\#|\@|\%|\&|{UCHAR})*'.format(PN_CHARS=PN_CHARS, UCHAR=UCHAR))
        self.assertTrue(pattern.matches("http://a.example/p\u0031"))
        self.assertTrue(IRI.pattern.matches("http://a.example/p\u0031"))
Exemple #16
0
 class PAT_STR(String):
     pattern = JSGPattern(r'[a-z][0-9]+')
Exemple #17
0
 def test_wild_card(self):
     pattern = JSGPattern(r'.*')
     self.assertTrue(pattern.matches(""))
     self.assertTrue(pattern.matches("any block of text"))
     self.assertTrue(pattern.matches("\n\uFDF0*"))
Exemple #18
0
 class INT_STR(String):
     pattern = JSGPattern(r'0|([1-9][0-9]*)')
Exemple #19
0
class UCHAR(JSGString):
    pattern = JSGPattern(r'\\\\u{HEX}{HEX}{HEX}{HEX}|\\\\U{HEX}{HEX}{HEX}{HEX}{HEX}{HEX}{HEX}{HEX}'.format(HEX=HEX.pattern))
Exemple #20
0
 class POS_NUMBER(Number):
     pattern = JSGPattern(
         r'(0|[1-9][0-9]*)(.[0-9]+)?([eE][+-]?[0-9]+)?')
Exemple #21
0
class IRI(JSGString):
    pattern = JSGPattern(r'({PN_CHARS}|\.|\:|\/|\\\\|\#|\@|\%|\&|{UCHAR})*'.format(PN_CHARS=PN_CHARS.pattern, UCHAR=UCHAR.pattern))
Exemple #22
0
 class NEG_INTEGER(Integer):
     pattern = JSGPattern(r'-(0|[1-9][0-9]*)')
Exemple #23
0
class PN_CHARS_BASE(JSGString):
    pattern = JSGPattern(r'[A-Z]|[a-z]|[\u00C0-\u00D6]|[\u00D8-\u00F6]|[\u00F8-\u02FF]|[\u0370-\u037D]|[\u037F-\u1FFF]|[\u200C-\u200D]|[\u2070-\u218F]|[\u2C00-\u2FEF]|[\u3001-\uD7FF]|[\uF900-\uFDCF]|[\uFDF0-\uFFFD]|[\u10000-\uEFFFF]')
Exemple #24
0
 class S(JSGString):
     pattern = JSGPattern(r'[a-zA-Z]+')