::NPTEAM:: Network Programer Team

검색 :
RSS 구독 : 글 / 댓글 / 트랙백 / 글+트랙백

[Python] Lua Reference Type Checker

import sys
import string


def Extract_RightSide_From_FileLines( FileLines ) :
	RightSideList = []
	for eachline in FileLines :
		if( IsExistOnlyOneEqual( eachline ) == True ) :
			RightSideValue = RightSideOfEqual( eachline )
			RightSideList.append( RightSideValue )
	return RightSideList


def Extract_LeftSide_From_FileLines( FileLines ) :
	LeftSideList = []
	for eachline in FileLines :
		if( IsExistOnlyOneEqual( eachline ) == True ) :
			LeftSideValue = LeftSideOfEqual( eachline )
			LeftSideList.append( LeftSideValue )
	return LeftSideList


def IsExistOnlyOneEqual( strLine ) :
	strLine = RemoveLuaComment( strLine )
	
	find_pos = strLine.find( '=', 0 )
	if( find_pos == -1 ) :
		return False
		
	find_pos = strLine.find( '=', find_pos + 1 )
	if( find_pos == -1 ) :
		return True
		
	return False


def RemoveLuaComment( strLine ) :
	find_pos = strLine.find( '--', 0 )
	if( find_pos != -1 ) :
		return strLine[0 : find_pos].strip()
	return strLine.strip()


def LeftSideOfEqual( strLine ) :
	strLine = RemoveLuaComment( strLine )
	find_pos = strLine.find( '=', 0 )
	if( find_pos != -1 ) :
		return strLine[0 : find_pos].strip()
	return strLine.strip()


def RightSideOfEqual( strLine ) :
	strLine = RemoveLuaComment( strLine )
	find_pos = strLine.find( '=', 0 )
	if( find_pos != -1 ) :
		return strLine[find_pos + 1 : len(strLine)].strip()
	return strLine.strip()


def Extract_Alparbet_Number_UnderBar( strLine ) :
	strAlparbet_Number_UnderBar = string.letters + string.digits + '_'
	strList = []
	for OneWord in strLine :
		if( OneWord in strAlparbet_Number_UnderBar ) :
			strList.append( OneWord )
	strTemp = ''.join( strList )
	return strTemp


def RefTypeMaching( strStartKeyword, nLineNumber, strSourceLine, strRefTypeList ) :
	strSourceTempList = strSourceLine.split()
	for eachSource in strSourceTempList :
		strExtractedSource = Extract_Alparbet_Number_UnderBar( eachSource )
		
		if( strExtractedSource.startswith( strStartKeyword ) == True ) :
			if( strExtractedSource not in strRefTypeList ) :
				print 'RefType Mismatch. LineNumber : ' + str( nLineNumber ) + ', Source String : ' + strExtractedSource




def main(argv) :
	Reference_file = argv[1]
	Programed_file = argv[2]
	
	# Reference File Loading(RefTypeList)
	Ref_fstream = open( Reference_file, 'r' )
	RefFileList = Ref_fstream.xreadlines()
	RefTypeList = Extract_LeftSide_From_FileLines( RefFileList )
	Ref_fstream.close()
	
	# Programed File Loading(ProgramFileList)
	Programed_fstream = open( Programed_file, 'r' )
	ProgramFileList = Programed_fstream.readlines()
	Programed_fstream.close()
	
	# Print Type Check	
	print '---------------------------------------------------------'
	print 'Start Type Check. File Name : ' + str( argv[2] )
	print '---------------------------------------------------------'
	for i, eachProgramLine in enumerate( ProgramFileList ) :
		strRemovedComment = RemoveLuaComment( eachProgramLine )
		RefTypeMaching( 'Item_', i + 1, strRemovedComment, RefTypeList )
	print '---------------------------------------------------------'



if __name__ == "__main__" :  
    main(argv=sys.argv)  
2010/02/11 16:56 2010/02/11 16:56

맨 위로

[Python] Ini 파일 형식 라인별로 읽어서 "=" 연산자 양쪽 값 분리

import sys

def IsExistOnlyOneEqual( strLine ) :
	strLine = RemoveLuaComment( strLine )
	
	find_pos = strLine.find( '=', 0 )
	if( find_pos == -1 ) :
		return False
		
	find_pos = strLine.find( '=', find_pos + 1 )
	if( find_pos == -1 ) :
		return True
		
	return False
	

def RemoveLuaComment( strLine ) :
	find_pos = strLine.find( '--', 0 )
	if( find_pos != -1 ) :
		return strLine[0 : find_pos].strip()
	return strLine.strip()
	
	
def LeftSideOfEqual( strLine ) :
	strLine = RemoveLuaComment( strLine )
	find_pos = strLine.find( '=', 0 )
	if( find_pos != -1 ) :
		return strLine[0 : find_pos].strip()
	return strLine.strip()
	
	
def RightSideOfEqual( strLine ) :
	strLine = RemoveLuaComment( strLine )
	find_pos = strLine.find( '=', 0 )
	if( find_pos != -1 ) :
		return strLine[find_pos + 1 : len(strLine)].strip()
	return strLine.strip()	
	

def main(argv) :
	input_file = argv[1]
	
	f = open( input_file, 'r' )
	filelist = f.readlines()
	
	for eachline in filelist :
		if( IsExistOnlyOneEqual( eachline ) == False ) :
			print "\n[Error Line] ", eachline
		else :
			print "\n[Total]\n", eachline
			print "\n[Remove Comment]\n", RemoveLuaComment( eachline )
			print "\n[Left Side]\n", LeftSideOfEqual( eachline )
			print "\n[Right Side]\n", RightSideOfEqual( eachline )
		
	f.close()
	
if __name__ == "__main__" :  
    main(argv=sys.argv)  
2010/02/10 22:31 2010/02/10 22:31

맨 위로

그레고리 닥터 하우스 수상소감


역시 기대를 저버리지 않네요. ㅎㅎ
2010/02/03 01:41 2010/02/03 01:41

맨 위로