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