Module: BioCWriter
- Defined in:
- lib/simple_bioc/bioc_writer.rb
Class Method Summary collapse
- .write(collection) ⇒ Object
- .write_annotation(xml, annotation) ⇒ Object
- .write_collection(xml, collection) ⇒ Object
- .write_document(xml, document) ⇒ Object
- .write_infon(xml, obj) ⇒ Object
- .write_location(xml, location) ⇒ Object
- .write_node(xml, node) ⇒ Object
- .write_passage(xml, passage) ⇒ Object
- .write_relation(xml, relation) ⇒ Object
- .write_sentence(xml, sentence) ⇒ Object
Class Method Details
.write(collection) ⇒ Object
6 7 8 9 10 11 |
# File 'lib/simple_bioc/bioc_writer.rb', line 6 def write(collection) builder = Nokogiri::XML::Builder.new(:encoding => 'UTF-8') do |xml| write_collection(xml, collection) end builder.to_xml end |
.write_annotation(xml, annotation) ⇒ Object
61 62 63 64 65 66 67 68 69 70 71 72 |
# File 'lib/simple_bioc/bioc_writer.rb', line 61 def write_annotation(xml, annotation) if annotation.id.nil? attribute = nil else attribute = {id: annotation.id} end xml.annotation(attribute) { write_infon(xml, annotation) xml.text_ annotation.text annotation.locations.each{|l| write_location(xml, l)} } end |
.write_collection(xml, collection) ⇒ Object
21 22 23 24 25 26 27 28 29 |
# File 'lib/simple_bioc/bioc_writer.rb', line 21 def write_collection(xml, collection) xml.collection { xml.source collection.source xml.date collection.date xml.key collection.key write_infon(xml, collection) collection.documents.each{|d| write_document(xml, d)} } end |
.write_document(xml, document) ⇒ Object
31 32 33 34 35 36 37 38 |
# File 'lib/simple_bioc/bioc_writer.rb', line 31 def write_document(xml, document) xml.document { xml.id_ document.id write_infon(xml, document) document.passages.each{|p| write_passage(xml, p)} document.relations.each{|r| write_relation(xml, r)} } end |
.write_infon(xml, obj) ⇒ Object
13 14 15 16 17 18 19 |
# File 'lib/simple_bioc/bioc_writer.rb', line 13 def write_infon(xml, obj) obj.infons.each do |k, v| xml.infon(:key => k) { xml.text v } end end |
.write_location(xml, location) ⇒ Object
86 87 88 |
# File 'lib/simple_bioc/bioc_writer.rb', line 86 def write_location(xml, location) xml.location(:offset => location.offset, :length => location.length) end |
.write_node(xml, node) ⇒ Object
90 91 92 |
# File 'lib/simple_bioc/bioc_writer.rb', line 90 def write_node(xml, node) xml.node_(:refid => node.refid, :role => node.role) end |
.write_passage(xml, passage) ⇒ Object
40 41 42 43 44 45 46 47 48 49 |
# File 'lib/simple_bioc/bioc_writer.rb', line 40 def write_passage(xml, passage) xml.passage { write_infon(xml, passage) xml.offset passage.offset xml.text_ passage.text unless passage.text.nil? passage.sentences.each{|s| write_sentence(xml, s)} passage.annotations.each{|a| write_annotation(xml, a)} passage.relations.each{|r| write_relation(xml, r)} } end |
.write_relation(xml, relation) ⇒ Object
74 75 76 77 78 79 80 81 82 83 84 |
# File 'lib/simple_bioc/bioc_writer.rb', line 74 def write_relation(xml, relation) if relation.id.nil? attribute = nil else attribute = {id: relation.id} end xml.relation(attribute) { write_infon(xml, relation) relation.nodes.each{|n| write_node(xml, n)} } end |
.write_sentence(xml, sentence) ⇒ Object
51 52 53 54 55 56 57 58 59 |
# File 'lib/simple_bioc/bioc_writer.rb', line 51 def write_sentence(xml, sentence) xml.sentence { write_infon(xml, sentence) xml.offset sentence.offset xml.text_ sentence.text unless sentence.text.nil? sentence.annotations.each{|a| write_annotation(xml, a)} sentence.relations.each{|r| write_relation(xml, r)} } end |