source: ruby/trunk/lib/open_ehr/serializer.rb@ 406

Last change on this file since 406 was 406, checked in by KOBAYASHI, Shinji, 14 years ago

serializer implementation

File size: 1.3 KB
Line 
1require 'rexml/document'
2require 'builder'
3
4module OpenEHR
5 module Serializer
6 class BaseSerializer
7 def initialize(archetype)
8 @archetype = archetype
9 end
10
11 def serialize
12 return self.merge
13 end
14 end
15
16 class ADLSerializer < BaseSerializer
17 def header
18 return <<HERE
19archetype (adl_version = #{@archetype.adl_version})
20\t#{@archetype.archetype_id.value}
21
22concept
23\t[#{@archetype.concept}]
24HERE
25 end
26
27 def description
28
29 end
30
31 def definition
32 end
33
34 def ontology
35 end
36
37 def envelope
38 end
39
40 def merge
41 return header + description + definition + ontology
42 end
43 end
44
45 class XMLSerializer < BaseSerializer
46
47 def header
48 header = ''
49 xml = Builder::XmlMarkup.new(:indent => 2, :target => header)
50 xml.archetype_id do
51 xml.value @archetype.archetype_id.value
52 end
53 xml.concept @archetype.concept
54 return header
55 end
56
57 def description
58
59 end
60
61 def merge
62
63 end
64 end
65 end
66end
67
68class Publisher
69 def initialize(serializer)
70 @serializer = serializer
71 end
72
73 def publish(writer)
74 writer.out(@serializer.serialize)
75 end
76end
77
78class Writer
79 def initialize(target)
80 @target = target
81 end
82 def out
83 end
84end
Note: See TracBrowser for help on using the repository browser.