Class: Locca::AuditAction

Inherits:
Object
  • Object
show all
Defined in:
lib/locca/actions/audit_action.rb

Instance Method Summary collapse

Constructor Details

#initialize(project, collection_builder, collections_generator) ⇒ AuditAction

Returns a new instance of AuditAction.



29
30
31
32
33
# File 'lib/locca/actions/audit_action.rb', line 29

def initialize(project, collection_builder, collections_generator)
    @project = project
    @collections_generator = collections_generator
    @collection_builder = collection_builder
end

Instance Method Details

#executeObject



35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
# File 'lib/locca/actions/audit_action.rb', line 35

def execute()
    generated_collections = @collections_generator.generate()

    audit_ignore = @project.config_value_for_key('audit_ignore')
    failed_audit_results = []

    @project.collection_names().each do |collection_name|
        keys_to_ignore = []
        if audit_ignore != nil && audit_ignore.key?(collection_name)
            keys_to_ignore = audit_ignore[collection_name]
        end

        @project.langs().each do |lang|
            collection_path = @project.path_for_collection(collection_name, lang)
            collection = @collection_builder.collection_at_path(collection_path)
            
            audit_result = AuditResult.new(collection_name, lang)

            generated_collections.each do |generated_collection|
                if generated_collection.name == collection.name
                    generated_collection_keys = generated_collection.all_keys().to_set
                    collection_keys = collection.all_keys().to_set

                    audit_result.missing_keys = (generated_collection_keys - collection_keys).to_a
                    audit_result.extra_keys = (collection_keys - generated_collection_keys).to_a
                end
            end

            collection.sorted_each do |item|
                if item.translated? || keys_to_ignore.include?(item.key) || audit_result.extra_keys.include?(item.key)
                    next
                end

                audit_result.add_untranslated_key(item.key)
            end

            unless audit_result.passed?
                failed_audit_results.push(audit_result)
            end
        end
    end

    return failed_audit_results
end