Exemplo n.º 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
Exemplo n.º 2
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
Exemplo n.º 3
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
Exemplo n.º 4
0
 def analyse_text(text):
     if shebang_matches(text, r'(ba|z|)sh'):
         return 1
     if text.startswith('$ '):
         return 0.2
Exemplo n.º 5
0
 def analyse_text(text):
     return shebang_matches(text, r'julia')
Exemplo n.º 6
0
 def analyse_text(text):
     return shebang_matches(text, r'(tcl)')
Exemplo n.º 7
0
 def analyse_text(text):
     return shebang_matches(text, r'pythonw?2(\.\d)?') or \
         'import ' in text[:1000]
Exemplo n.º 8
0
 def analyse_text(text):
     return shebang_matches(text, r'pythonw?(3(\.\d)?)?')
Exemplo n.º 9
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)
Exemplo n.º 10
0
 def analyse_text(text):
     if shebang_matches(text, r'perl'):
         return True
     if re.search(r'(?:my|our)\s+[$@%(]', text):
         return 0.9
Exemplo n.º 11
0
 def analyse_text(text):
     return shebang_matches(text, r'ruby(1\.\d)?')
Exemplo n.º 12
0
 def analyse_text(text):
     if shebang_matches(text, r'execlineb'):
         return 1