Class: Archimate::FileFormats::Serializer::Archi::ArchiFileWriter
- Includes:
- Bounds, Connection, Diagram, Documentation, Element, Model, Organization, Property, Relationship, ViewNode, Viewpoint3
- Defined in:
- lib/archimate/file_formats/serializer/archi/archi_file_writer.rb
Direct Known Subclasses
Constant Summary collapse
- TEXT_SUBSTITUTIONS =
[ [' ', '
'], ['"', '"'], ['>', '>'], ['&', '&'] ].freeze
Constants included from Viewpoint3
Instance Attribute Summary
Attributes inherited from Writer
Instance Method Summary collapse
-
#initialize(model) ⇒ ArchiFileWriter
constructor
A new instance of ArchiFileWriter.
- #process_text(doc_str) ⇒ Object
- #write(archifile_io) ⇒ Object
Methods included from Viewpoint3
Methods included from ViewNode
#archi_style_hash, #serialize_view_node
Methods included from Relationship
#serialize_access_type, #serialize_relationship
Methods included from Property
Methods included from Organization
Methods included from Model
Methods included from Element
#element_attrs, #mapped_element_name, #serialize_element
Methods included from Documentation
Methods included from Diagram
Methods included from Connection
#serialize_bendpoint, #serialize_connection
Methods included from Bounds
Methods inherited from Writer
Constructor Details
#initialize(model) ⇒ ArchiFileWriter
Returns a new instance of ArchiFileWriter.
29 30 31 32 |
# File 'lib/archimate/file_formats/serializer/archi/archi_file_writer.rb', line 29 def initialize(model) super @version = "3.1.1" end |
Instance Method Details
#process_text(doc_str) ⇒ Object
34 35 36 37 38 39 40 41 42 43 44 45 46 47 |
# File 'lib/archimate/file_formats/serializer/archi/archi_file_writer.rb', line 34 def process_text(doc_str) %w(documentation content name).each do |tag| TEXT_SUBSTITUTIONS.each do |from, to| doc_str.gsub!(%r{<#{tag}>([^<]*#{from}[^<]*)</#{tag}>}) do |str| str.gsub(from, to) end end end doc_str.gsub( %r{<(/)?archimate:}, "<\\1" ).gsub( %r{<(/)?model}, "<\\1archimate:model" ) end |
#write(archifile_io) ⇒ Object
49 50 51 52 53 54 55 56 57 58 |
# File 'lib/archimate/file_formats/serializer/archi/archi_file_writer.rb', line 49 def write(archifile_io) builder = Nokogiri::XML::Builder.new(encoding: 'UTF-8') do |xml| serialize_model(xml, model) end archifile_io.write( process_text( builder.to_xml ) ) end |