1. 로그램 개 ¶
모모 돌리다가 각두던 MindMap 각 났다. Page 관들 대 Navigation . 무 딩부 려고 는데 머릿 리가 되 다. 리리 고 그리고 만. -_-; '는 공부고 는 것!' 공부란 머리로 반, 몸로 반 다. 공 '견 ' 란 말 괜 나는 것 리라.
다.
2. 로그래밍 느낀 ¶
- '각 는 가 단 것부 각라.' 디 TFP Refactoring 과만로 느 보 된다. TFP 구는 기능 모가 기본로 루다. (껏 경 -- 그래봤 3만 -- 면, TFP를 면 LongMethod 가 난 다. (LongMethod Bad Smell 대는 BadSmellsInCode를 라.) 만 복드 문가 발더라 기 막무가내 방 그 가 다. 만 Bad Smell 난다면 Refactoring 면 된다. (고로 밑 는 Refactoring 과 다.)
- Python 라는 미는 녀라 각다. 방 basic 그것겠만, '리라는 것 고 다' 를 다 각게 기가 되다. 반로 리가 로그래밍 때는 (기는 C++라 ) Visual C++ 나만 놓고 로그래밍 는 경가 로 다. 보 product code 를 나, 당 기능 부구 (드 구) 나. -라 로그래밍 경는 3개를 는 경 다반다. Python shell 드를 구는데 매 리 구다. ( 되면 검문 다. VS 2-3개 는 랑 python IDLE 2-3개 는 랑 다를바가 뭐냐.. --; 내가 말고 것 C++나 PHP 럼 공 리 면 는 것. -_a ..) . 나는 모모를 보면 목 검 관련 부 드를 라 단 보고 검고 볼 다.
3. WikiPageGatherTestCase.py ¶
~cpp
import unittest
from WikiPageGather import *
class WikiPageGatherTestCase (unittest.TestCase):
def setUp (self):
self.pageGather = WikiPageGather ()
def tearDown (self):
self.pageGather = None
def testConvertWikiPageNameToMoinFileName (self):
self.assertEquals (self.pageGather.WikiPageNameToMoinFileName ('''글'''), '''_c7_d1_b1_db_c5_d7_bd_ba_c6_ae''')
self.assertEquals (self.pageGather.WikiPageNameToMoinFileName ("FrontPage"), "FrontPage")
def testGetPageNamesFromPage (self):
self.pageGather.SetPage ("FrontPage")
self.assertEquals (self.pageGather.GetPageNamesFromPage (), ["LearningHowToLearn", "ActiveX", "Python", "XPInstalled", "TestFirstProgramming", "글", "PrevFrontPage"])
def testGetPageNamesFromString (self):
strings = "Test First In TestFirstIn TesF TestFi guuweo StringIn"
self.assertEquals (self.pageGather.GetPageNamesFromString (strings), ["TestFirstIn", "TestFi", "StringIn"])
strings = '''["Testing"] ["Testing The Program"] higu TestFirst twet'''
self.assertEquals (self.pageGather.GetPageNamesFromString (strings), ["Testing", "Testing The Program", "TestFirst"])
def testIsHeadTagLine (self):
strings = "== testing =="
self.assertEquals (self.pageGather.IsHeadTagLine (strings), 1)
strings = "tese ewfe ewfw"
self.assertEquals (self.pageGather.IsHeadTagLine (strings), 0)
def testRemoveHeadLine (self):
strings = '''=== ExtremeProgramming ===\ntesting.. -_-a\n== TestFirst Programmin ==\nfwe\n'''
self.assertEquals (self.pageGather.RemoveHeadLine (strings), "testing.. -_-a\nfwe\n")
def testGetWikiPage(self):
self.assertEquals (self.pageGather.GetWikiPage ("FrontPage"), '=== Reading ===\n' +
'["LearningHowToLearn"]\n\n\n=== C++ ===\n["ActiveX"]\n\n' +
'[[Include(ActiveX,Test,1)]]\n\n=== Python ===\n["Python"]\n\n' +
'=== ExtremeProgramming ===\n * ["XPInstalled"]\n * TestFirstProgramming\n'+
' * ["ÇѱÛÅ׽ºƮ"]\n\n----\n["PrevFrontPage"]\n\n----\n')
suite = unittest.makeSuite (WikiPageGatherTestCase, "test")
runner = unittest.TextTestRunner ()
runner.run (suite)
4. WikiPageGather.py ¶
~cpp
import string, urllib, re
class WikiPageGather:
def __init__(self):
self.pagePath = "f:\web\wiki-moinmoin\data\text\"
self.pagename = ''
def WikiPageNameToMoinFileName (self,pagename):
safe = string.letters + string.digits
res = list(pagename)
for i in range(len(res)):
c = res[i]
if c not in safe:
res[i] = '_%02x' % ord(c)
return string.joinfields(res, '')
def SetPage (self, pagename):
self.pagename = pagename
def GetWikiPage (self, pagename):
fullpathname = self.pagePath + self.WikiPageNameToMoinFileName (pagename)
pagefile = open (fullpathname, 'r')
lines = pagefile.readlines ()
page = ''
for line in lines:
page += line
pagefile.close()
return page
def RemoveHeadLine (self, lines):
lines = string.split (lines, "\n")
resultText = ''
for line in lines:
if self.IsHeadTagLine (line):
continue
elif line == '':
continue
resultText += line + "\n"
return resultText
def IsHeadTagLine (self, strings):
try:
if strings[0] == '=':
return 1
elif strings[0:2] == '==':
return 1
elif strings[0:3] == '===':
return 1
else:
return 0
except IndexError:
return 0
def GetPageNamesFromPage (self):
page = self.GetWikiPage (self.pagename)
page = self.RemoveHeadLine (page)
pagenamelist = []
pagenamelist += self.GetPageNamesFromString (page)
return pagenamelist
def GetPageNamesFromString (self, strings):
PageNameRegularStr = '''(([A-Z][a-z0-9]+){2,})|(\[".*?"\])'''
PageNameReg = re.compile (PageNameRegularStr)
PageNameReg.findall (strings)
pagenamelist = []
for pagename in PageNameReg.findall (strings):
if pagename[0] != '':
pagenamelist.append (pagename[0])
elif pagename[2] != '':
realname = string.replace (pagename[2], '''["''', '')
realname = string.replace (realname, '''"]''', '')
pagenamelist.append (realname)
return pagenamelist
def main (self):
self.SetPage ("FrontPage")
for pagename in self.GetPageNamesFromPage ():
print "pagename : " + pagename
print "filename : " + self.WikiPageNameToMoinFileName (pagename)
if __name__ == "__main__":
pageGather = WikiPageGather ()
pageGather.main ()
5. 결과 ¶
돌리고 는 모모 디렉리 기. (Python shell IDLE 글 를 그런 래는 글 깨 나다. .)
~cpp pagename : LearningHowToLearn filename : LearningHowToLearn pagename : ActiveX filename : ActiveX pagename : Python filename : Python pagename : XPInstalled filename : XPInstalled pagename : TestFirstProgramming filename : TestFirstProgramming pagename : 글 filename : _c7_d1_b1_db_c5_d7_bd_ba_c6_ae pagename : PrevFrontPage filename : PrevFrontPage










