Uniword’s verification pipeline supports multiple output formats for human and machine consumption.

1. Terminal Output (default)

The default output format displays issues in a readable terminal format:

uniword verify document.docx

Output example:

[ERROR] DOC-001: Style 'MyStyle' referenced but not defined (word/document.xml:42)
[WARN]  DOC-002: Style 'UnusedStyle' defined but never used (word/styles.xml)
[INFO]  DOC-080: Theme part is present
---
2 errors, 1 warning, 1 info
VERIFICATION FAILED

2. JSON Output

Machine-readable JSON output for integration with other tools:

uniword verify document.docx --json

Output example:

{
  "valid": false,
  "summary": {
    "errors": 2,
    "warnings": 1,
    "info": 1,
    "total": 4
  },
  "issues": [
    {
      "code": "DOC-001",
      "severity": "error",
      "message": "Style 'MyStyle' referenced but not defined",
      "location": "word/document.xml:42"
    }
  ]
}

3. YAML Output

YAML output for easy reading and configuration integration:

uniword verify document.docx --yaml

Output example:

valid: false
summary:
  errors: 2
  warnings: 1
  info: 1
  total: 4
issues:
- code: DOC-001
  severity: error
  message: "Style 'MyStyle' referenced but not defined"
  location: "word/document.xml:42"

4. Exit Codes

0

Document is valid (no errors)

1

Document is invalid (one or more errors)

Warnings and info-level issues do not cause a non-zero exit code.

5. Programmatic Access

require 'uniword'

result = Uniword::Verification.verify('document.docx')

# Access as Ruby objects
result.valid?           # => true or false
result.issues           # => array of Issue objects
result.to_json          # => JSON string
result.to_yaml          # => YAML string