E D R , A S I H C RSS

Signature Survey



HTML Template 뢀뢄을 Generating ν•˜λŠ” 뢀뢄을 ν•˜λ˜μ€‘, λ””μžμ΄λ„ˆκ°€ 툴둜 λ§Œλ“  HTML μ½”λ“œλΌ λΆ„μ„ν•΄λ³Όλ•Œ SigntureSurvey 의 방법을 μ μš©ν•΄λ³΄λ©΄ μ–΄λ–€ 일이 μΌμ–΄λ‚ κΉŒ 의문이 λ“€μ—ˆλ‹€. κ·Έλž˜μ„œ κ°„λ‹¨ν•˜κ²Œ μ‹€ν—˜ν•΄λ³΄κ³ , μ–΄λ– ν•œ View λΌ μ–»μ„ 수 μžˆμ„κΉŒ ꡬ경해보닀.
Plex μ‚¬μš©.
~cpp 
from Plex import *
import StringIO

class HtmlSigSurveyer(Scanner):
    def repl_tagEnd(self, aText):
        self.begin('')
        result = "." * (len(aText)-1) + ">"+ str(len(aText)-1) +"\n"
        return  result
    def repl_tagChar(self, aText):
        return "."
    def repl_normalString(self, aText):
        return aText
    def repl_tagStart(self, aText):
        self.begin('tag')
        return aText
    def repl_enter(self, aText):
        return "\n"
    def repl_whiteSpace(self, aText):
        return ""

    tagStart = Str("<")
    tagEnd = Rep1(AnyBut(">")) + Str(">")
    enterCode = Str("\n")
    whiteSpace = Rep1(Str(" ")) | Rep1(Str("\t"))

    lexicon = Lexicon([
        (tagStart, repl_tagStart),
        State('tag', [
            (tagEnd, repl_tagEnd),
            (enterCode, repl_enter),
            (AnyChar, repl_tagChar)
        ]),
        (whiteSpace, repl_whiteSpace),
        (AnyChar, repl_normalString),
        ])

    def __init__(self, aStream):
        Scanner.__init__(self, self.lexicon, aStream)

    def process(self):
        writer = StringIO.StringIO("")
        while True:
            token = self.read()
            if token[0] is None:
                break
            writer.write(token[0])
        return writer.getvalue()

def readFromFile(aFileName):
    f = open(aFileName, 'r')
    text = f.read()
    f.close()
    return text
def writeToFile(aFileName, aStr):
    f = open(aFileName, 'w')
    f.write(aStr)
    f.close()

if __name__=="__main__":
    data = readFromFile("sig.html")
    surveyer = HtmlSigSurveyer(StringIO.StringIO(data))
    result = surveyer.process()
    lines = [line for line in result.splitlines() if line.strip() != '']
    count = 1
    for line in lines:
        print count, line
        count +=1

결과물이 λŒ€κ°• λ‹€μŒκ³Ό κ°™μ•˜λŠ”λ°.
~cpp 
1 <............................................................>60
2 <..>2
3 <..........................>26
4 <...>3
5 <...>3
6 <..>2
7 <.........................>25
8 <..........................................................................>74
9 <...>3
10 <................................>32
11 <..........................................................................>74
12 <..>2
13 <..>2
14 <...............................................................................................>95
15 <.................................................>49
16 TV<..>2
17 &nbsp;&nbsp;&nbsp;<...............................................................................................>95
18 <.................................................>49
19 VTR<..>2
20 &nbsp;&nbsp;<...............................................................................................>95
21 <.................................................>49
22 DVD<..>2
23 &nbsp;&nbsp;&nbsp;<...............................................................................................>95
24 <.................................................>49
25 ν™ˆμ‹œμ–΄ν„°<..>2
26 &nbsp;&nbsp;&nbsp;<...............................................................................................>95
27 <.................................................>49
28 냉μž₯κ³ <..>2
29 &nbsp;&nbsp;&nbsp;<...............................................................................................>95
30 <.................................................>49
31 세탁기<..>2
32 &nbsp;&nbsp;&nbsp;<...............................................................................................>95
33 <.................................................>49
34 μ˜€λ””μ˜€<..>2
35 &nbsp;&nbsp;&nbsp;<...............................................................................................>95
36 <.................................................>49
37 μΉ΄μ„ΈνŠΈ<..>2
38 &nbsp;&nbsp;&nbsp;<...............................................................................................>95
39 <.................................................>49
40 μ›Œν¬λ§¨/λ…ΉμŒκΈ°<..>2
41 <..>2
42 <.......................>23
43 <..............................................................................................>94
44 <...............................................................................................>95
45 <..>2
46 <.....................................................>53
47 <.............................................................>61
.
.
.
μ΄λΌ λΆ„μ„ν• λ•ŒλŠ” 4-5point 둜 λ ˆμ΄μ €λ‘œ 2단 λ‚˜λˆ„μ–΄μ„œ μ°μ—ˆλ‹€. λ³„λ‘œ μ’…μ΄λΌ λ§Žμ΄ μ°¨μ§€ν•˜μ§€ μ•ŠλŠ”λ‹€.
μ •ν™•νžˆ 뢄석을 ν•œ 것은 μ•„λ‹ˆμ§€λ§Œ. <> νƒœκ·Έ μ•ˆμœΌλ‘œ μ“΄ κΈ€μžμˆ˜κ°€ κ°™λ‹€λ©΄ ν™”λ©΄μƒμ—μ„œλ„ λΉ„μŠ·ν•œ 것을 보이게 ν•˜κΈ° μœ„ν•΄ C & P λΌ ν–ˆμ„ ν™•λ₯ μ΄ λ†’λ‹€. 그러면 κ·Έ 뢀뢄에 λŒ€ν•΄μ„œ looping 을 ν•˜λŠ” μ‹μœΌλ‘œ 묢으면 될것 κ°™λ‹€. μ’…μ΄λ‘œ 찍어놓고 보면 λ°˜λ³΅λ˜λŠ” 뢀뢄에 λŒ€ν•΄μ„œ μΌλ°˜ν™”λœ νŒ¨ν„΄μ΄ λ³΄μΈλ‹€λŠ” 것을 μ•Œ 수 μžˆλ‹€. κ·Έ 뢀뢄에 λŒ€ν•΄ 적절히 1차적으둜 검색을 ν•˜κ³ , generating ν• λ•Œμ˜ λ‹¨μœ„λ“€μ„ 끄집어내면 λ˜λŠ” 것이닀.

μ²˜μŒμ¨λ΄μ„œ μ™„λ²½ν•˜κ²Œ 확신이 듀진 μ•Šμ§€λ§Œ, SignatureSurvey λΌ μ‚¬μš©ν•˜λ©΄ Duplication Code λΌ μ°ΎλŠ” λ°©λ²•μœΌλ‘œ μΌλ°˜ν™”λΌ μ‹œν‚¬ 수 μžˆμ§€ μ•Šμ„κΉŒ ν•˜λŠ” 상상을 ν•΄λ³Έλ‹€.
--1002
Valid XHTML 1.0! Valid CSS! powered by MoniWiki
last modified 2021-02-07 05:28:01
Processing time 0.0196 sec