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 | |
---|
1 | require 'rexml/document'
|
---|
2 | require 'builder'
|
---|
3 |
|
---|
4 | module 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
|
---|
19 | archetype (adl_version = #{@archetype.adl_version})
|
---|
20 | \t#{@archetype.archetype_id.value}
|
---|
21 |
|
---|
22 | concept
|
---|
23 | \t[#{@archetype.concept}]
|
---|
24 | HERE
|
---|
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
|
---|
66 | end
|
---|
67 |
|
---|
68 | class Publisher
|
---|
69 | def initialize(serializer)
|
---|
70 | @serializer = serializer
|
---|
71 | end
|
---|
72 |
|
---|
73 | def publish(writer)
|
---|
74 | writer.out(@serializer.serialize)
|
---|
75 | end
|
---|
76 | end
|
---|
77 |
|
---|
78 | class Writer
|
---|
79 | def initialize(target)
|
---|
80 | @target = target
|
---|
81 | end
|
---|
82 | def out
|
---|
83 | end
|
---|
84 | end
|
---|
Note:
See
TracBrowser
for help on using the repository browser.