Beispiel #1
0
 def analyse_text(text):
     if shebang_matches(text, r'php'):
         return True
     rv = 0.0
     if re.search(r'<\?(?!xml)', text):
         rv += 0.3
     return rv
Beispiel #2
0
 def analyse_text(text):
     if shebang_matches(text, r'php'):
         return True
     rv = 0.0
     if re.search(r'<\?(?!xml)', text):
         rv += 0.3
     return rv
Beispiel #3
0
    def analyse_text(text):
        def strip_pod(lines):
            in_pod = False
            stripped_lines = []

            for line in lines:
                if re.match(r'^=(?:end|cut)', line):
                    in_pod = False
                elif re.match(r'^=\w+', line):
                    in_pod = True
                elif not in_pod:
                    stripped_lines.append(line)

            return stripped_lines

        # XXX handle block comments
        lines = text.splitlines()
        lines = strip_pod(lines)
        text = '\n'.join(lines)

        if shebang_matches(text, r'perl6|rakudo|niecza|pugs'):
            return True

        saw_perl_decl = False
        rating = False

        # check for my/our/has declarations
        if re.search(
                r"(?:my|our|has)\s+(?:" + Perl6Lexer.PERL6_IDENTIFIER_RANGE +
                r"+\s+)?[$@%&(]", text):
            rating = 0.8
            saw_perl_decl = True

        for line in lines:
            line = re.sub('#.*', '', line)
            if re.match(r'^\s*$', line):
                continue

            # match v6; use v6; use v6.0; use v6.0.0;
            if re.match(r'^\s*(?:use\s+)?v6(?:\.\d(?:\.\d)?)?;', line):
                return True
            # match class, module, role, enum, grammar declarations
            class_decl = re.match(
                r'^\s*(?:(?P<scope>my|our)\s+)?(?:module|class|role|enum|grammar)',
                line)
            if class_decl:
                if saw_perl_decl or class_decl.group('scope') is not None:
                    return True
                rating = 0.05
                continue
            break

        if ':=' in text:
            # Same logic as above for PerlLexer
            rating /= 2

        return rating
Beispiel #4
0
    def test_shebang_matches(self):
        self.assertTrue(util.shebang_matches("#!/usr/bin/env python", r"python(2\.\d)?"))
        self.assertTrue(util.shebang_matches("#!/usr/bin/python2.4", r"python(2\.\d)?"))
        self.assertTrue(util.shebang_matches("#!/usr/bin/startsomethingwith python", r"python(2\.\d)?"))
        self.assertTrue(util.shebang_matches("#!C:\\Python2.4\\Python.exe", r"python(2\.\d)?"))

        self.assertFalse(util.shebang_matches("#!/usr/bin/python-ruby", r"python(2\.\d)?"))
        self.assertFalse(util.shebang_matches("#!/usr/bin/python/ruby", r"python(2\.\d)?"))
        self.assertFalse(util.shebang_matches("#!", r"python"))
def test_shebang_matches():
    assert util.shebang_matches('#!/usr/bin/env python\n', r'python(2\.\d)?')
    assert util.shebang_matches('#!/usr/bin/python2.4', r'python(2\.\d)?')
    assert util.shebang_matches('#!/usr/bin/startsomethingwith python',
                                r'python(2\.\d)?')
    assert util.shebang_matches('#!C:\\Python2.4\\Python.exe', r'python(2\.\d)?')

    assert not util.shebang_matches('#!/usr/bin/python-ruby', r'python(2\.\d)?')
    assert not util.shebang_matches('#!/usr/bin/python/ruby', r'python(2\.\d)?')
    assert not util.shebang_matches('#!', r'python')
Beispiel #6
0
    def test_shebang_matches(self):
        self.assert_(util.shebang_matches('#!/usr/bin/env python', r'python(2\.\d)?'))
        self.assert_(util.shebang_matches('#!/usr/bin/python2.4', r'python(2\.\d)?'))
        self.assert_(util.shebang_matches('#!/usr/bin/startsomethingwith python',
                                          r'python(2\.\d)?'))
        self.assert_(util.shebang_matches('#!C:\\Python2.4\\Python.exe',
                                          r'python(2\.\d)?'))

        self.failIf(util.shebang_matches('#!/usr/bin/python-ruby', r'python(2\.\d)?'))
        self.failIf(util.shebang_matches('#!/usr/bin/python/ruby', r'python(2\.\d)?'))
        self.failIf(util.shebang_matches('#!', r'python'))
Beispiel #7
0
Datei: perl.py Projekt: axil/blog
    def analyse_text(text):
        def strip_pod(lines):
            in_pod = False
            stripped_lines = []

            for line in lines:
                if re.match(r'^=(?:end|cut)', line):
                    in_pod = False
                elif re.match(r'^=\w+', line):
                    in_pod = True
                elif not in_pod:
                    stripped_lines.append(line)

            return stripped_lines

        # XXX handle block comments
        lines = text.splitlines()
        lines = strip_pod(lines)
        text = '\n'.join(lines)

        if shebang_matches(text, r'perl6|rakudo|niecza|pugs'):
            return True

        saw_perl_decl = False
        rating = False

        # check for my/our/has declarations
        if re.search("(?:my|our|has)\s+(?:" + Perl6Lexer.PERL6_IDENTIFIER_RANGE +
                     "+\s+)?[$@%&(]", text):
            rating = 0.8
            saw_perl_decl = True

        for line in lines:
            line = re.sub('#.*', '', line)
            if re.match('^\s*$', line):
                continue

            # match v6; use v6; use v6.0; use v6.0.0;
            if re.match('^\s*(?:use\s+)?v6(?:\.\d(?:\.\d)?)?;', line):
                return True
            # match class, module, role, enum, grammar declarations
            class_decl = re.match('^\s*(?:(?P<scope>my|our)\s+)?(?:module|class|role|enum|grammar)', line)
            if class_decl:
                if saw_perl_decl or class_decl.group('scope') is not None:
                    return True
                rating = 0.05
                continue
            break

        return rating
