File: plparse.st

package info (click to toggle)
steptalk 0.10.0%2Bgit20200629-3
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 2,732 kB
  • sloc: objc: 12,182; yacc: 400; makefile: 40; sh: 34; csh: 4; awk: 3; lisp: 3
file content (79 lines) | stat: -rw-r--r-- 1,724 bytes parent folder | download | duplicates (7)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
"
plparse.st

    GNUstep plparse tool rewriten as Smalltalk script for StepTalk

Ussage:
    stexec plparse.st file1 [file2 ...]


"
[|

main

    | string result |

    ((Args count) < 1 ) 
    ifTrue: 
    [
            Transcript showLine:'No file names given to parse.'
    ]
    ifFalse:
    [
        Args do: 
        [ 
            :file | self parseFile:file
        ]
    ].

    ^self
!

parseFile: file

    Transcript show: ('Parsing ', file, ' - ').

    [

        string := NSString stringWithContentsOfFile:file.
        result := string propertyList.

        (result isNil) 
        ifTrue: 
        [ 
            Transcript showLine:'nil property list' 
        ]
        ifFalse:
        [
            (result isKindOfClass: (NSDictionary class)) 

            ifTrue: [ Transcript showLine:'a dictionary']
            ifFalse: 
            [
            (result isKindOfClass: (NSArray class)) 
                ifTrue: [ Transcript showLine:'an array']
                ifFalse: 
                [    
                (result isKindOfClass: (NSData class)) 
                ifTrue: [ Transcript showLine:'a data']
                ifFalse: 
                    [
                        (result isKindOfClass: (NSString class)) 
                        ifTrue: [ Transcript showLine:'a string']
                        ifFalse: 
                        [
                            Transcript showLine: ('unexpected class - ', 
                                              result class description )
                        ]
                    ]
                ]
            ]
        ]
    ]
    handler:
    [
        :localException |
    	Transcript showLine: (localException reason)
    ].
]