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.
Instance Method Summary collapse
- #clean ⇒ Object
- #destroy_nodes(nodes) ⇒ Object
-
#initialize(model, output, removed_items_io) ⇒ Cleanup
constructor
A new instance of Cleanup.
-
#unreferenced_elements ⇒ Object
detects elements not referenced by a relationship or a diagram.
- #unreferenced_nodes ⇒ Object
- #unreferenced_relationships ⇒ Object
Constructor Details
#initialize(model, output, removed_items_io) ⇒ Cleanup
Returns a new instance of Cleanup.
13 14 15 16 17 18 19 20 |
# File 'lib/archimate/cli/cleanup.rb', line 13 def initialize(model, output, removed_items_io) @model = model @output = output @removed_items_io = removed_items_io @model_set = nil @progressbar = ProgressIndicator.new(total: unreferenced_nodes.size, title: "Unreferenced Elements and Relationships") @unref_set = [] end |
Instance Attribute Details
#model ⇒ Object (readonly)
Returns the value of attribute model.
11 12 13 |
# File 'lib/archimate/cli/cleanup.rb', line 11 def model @model end |
Instance Method Details
#clean ⇒ Object
48 49 50 51 52 53 54 55 56 57 58 59 60 |
# File 'lib/archimate/cli/cleanup.rb', line 48 def clean return unless model rels = unreferenced_relationships $stdout.puts "Unreferenced Relationships: #{rels.size}" destroy_nodes rels els = unreferenced_elements $stdout.puts "Unreferenced Elements: #{els.size}" destroy_nodes els $stdout.puts "Found #{@unref_set.size} model items unreferenced by diagram or relationships" Archimate::FileFormats::ArchiFileWriter.write(model, @output) end |
#destroy_nodes(nodes) ⇒ Object
39 40 41 42 43 44 45 46 |
# File 'lib/archimate/cli/cleanup.rb', line 39 def destroy_nodes(nodes) nodes.each do |unreferenced_node| unreferenced_node.destroy @removed_items_io.write(Color.uncolor(unreferenced_node.to_s) + "\n") @unref_set << unreferenced_node @progressbar.increment end end |
#unreferenced_elements ⇒ Object
detects elements not referenced by a relationship or a diagram
23 24 25 26 27 |
# File 'lib/archimate/cli/cleanup.rb', line 23 def unreferenced_elements model .elements .select { |el| el.references.none?(&ref_is_relationship_or_diagram) } end |
#unreferenced_nodes ⇒ Object
35 36 37 |
# File 'lib/archimate/cli/cleanup.rb', line 35 def unreferenced_nodes unreferenced_relationships + unreferenced_elements end |
#unreferenced_relationships ⇒ Object
29 30 31 32 33 |
# File 'lib/archimate/cli/cleanup.rb', line 29 def unreferenced_relationships model .relationships .select { |rel| rel.references.none?(&ref_is_relationship_or_diagram) } end |