class Clerq::Services::CheckAssembly
Find errors in hierarchy and prints in console
Public Class Methods
new(node)
click to toggle source
# File lib/clerq/services/check_assembly.rb, line 102 def initialize(node) @node = node end
Public Instance Methods
call()
click to toggle source
# File lib/clerq/services/check_assembly.rb, line 13 def call print_nonuniq_id print_lost_roots print_lost_index print_lost_links end
Protected Instance Methods
how_many_times(n)
click to toggle source
humanize number of how many times the error occurred in one file
# File lib/clerq/services/check_assembly.rb, line 94 def how_many_times(n) case n when 1 then 'once' when 2 then 'twice' else "#{n} times" end end
lost_links()
click to toggle source
# File lib/clerq/services/check_assembly.rb, line 70 def lost_links index = @node.map(&:id).drop(1).uniq @node.inject({}) do |memo, node| node.links .reject{ |lnk| index.include?(lnk) || @node.node(lnk)} .each do |lnk| memo[lnk] ||= [] memo[lnk] << node end memo end end
nonuniq_id()
click to toggle source
# File lib/clerq/services/check_assembly.rb, line 22 def nonuniq_id @node.inject({}) do |memo, node| memo[node.id] ||= [] memo[node.id] << node memo end.select{|_, v| v.size > 1} end
print_lost_index()
click to toggle source
# File lib/clerq/services/check_assembly.rb, line 54 def print_lost_index errors = @node .reject{|n| n.order_index.empty?} .inject({}) do |memo, n| lost = n.order_index.reject{|o| n.item(o)} memo[n] = lost unless lost.empty? memo end print "Checking for lost items in order_index... " puts errors.empty? ? 'OK' : "#{errors.size} found" errors.each do |n, lost| puts "- {{order_index: #{lost.join(' ')}}} not found of node '#{n.id}' in '#{n[:filename]}'" end end
print_lost_links()
click to toggle source
# File lib/clerq/services/check_assembly.rb, line 83 def print_lost_links errors = lost_links print "Checking for lost links in nodes body... " puts errors.empty? ? 'OK' : "#{errors.size} found" errors.each do |link, arry| where = arry.map{|n| "[#{n.id}] of '#{n[:filename]}'"}.join(', ') puts "- [[#{link}]] in #{where}" end end
print_lost_roots()
click to toggle source
# File lib/clerq/services/check_assembly.rb, line 45 def print_lost_roots lost = @node.select{|n| n[:parent] && n.parent.id != n[:parent]} print "Checking for lost roots in node parents... " puts lost.empty? ? 'OK' : "#{lost.size} found" lost.each do |n| puts "- {{parent: #{n[:parent]}}} of '#{n.id}' in '#{n[:filename]}'" end end
print_nonuniq_id()
click to toggle source
# File lib/clerq/services/check_assembly.rb, line 30 def print_nonuniq_id errors = nonuniq_id print "Checking for duplicates in node ids... " puts errors.empty? ? 'OK' : "#{errors.size} found" errors.each do |id, nodes| occs = nodes.map{|n| n[:filename]} .group_by{|i| i} .map{|k,v| [v.size, k]} .sort{|a, b| b.first <=> a.first} .map{|i| n, src = i; "#{how_many_times(n)} in '#{src}'"} occurrences = occs.join(occs.size == 2 ? ' and ' : ', ') puts "- [#{id}] occured #{occurrences}" end end