source: trunk/demo.py @ 71

Revision 71, 2.1 KB checked in by tim, 9 years ago (diff)

initial yaml commit of latest version downloaded from  http://www.yaml.org/dist/PyYaml.tgz

  • Property svn:executable set to *
Line 
1import yaml, string
2
3####### RUNNING YAML AGAINST THE README AND CHANGELOG
4
5readme = yaml.loadFile("README")
6print "README"
7for item in readme.next():
8    print item
9print "\n\nCONTRIBUTORS"
10for person in readme.next()['contributors']:
11    print "===%s===" % person['who']
12    print person['why?']
13    print
14print "\n\n"
15print "CHANGELOG:\n"
16print list(yaml.loadFile("CHANGELOG"))
17print "\n\n"
18
19######## USING YAML INSIDE YOUR PROGRAM
20
21testData = \
22"""
23program: PyYaml
24author: Steve Howell
25---
26shopping list:
27 - apple
28 - banana
29todo:
30 - eat more fruit:
31     - especially bananas!
32     - good for you
33 - write a better demo
34"""
35
36print "YAML INSIDE YOUR PROGRAM"
37for x in yaml.load(testData):
38   print repr(x)
39print "\n\n"
40
41
42######### YPATH STUFF
43
44try:
45    print "YPATH EXPERIMENTATION"
46    data = yaml.load(testData)
47    print yaml.ypath("/author",data.next()).next()
48    print yaml.dump(yaml.ypath("/todo/0",data.next()).next())
49except NotImplementedError:
50    print "Experimental YPATH requires Python 2.2"
51
52######### YAML DUMPER
53
54class Person:
55    def __init__(self, fname, lname, salary, children):
56        self.fname = fname
57        self.lname = lname
58        self.salary = salary
59        self.children = children
60        # private variables
61        self._fullname = fname + ' ' + lname
62        if salary:
63            self._sal_per_month = salary / 12.0
64        self._num_children = len(children)
65    def to_yaml(self):
66        return ({
67            'first name': self.fname,
68            'last name':  self.lname,
69            'salary':     self.salary
70        }, '!!Person')
71
72mrBarson = Person('Foo', 'Barson', 20, ['ex', 'theomatic'])
73mrDoe = Person('John', 'Doe', None, [])
74print yaml.dump([mrBarson, mrDoe])
75
76print "\n\nANOTHER WAY TO STDOUT:\n"
77import sys
78yaml.dumpToFile(sys.stdout, [mrBarson, mrDoe])
79
80print "\n\nDUMP MULTIPLE DOCS TO A FILE:\n"
81file = open('DEMO_OUTPUT.TXT', 'w')
82yaml.dumpToFile(file, 
83    {'source': "Demo output from demo.py"},
84    [
85        'apple',
86        'banana',
87    ],
88    'Third document'     
89)
90file.close()
91
92
Note: See TracBrowser for help on using the repository browser.