Beispiel #8
0
    def test_shebang_matches(self):
        self.assertTrue(util.shebang_matches('#!/usr/bin/env python', r'python(2\.\d)?'))
        self.assertTrue(util.shebang_matches('#!/usr/bin/python2.4', r'python(2\.\d)?'))
        self.assertTrue(util.shebang_matches('#!/usr/bin/startsomethingwith python',
                                             r'python(2\.\d)?'))
        self.assertTrue(util.shebang_matches('#!C:\\Python2.4\\Python.exe',
                                             r'python(2\.\d)?'))

        self.assertFalse(util.shebang_matches('#!/usr/bin/python-ruby',
                                              r'python(2\.\d)?'))
        self.assertFalse(util.shebang_matches('#!/usr/bin/python/ruby',
                                              r'python(2\.\d)?'))
        self.assertFalse(util.shebang_matches('#!', r'python'))
Beispiel #9
0
    def analyse_text(text):
        if shebang_matches(text, r'perl'):
            return True

        result = 0

        if re.search(r'(?:my|our)\s+[$@%(]', text):
            result += 0.9

        if ':=' in text:
            # := is not valid Perl, but it appears in unicon, so we should
            # become less confident if we think we found Perl with :=
            result /= 2

        return result
Beispiel #10
0
 def analyse_text(text):
     return shebang_matches(text, r'ruby(1\.\d)?')
Beispiel #11
0
 def analyse_text(text):
     return shebang_matches(text, r'julia')
Beispiel #12
0
 def analyse_text(text):
     return shebang_matches(text, r'ruby(1\.\d)?')
Beispiel #13
0
 def analyse_text(text):
     if shebang_matches(text, r'(ba|z|)sh'):
         return 1
     if text.startswith('$ '):
         return 0.2
Beispiel #14
0
 def analyse_text(text):
     return shebang_matches(text, r'pythonw?(3(\.\d)?)?')
Beispiel #15
0
 def analyse_text(text):
     return shebang_matches(text, shebang_regex)
Beispiel #16
0
 def analyse_text(text):
     if shebang_matches(text, r'execlineb'):
         return 1
Beispiel #17
0
 def analyse_text(text):
     return shebang_matches(text, r"(tcl)")
Beispiel #18
0
 def analyse_text(text):
     return shebang_matches(text, r'requs')
Beispiel #19
0
 def analyse_text(text):
     if shebang_matches(text, r"(ba|z|)sh"):
         return 1
     if text.startswith("$ "):
         return 0.2
Beispiel #20
0
 def analyse_text(text):
     return (shebang_matches(text, r'sos-runner') or \
         '#fileformat=SOS' in text[:1000])
Beispiel #21
0
 def analyse_text(text):
     return shebang_matches(text, r'perl(\d\.\d\.\d)?')
Beispiel #22
0
 def analyse_text(text):
     return shebang_matches(text, shebang_regex)
Beispiel #23
0
 def analyse_text(text):
     return shebang_matches(text, r'(ba|z|)sh')
Beispiel #24
0
 def analyse_text(text):
     if shebang_matches(text, r'(ba|z|)sh'):
         return 1
     if text.startswith('$ '):
         return 0.2
 def analyse_text(text):
     return shebang_matches(text, r'(ba|z|)sh')
Beispiel #26
0
 def analyse_text(text):
     return shebang_matches(text, r'pythonw?(2\.\d)?')
Beispiel #27
0
 def analyse_text(self, text):
     return shebang_matches(
         text, r"sos-runner") or "#fileformat=SOS" in text[:1000]
Beispiel #28
0
 def analyse_text(text):
     return (shebang_matches(text, r'pythonw?(3(\.\d)?)?') or
             'import ' in text[:1000]) \
         and ('import numpy' in text or 'from numpy import' in text)
Beispiel #29
0
 def analyse_text(text):
     return shebang_matches(text, r'perl(\d\.\d\.\d)?')
Beispiel #30
0
 def analyse_text(text):
     return shebang_matches(text, r'pythonw?2(\.\d)?') or \
         'import ' in text[:1000]
Beispiel #31
0
 def analyse_text(text):
     return shebang_matches(text, r'pythonw?(2(\.\d)?)?') or \
         'import ' in text[:1000]
Beispiel #32
0
 def analyse_text(text):
     return (shebang_matches(text, r'sos-runner') or \
         '#fileformat=SOS' in text[:1000])
Beispiel #33
0
 def analyse_text(text):
     return (shebang_matches(text, r'pythonw?(2(\.\d)?)?') or
             'import ' in text[:1000]) \
         and ('import numpy' in text or 'from numpy import' in text)
Beispiel #34
0
 def analyse_text(text):
     return shebang_matches(text, r'(tcl)')
Beispiel #35
0
 def analyse_text(text):
     return shebang_matches(text, r'requs')
Beispiel #36
0
Datei: perl.py Projekt: axil/blog
 def analyse_text(text):
     if shebang_matches(text, r'perl'):
         return True
     if re.search('(?:my|our)\s+[$@%(]', text):
         return 0.9
Beispiel #37
0
 def analyse_text(text):
     return shebang_matches(text, r'seq')
Beispiel #38
0
 def analyse_text(text):
     if shebang_matches(text, r'perl'):
         return True
     if re.search('(?:my|our)\s+[$@%(]', text):
         return 0.9
Beispiel #39
0
 def analyse_text(text):  # @NoSelf
     return shebang_matches(text, r'pythonw?3(\.\d)?')