#!/usr/bin/env python
import re
import sys
package = re.compile("^\s*package (\S+)\s*;")
class JavaFile:
def __init__(self,location):
self.location = location
def dirName(self):
"""
Retourne le nom du package en se basant sur
le nom du fichier.
Note: le nom du fichier doit etre de la forme
./repertoires/associes/au/paquetage/fichier.java
"""
return '.'.join(self.location.split('/')[1:-1])
def packageName(self):
"""
Retourne le nom du package specifie dans le code source
"""
f=open(self.location,'r')
lines=f.readlines()
f.close()
for line in lines:
if package.match(line):
return package.match(line).group(1)
def isValid(self):
"""
Retourne vrai ou faux selon que le nom
du package specifie dans le code source
corresponde a l'emplacement du fichier
"""
return len(self.dirName())==len(self.packageName())
if __name__=="__main__":
javaFile = JavaFile(sys.argv[1])
if not javaFile.isValid():
print "%s is not valid." % sys.argv[1]
[^] # Exemple en python
Posté par bobert . En réponse au message de la puissance de (beep) pour trouver un truc simple en 2 minutes. Évalué à 4.
#!/usr/bin/env python import re import sys package = re.compile("^\s*package (\S+)\s*;") class JavaFile: def __init__(self,location): self.location = location def dirName(self): """ Retourne le nom du package en se basant sur le nom du fichier. Note: le nom du fichier doit etre de la forme ./repertoires/associes/au/paquetage/fichier.java """ return '.'.join(self.location.split('/')[1:-1]) def packageName(self): """ Retourne le nom du package specifie dans le code source """ f=open(self.location,'r') lines=f.readlines() f.close() for line in lines: if package.match(line): return package.match(line).group(1) def isValid(self): """ Retourne vrai ou faux selon que le nom du package specifie dans le code source corresponde a l'emplacement du fichier """ return len(self.dirName())==len(self.packageName()) if __name__=="__main__": javaFile = JavaFile(sys.argv[1]) if not javaFile.isValid(): print "%s is not valid." % sys.argv[1]