Class: Archimate::Cli::Cleanup
- Inherits:
-
Object
- Object
- Archimate::Cli::Cleanup
- Defined in:
- lib/archimate/cli/cleanup.rb
Instance Attribute Summary collapse
-
#model ⇒ Object
readonly
Returns the value of attribute model.
Class Method Summary collapse
Instance Method Summary collapse
- #clean ⇒ Object
-
#initialize(model, output, options) ⇒ Cleanup
constructor
A new instance of Cleanup.
- #remove_unreferenced_nodes ⇒ Object
- #write_trash ⇒ Object
Constructor Details
#initialize(model, output, options) ⇒ Cleanup
Returns a new instance of Cleanup.
16 17 18 19 20 21 22 23 |
# File 'lib/archimate/cli/cleanup.rb', line 16 def initialize(model, output, ) @model = model @output = output @options = @trash = Nokogiri::XML::Document.new("<deleted></deleted>") @model_set = nil @progressbar = ProgressIndicator.new(total: model.unreferenced_nodes.size, title: "Elements") end |
Instance Attribute Details
#model ⇒ Object (readonly)
Returns the value of attribute model.
9 10 11 |
# File 'lib/archimate/cli/cleanup.rb', line 9 def model @model end |
Class Method Details
Instance Method Details
#clean ⇒ Object
44 45 46 47 48 49 50 51 |
# File 'lib/archimate/cli/cleanup.rb', line 44 def clean return unless model remove_unreferenced_nodes puts "Found #{unref_set.size} model items unreferenced by diagram or relationships" Archimate::ArchiFileWriter.write(model, output) write_trash end |
#remove_unreferenced_nodes ⇒ Object
25 26 27 28 29 30 31 32 33 34 35 36 37 38 |
# File 'lib/archimate/cli/cleanup.rb', line 25 def remove_unreferenced_nodes model.unreferenced_nodes.each do |id| ns = model.lookup(id) puts "Found duplicate ids: #{ns}" if ns.size > 1 unreferenced_node = ns[0] trash.root.add_child unreferenced_node.dup prev_sib = unreferenced_node.previous_sibling if prev_sib.instance_of?(Nokogiri::XML::Text) && prev_sib.content.strip.empty? ns << prev_sib end ns.remove @progressbar.increment end end |
#write_trash ⇒ Object
40 41 42 |
# File 'lib/archimate/cli/cleanup.rb', line 40 def write_trash [:saveremoved].write(trash) end |