Class: Archimate::FileFormats::ArchiFileWriter
- Inherits:
-
Serializer::Writer
- Object
- Serializer::Writer
- Archimate::FileFormats::ArchiFileWriter
- Includes:
- Serializer::Archi::Bounds, Serializer::Archi::Connection, Serializer::Archi::Diagram, Serializer::Archi::Documentation, Serializer::Archi::Element, Serializer::Archi::Location, Serializer::Archi::Model, Serializer::Archi::Organization, Serializer::Archi::Property, Serializer::Archi::Relationship, Serializer::Archi::ViewNode
- Defined in:
- lib/archimate/file_formats/archi_file_writer.rb
Constant Summary collapse
- TEXT_SUBSTITUTIONS =
[ [' ', '
'], ['"', '"'], ['>', '>'], ['&', '&'] ].freeze
Instance Attribute Summary
Attributes inherited from Serializer::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 Serializer::Archi::ViewNode
#archi_style_hash, #serialize_view_node
Methods included from Serializer::Archi::Relationship
#serialize_access_type, #serialize_relationship
Methods included from Serializer::Archi::Property
Methods included from Serializer::Archi::Organization
Methods included from Serializer::Archi::Model
Methods included from Serializer::Archi::Location
Methods included from Serializer::Archi::Element
Methods included from Serializer::Archi::Documentation
Methods included from Serializer::Archi::Diagram
Methods included from Serializer::Archi::Connection
Methods included from Serializer::Archi::Bounds
Methods inherited from Serializer::Writer
#remove_nil_values, #serialize, write
Constructor Details
#initialize(model) ⇒ ArchiFileWriter
Returns a new instance of ArchiFileWriter.
26 27 28 29 |
# File 'lib/archimate/file_formats/archi_file_writer.rb', line 26 def initialize(model) super @version = "3.1.1" end |
Instance Method Details
#process_text(doc_str) ⇒ Object
31 32 33 34 35 36 37 38 39 40 41 42 43 44 |
# File 'lib/archimate/file_formats/archi_file_writer.rb', line 31 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
46 47 48 49 50 51 52 53 54 55 |
# File 'lib/archimate/file_formats/archi_file_writer.rb', line 46 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 |