uniword 1.2.5 → 1.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/CHANGELOG.md +223 -0
- data/CONTRIBUTING.md +1 -1
- data/config/ooxml/schemas/shared_types.yml +5 -4
- data/data/schemas/ecma/dc.xsd +118 -0
- data/data/schemas/ecma/dcmitype.xsd +50 -0
- data/data/schemas/ecma/dcterms.xsd +331 -0
- data/data/schemas/ecma/opc-coreProperties.xsd +2 -2
- data/data/schemas/ecma/xml.xsd +117 -0
- data/lib/uniword/builder/bibliography_builder.rb +1 -1
- data/lib/uniword/builder/chart_builder.rb +19 -9
- data/lib/uniword/builder/comment_anchorer.rb +221 -0
- data/lib/uniword/builder/document_builder.rb +97 -6
- data/lib/uniword/builder/image_builder.rb +6 -5
- data/lib/uniword/builder/run_utils.rb +2 -0
- data/lib/uniword/builder.rb +1 -0
- data/lib/uniword/cli/fonts_cli.rb +52 -0
- data/lib/uniword/cli/main.rb +110 -11
- data/lib/uniword/cli/page_cli.rb +85 -0
- data/lib/uniword/cli/styles_cli.rb +204 -0
- data/lib/uniword/cli/theme_cli.rb +88 -0
- data/lib/uniword/cli/toc_cli.rb +22 -2
- data/lib/uniword/comment.rb +20 -15
- data/lib/uniword/comment_range.rb +3 -3
- data/lib/uniword/comments_part.rb +51 -19
- data/lib/uniword/configuration/configuration_loader.rb +5 -3
- data/lib/uniword/configuration.rb +93 -1
- data/lib/uniword/content_types.rb +19 -39
- data/lib/uniword/document_factory.rb +9 -1
- data/lib/uniword/document_writer.rb +16 -5
- data/lib/uniword/docx/chart_part.rb +34 -0
- data/lib/uniword/docx/custom_xml_item.rb +83 -0
- data/lib/uniword/docx/header_footer_part.rb +140 -0
- data/lib/uniword/docx/header_footer_part_collection.rb +135 -0
- data/lib/uniword/docx/header_footer_view.rb +225 -0
- data/lib/uniword/docx/id_allocator.rb +130 -36
- data/lib/uniword/docx/package.rb +223 -35
- data/lib/uniword/docx/package_defaults.rb +58 -78
- data/lib/uniword/docx/package_integrity_checker.rb +312 -0
- data/lib/uniword/docx/package_serialization.rb +103 -231
- data/lib/uniword/docx/part.rb +106 -0
- data/lib/uniword/docx/part_collection.rb +123 -0
- data/lib/uniword/docx/reconciler/body.rb +59 -68
- data/lib/uniword/docx/reconciler/fix.rb +46 -0
- data/lib/uniword/docx/reconciler/fix_codes.rb +37 -30
- data/lib/uniword/docx/reconciler/helpers.rb +9 -1
- data/lib/uniword/docx/reconciler/notes.rb +17 -8
- data/lib/uniword/docx/reconciler/package_structure.rb +169 -221
- data/lib/uniword/docx/reconciler/parts.rb +36 -13
- data/lib/uniword/docx/reconciler/referential_integrity.rb +297 -123
- data/lib/uniword/docx/reconciler/tables.rb +78 -16
- data/lib/uniword/docx/reconciler/theme.rb +7 -4
- data/lib/uniword/docx/reconciler.rb +36 -14
- data/lib/uniword/docx.rb +10 -0
- data/lib/uniword/drawingml/blip.rb +0 -1
- data/lib/uniword/drawingml/color_scheme.rb +5 -6
- data/lib/uniword/drawingml/font_scheme.rb +4 -8
- data/lib/uniword/drawingml/theme.rb +12 -6
- data/lib/uniword/errors.rb +8 -1
- data/lib/uniword/footer.rb +4 -0
- data/lib/uniword/header.rb +4 -0
- data/lib/uniword/hyperlink.rb +1 -1
- data/lib/uniword/image.rb +6 -6
- data/lib/uniword/lazy_loader.rb +1 -2
- data/lib/uniword/model_attribute_access.rb +20 -4
- data/lib/uniword/ooxml/dotx_package.rb +42 -2
- data/lib/uniword/ooxml/part_definition.rb +171 -0
- data/lib/uniword/ooxml/part_registry.rb +311 -0
- data/lib/uniword/ooxml/relationships/image_relationship.rb +1 -1
- data/lib/uniword/ooxml/relationships/package_relationships.rb +20 -22
- data/lib/uniword/ooxml/schema/element_serializer.rb +8 -7
- data/lib/uniword/ooxml/types/hex_color_value.rb +38 -0
- data/lib/uniword/ooxml/types/ooxml_boolean.rb +27 -14
- data/lib/uniword/ooxml/types/ooxml_boolean_optional.rb +21 -16
- data/lib/uniword/ooxml/types/theme_color_value.rb +22 -0
- data/lib/uniword/ooxml/types/unsigned_decimal_number.rb +30 -0
- data/lib/uniword/ooxml/types.rb +10 -0
- data/lib/uniword/ooxml.rb +2 -0
- data/lib/uniword/properties/alignment.rb +8 -3
- data/lib/uniword/properties/border.rb +52 -6
- data/lib/uniword/properties/cell_vertical_align.rb +4 -1
- data/lib/uniword/properties/color_value.rb +8 -3
- data/lib/uniword/properties/highlight.rb +9 -5
- data/lib/uniword/properties/shading.rb +4 -3
- data/lib/uniword/properties/tab_stop.rb +6 -1
- data/lib/uniword/properties/table_justification.rb +4 -1
- data/lib/uniword/properties/underline.rb +4 -2
- data/lib/uniword/properties/vertical_align.rb +6 -3
- data/lib/uniword/review/review_manager.rb +23 -9
- data/lib/uniword/revision.rb +9 -9
- data/lib/uniword/schema/model_generator.rb +31 -15
- data/lib/uniword/shared_types/hex_color.rb +4 -1
- data/lib/uniword/shared_types/pixel_measure.rb +4 -1
- data/lib/uniword/shared_types/point_measure.rb +4 -1
- data/lib/uniword/shared_types/text_alignment.rb +6 -1
- data/lib/uniword/shared_types/twips_measure.rb +4 -1
- data/lib/uniword/spreadsheetml/phonetic_pr.rb +1 -1
- data/lib/uniword/spreadsheetml/shared_string_table.rb +2 -2
- data/lib/uniword/spreadsheetml/table_formula.rb +1 -1
- data/lib/uniword/template/variable_resolver.rb +40 -7
- data/lib/uniword/themes/theme_transformation.rb +55 -41
- data/lib/uniword/toc/toc_generator.rb +2 -0
- data/lib/uniword/validation/engine.rb +35 -0
- data/lib/uniword/validation/link_checker.rb +1 -1
- data/lib/uniword/validation/opc_validator.rb +0 -1
- data/lib/uniword/validation/report/layer_result.rb +0 -1
- data/lib/uniword/validation/report/terminal_formatter.rb +0 -1
- data/lib/uniword/validation/report/verification_report.rb +0 -2
- data/lib/uniword/validation/report.rb +20 -0
- data/lib/uniword/validation/rules/base.rb +10 -2
- data/lib/uniword/validation/rules/bookmark_pairing_rule.rb +38 -0
- data/lib/uniword/validation/rules/bookmark_uniqueness_rule.rb +48 -0
- data/lib/uniword/validation/rules/bookmarks_rule.rb +0 -2
- data/lib/uniword/validation/rules/content_types_coverage_rule.rb +0 -2
- data/lib/uniword/validation/rules/core_properties_namespace_rule.rb +0 -2
- data/lib/uniword/validation/rules/document_body_rule.rb +25 -0
- data/lib/uniword/validation/rules/document_context.rb +7 -0
- data/lib/uniword/validation/rules/empty_paragraphs_rule.rb +27 -0
- data/lib/uniword/validation/rules/font_table_signature_rule.rb +0 -2
- data/lib/uniword/validation/rules/fonts_rule.rb +0 -2
- data/lib/uniword/validation/rules/footnotes_rule.rb +0 -2
- data/lib/uniword/validation/rules/headers_footers_rule.rb +0 -2
- data/lib/uniword/validation/rules/images_rule.rb +0 -2
- data/lib/uniword/validation/rules/mc_ignorable_namespace_rule.rb +0 -2
- data/lib/uniword/validation/rules/model_context.rb +32 -0
- data/lib/uniword/validation/rules/model_rule.rb +34 -0
- data/lib/uniword/validation/rules/numbering_preservation_rule.rb +0 -2
- data/lib/uniword/validation/rules/numbering_rule.rb +0 -2
- data/lib/uniword/validation/rules/relationship_integrity_rule.rb +0 -1
- data/lib/uniword/validation/rules/rsid_rule.rb +0 -2
- data/lib/uniword/validation/rules/section_properties_rule.rb +0 -2
- data/lib/uniword/validation/rules/settings_rule.rb +0 -2
- data/lib/uniword/validation/rules/settings_values_rule.rb +0 -2
- data/lib/uniword/validation/rules/style_references_rule.rb +0 -2
- data/lib/uniword/validation/rules/table_grid_rule.rb +27 -0
- data/lib/uniword/validation/rules/table_properties_rule.rb +27 -0
- data/lib/uniword/validation/rules/tables_rule.rb +0 -2
- data/lib/uniword/validation/rules/theme_completeness_rule.rb +0 -2
- data/lib/uniword/validation/rules/theme_rule.rb +0 -2
- data/lib/uniword/validation/rules.rb +61 -23
- data/lib/uniword/validation/schema_registry.rb +11 -0
- data/lib/uniword/validation/validators/document_semantics_validator.rb +1 -9
- data/lib/uniword/validation/validators/xml_schema_validator.rb +0 -2
- data/lib/uniword/validation/validators.rb +0 -9
- data/lib/uniword/validation/verify_orchestrator.rb +0 -7
- data/lib/uniword/validation.rb +7 -2
- data/lib/uniword/version.rb +1 -1
- data/lib/uniword/vml/imagedata.rb +0 -1
- data/lib/uniword/wordprocessingml/attached_template.rb +0 -1
- data/lib/uniword/wordprocessingml/deleted_text.rb +1 -1
- data/lib/uniword/wordprocessingml/document_root.rb +211 -21
- data/lib/uniword/wordprocessingml/endnotes.rb +4 -0
- data/lib/uniword/wordprocessingml/font_replacer.rb +147 -0
- data/lib/uniword/wordprocessingml/footnotes.rb +4 -0
- data/lib/uniword/wordprocessingml/hdr_shape_defaults.rb +0 -1
- data/lib/uniword/wordprocessingml/hyperlink.rb +0 -1
- data/lib/uniword/wordprocessingml/level.rb +6 -20
- data/lib/uniword/wordprocessingml/math_pr.rb +0 -11
- data/lib/uniword/wordprocessingml/numbering_definition.rb +16 -8
- data/lib/uniword/wordprocessingml/page_setup.rb +181 -0
- data/lib/uniword/wordprocessingml/paragraph_properties.rb +33 -28
- data/lib/uniword/wordprocessingml/rsids.rb +0 -2
- data/lib/uniword/wordprocessingml/run.rb +3 -0
- data/lib/uniword/wordprocessingml/section_properties.rb +2 -2
- data/lib/uniword/wordprocessingml/settings.rb +8 -34
- data/lib/uniword/wordprocessingml/shape_defaults.rb +0 -1
- data/lib/uniword/wordprocessingml/style.rb +2 -1
- data/lib/uniword/wordprocessingml/style_cleanup.rb +198 -0
- data/lib/uniword/wordprocessingml/table_cell_properties.rb +6 -6
- data/lib/uniword/wordprocessingml/update_fields.rb +27 -0
- data/lib/uniword/wordprocessingml/w14_attributes.rb +30 -2
- data/lib/uniword/wordprocessingml.rb +4 -0
- data/lib/uniword.rb +27 -2
- metadata +38 -19
- data/config/validation_rules.yml +0 -60
- data/config/warning_rules.yml +0 -57
- data/lib/uniword/validation/document_validator.rb +0 -272
- data/lib/uniword/validation/structural_validator.rb +0 -116
- data/lib/uniword/validation/validators/content_type_validator.rb +0 -165
- data/lib/uniword/validation/validators/file_structure_validator.rb +0 -104
- data/lib/uniword/validation/validators/ooxml_part_validator.rb +0 -128
- data/lib/uniword/validation/validators/relationship_validator.rb +0 -147
- data/lib/uniword/validation/validators/zip_integrity_validator.rb +0 -110
- data/lib/uniword/validators/element_validator.rb +0 -93
- data/lib/uniword/validators/paragraph_validator.rb +0 -116
- data/lib/uniword/validators/table_validator.rb +0 -134
- data/lib/uniword/validators.rb +0 -9
- data/lib/uniword/warnings/warning.rb +0 -130
- data/lib/uniword/warnings/warning_collector.rb +0 -234
- data/lib/uniword/warnings/warning_report.rb +0 -159
- data/lib/uniword/warnings.rb +0 -9
|
@@ -16,15 +16,43 @@ module Uniword
|
|
|
16
16
|
# W16CID namespace for Word 2016+ citation identifiers
|
|
17
17
|
W16CID_NAMESPACE = Uniword::Ooxml::Namespaces::Word2016Cid
|
|
18
18
|
|
|
19
|
-
#
|
|
19
|
+
# ST_LongHexNumber (ECMA-376): exactly 8 hexadecimal digits
|
|
20
|
+
LONG_HEX_NUMBER_PATTERN = /\A[0-9A-Fa-f]{8}\z/
|
|
21
|
+
|
|
22
|
+
# Validate an ST_LongHexNumber value at cast time
|
|
23
|
+
#
|
|
24
|
+
# @param value [Object] the raw value
|
|
25
|
+
# @return [String, nil, Object] the validated value
|
|
26
|
+
# @raise [Lutaml::Model::Type::InvalidValueError] when the value is
|
|
27
|
+
# not 8 hexadecimal digits
|
|
28
|
+
def self.cast_long_hex_number(value)
|
|
29
|
+
casted = Lutaml::Model::Type::String.cast(value)
|
|
30
|
+
return casted if casted.nil? ||
|
|
31
|
+
Lutaml::Model::Utils.uninitialized?(casted)
|
|
32
|
+
return casted if LONG_HEX_NUMBER_PATTERN.match?(casted)
|
|
33
|
+
|
|
34
|
+
raise Lutaml::Model::Type::InvalidValueError.new(
|
|
35
|
+
value, ["ST_LongHexNumber: 8 hexadecimal digits"]
|
|
36
|
+
)
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
# Typed attribute for w14:paraId (ST_LongHexNumber)
|
|
20
40
|
class W14ParaId < Lutaml::Model::Type::String
|
|
41
|
+
def self.cast(value, _options = {})
|
|
42
|
+
Wordprocessingml.cast_long_hex_number(value)
|
|
43
|
+
end
|
|
44
|
+
|
|
21
45
|
xml do
|
|
22
46
|
namespace W14_NAMESPACE
|
|
23
47
|
end
|
|
24
48
|
end
|
|
25
49
|
|
|
26
|
-
# Typed attribute for w14:textId
|
|
50
|
+
# Typed attribute for w14:textId (ST_LongHexNumber)
|
|
27
51
|
class W14TextId < Lutaml::Model::Type::String
|
|
52
|
+
def self.cast(value, _options = {})
|
|
53
|
+
Wordprocessingml.cast_long_hex_number(value)
|
|
54
|
+
end
|
|
55
|
+
|
|
28
56
|
xml do
|
|
29
57
|
namespace W14_NAMESPACE
|
|
30
58
|
end
|
|
@@ -64,6 +64,7 @@ module Uniword
|
|
|
64
64
|
# Structure and metadata
|
|
65
65
|
autoload :Level, "uniword/wordprocessingml/level"
|
|
66
66
|
autoload :Style, "uniword/wordprocessingml/style"
|
|
67
|
+
autoload :StyleCleanup, "uniword/wordprocessingml/style_cleanup"
|
|
67
68
|
autoload :StructuredDocumentTag,
|
|
68
69
|
"uniword/wordprocessingml/structured_document_tag"
|
|
69
70
|
autoload :StructuredDocumentTagProperties,
|
|
@@ -72,6 +73,7 @@ module Uniword
|
|
|
72
73
|
autoload :PageSize, "uniword/wordprocessingml/page_size"
|
|
73
74
|
autoload :PageMargins, "uniword/wordprocessingml/page_margins"
|
|
74
75
|
autoload :PageNumbering, "uniword/wordprocessingml/page_numbering"
|
|
76
|
+
autoload :PageSetup, "uniword/wordprocessingml/page_setup"
|
|
75
77
|
autoload :Columns, "uniword/wordprocessingml/columns"
|
|
76
78
|
autoload :HeaderReference, "uniword/wordprocessingml/header_reference"
|
|
77
79
|
autoload :FooterReference, "uniword/wordprocessingml/footer_reference"
|
|
@@ -130,6 +132,7 @@ module Uniword
|
|
|
130
132
|
|
|
131
133
|
# Fonts
|
|
132
134
|
autoload :Font, "uniword/wordprocessingml/font"
|
|
135
|
+
autoload :FontReplacer, "uniword/wordprocessingml/font_replacer"
|
|
133
136
|
autoload :Fonts, "uniword/wordprocessingml/fonts"
|
|
134
137
|
autoload :FontTable, "uniword/wordprocessingml/font_table"
|
|
135
138
|
|
|
@@ -191,6 +194,7 @@ module Uniword
|
|
|
191
194
|
autoload :Next, "uniword/wordprocessingml/next"
|
|
192
195
|
autoload :Link, "uniword/wordprocessingml/link"
|
|
193
196
|
autoload :UiPriority, "uniword/wordprocessingml/ui_priority"
|
|
197
|
+
autoload :UpdateFields, "uniword/wordprocessingml/update_fields"
|
|
194
198
|
autoload :LatentStyles, "uniword/wordprocessingml/latent_styles"
|
|
195
199
|
autoload :ParagraphStyle, "uniword/wordprocessingml/paragraph_style"
|
|
196
200
|
autoload :CharacterStyle, "uniword/wordprocessingml/character_style"
|
data/lib/uniword.rb
CHANGED
|
@@ -101,7 +101,6 @@ module Uniword
|
|
|
101
101
|
autoload :Template, "uniword/template"
|
|
102
102
|
autoload :TemplateManager, "uniword/template_manager"
|
|
103
103
|
autoload :Visitor, "uniword/visitor"
|
|
104
|
-
autoload :Validators, "uniword/validators"
|
|
105
104
|
autoload :Stylesets, "uniword/stylesets"
|
|
106
105
|
autoload :Infrastructure, "uniword/infrastructure"
|
|
107
106
|
autoload :Accessibility, "uniword/accessibility"
|
|
@@ -114,7 +113,6 @@ module Uniword
|
|
|
114
113
|
autoload :Configuration, "uniword/configuration"
|
|
115
114
|
autoload :Transformation, "uniword/transformation"
|
|
116
115
|
autoload :Validation, "uniword/validation"
|
|
117
|
-
autoload :Warnings, "uniword/warnings"
|
|
118
116
|
autoload :Mhtml, "uniword/mhtml"
|
|
119
117
|
autoload :Themes, "uniword/themes"
|
|
120
118
|
autoload :Resource, "uniword/resource"
|
|
@@ -135,6 +133,9 @@ module Uniword
|
|
|
135
133
|
# CLI
|
|
136
134
|
autoload :CLI, "uniword/cli/main"
|
|
137
135
|
autoload :GenerateCLI, "uniword/cli/generate_cli"
|
|
136
|
+
autoload :FontsCLI, "uniword/cli/fonts_cli"
|
|
137
|
+
autoload :PageCLI, "uniword/cli/page_cli"
|
|
138
|
+
autoload :StylesCLI, "uniword/cli/styles_cli"
|
|
138
139
|
autoload :DiffCLI, "uniword/cli/diff_cli"
|
|
139
140
|
autoload :TemplateCLI, "uniword/cli/template_cli"
|
|
140
141
|
autoload :CLIHelpers, "uniword/cli/helpers"
|
|
@@ -250,6 +251,30 @@ module Uniword
|
|
|
250
251
|
Wordprocessingml::DocumentRoot.new
|
|
251
252
|
end
|
|
252
253
|
|
|
254
|
+
# Get the global runtime configuration (memoized)
|
|
255
|
+
#
|
|
256
|
+
# @return [Configuration] The global configuration instance
|
|
257
|
+
#
|
|
258
|
+
# @example
|
|
259
|
+
# Uniword.configuration.validate_on_save # => true
|
|
260
|
+
def configuration
|
|
261
|
+
@configuration ||= Configuration.new
|
|
262
|
+
end
|
|
263
|
+
|
|
264
|
+
# Configure global runtime policy
|
|
265
|
+
#
|
|
266
|
+
# @yieldparam config [Configuration] The global configuration instance
|
|
267
|
+
# @return [Configuration] The global configuration instance
|
|
268
|
+
#
|
|
269
|
+
# @example
|
|
270
|
+
# Uniword.configure do |config|
|
|
271
|
+
# config.xsd_validation = true
|
|
272
|
+
# end
|
|
273
|
+
def configure
|
|
274
|
+
yield(configuration)
|
|
275
|
+
configuration
|
|
276
|
+
end
|
|
277
|
+
|
|
253
278
|
# Load document from file
|
|
254
279
|
#
|
|
255
280
|
# @param path [String] File path
|
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: uniword
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 1.
|
|
4
|
+
version: 1.3.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Ribose Inc.
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: exe
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2026-07-
|
|
11
|
+
date: 2026-07-19 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: logger
|
|
@@ -182,8 +182,6 @@ files:
|
|
|
182
182
|
- config/system_profiles.yml
|
|
183
183
|
- config/theme_mapping.yml
|
|
184
184
|
- config/transformation_rules.yml
|
|
185
|
-
- config/validation_rules.yml
|
|
186
|
-
- config/warning_rules.yml
|
|
187
185
|
- data/color_schemes/amber.yml
|
|
188
186
|
- data/color_schemes/azure.yml
|
|
189
187
|
- data/color_schemes/burgundy.yml
|
|
@@ -476,10 +474,14 @@ files:
|
|
|
476
474
|
- data/resources/document_elements/zh-TW/tables.yml
|
|
477
475
|
- data/resources/document_elements/zh-TW/watermarks.yml
|
|
478
476
|
- data/resources/font_registry.yml
|
|
477
|
+
- data/schemas/ecma/dc.xsd
|
|
478
|
+
- data/schemas/ecma/dcmitype.xsd
|
|
479
|
+
- data/schemas/ecma/dcterms.xsd
|
|
479
480
|
- data/schemas/ecma/opc-contentTypes.xsd
|
|
480
481
|
- data/schemas/ecma/opc-coreProperties.xsd
|
|
481
482
|
- data/schemas/ecma/opc-digSig.xsd
|
|
482
483
|
- data/schemas/ecma/opc-relationships.xsd
|
|
484
|
+
- data/schemas/ecma/xml.xsd
|
|
483
485
|
- data/schemas/iso/dml-chart.xsd
|
|
484
486
|
- data/schemas/iso/dml-chartDrawing.xsd
|
|
485
487
|
- data/schemas/iso/dml-diagram.xsd
|
|
@@ -631,6 +633,7 @@ files:
|
|
|
631
633
|
- lib/uniword/builder/base_builder.rb
|
|
632
634
|
- lib/uniword/builder/bibliography_builder.rb
|
|
633
635
|
- lib/uniword/builder/chart_builder.rb
|
|
636
|
+
- lib/uniword/builder/comment_anchorer.rb
|
|
634
637
|
- lib/uniword/builder/comment_builder.rb
|
|
635
638
|
- lib/uniword/builder/deterministic_id.rb
|
|
636
639
|
- lib/uniword/builder/document_builder.rb
|
|
@@ -728,15 +731,18 @@ files:
|
|
|
728
731
|
- lib/uniword/chart/y_values.rb
|
|
729
732
|
- lib/uniword/cli.rb
|
|
730
733
|
- lib/uniword/cli/diff_cli.rb
|
|
734
|
+
- lib/uniword/cli/fonts_cli.rb
|
|
731
735
|
- lib/uniword/cli/generate_cli.rb
|
|
732
736
|
- lib/uniword/cli/headers_cli.rb
|
|
733
737
|
- lib/uniword/cli/helpers.rb
|
|
734
738
|
- lib/uniword/cli/images_cli.rb
|
|
735
739
|
- lib/uniword/cli/main.rb
|
|
740
|
+
- lib/uniword/cli/page_cli.rb
|
|
736
741
|
- lib/uniword/cli/protect_cli.rb
|
|
737
742
|
- lib/uniword/cli/resources_cli.rb
|
|
738
743
|
- lib/uniword/cli/review_cli.rb
|
|
739
744
|
- lib/uniword/cli/spellcheck_cli.rb
|
|
745
|
+
- lib/uniword/cli/styles_cli.rb
|
|
740
746
|
- lib/uniword/cli/styleset_cli.rb
|
|
741
747
|
- lib/uniword/cli/template_cli.rb
|
|
742
748
|
- lib/uniword/cli/theme_cli.rb
|
|
@@ -809,14 +815,23 @@ files:
|
|
|
809
815
|
- lib/uniword/document_variables/variable_scope.rb
|
|
810
816
|
- lib/uniword/document_writer.rb
|
|
811
817
|
- lib/uniword/docx.rb
|
|
818
|
+
- lib/uniword/docx/chart_part.rb
|
|
819
|
+
- lib/uniword/docx/custom_xml_item.rb
|
|
812
820
|
- lib/uniword/docx/document_statistics.rb
|
|
821
|
+
- lib/uniword/docx/header_footer_part.rb
|
|
822
|
+
- lib/uniword/docx/header_footer_part_collection.rb
|
|
823
|
+
- lib/uniword/docx/header_footer_view.rb
|
|
813
824
|
- lib/uniword/docx/id_allocator.rb
|
|
814
825
|
- lib/uniword/docx/package.rb
|
|
815
826
|
- lib/uniword/docx/package_defaults.rb
|
|
827
|
+
- lib/uniword/docx/package_integrity_checker.rb
|
|
816
828
|
- lib/uniword/docx/package_serialization.rb
|
|
829
|
+
- lib/uniword/docx/part.rb
|
|
830
|
+
- lib/uniword/docx/part_collection.rb
|
|
817
831
|
- lib/uniword/docx/profile.rb
|
|
818
832
|
- lib/uniword/docx/reconciler.rb
|
|
819
833
|
- lib/uniword/docx/reconciler/body.rb
|
|
834
|
+
- lib/uniword/docx/reconciler/fix.rb
|
|
820
835
|
- lib/uniword/docx/reconciler/fix_codes.rb
|
|
821
836
|
- lib/uniword/docx/reconciler/helpers.rb
|
|
822
837
|
- lib/uniword/docx/reconciler/notes.rb
|
|
@@ -1096,6 +1111,8 @@ files:
|
|
|
1096
1111
|
- lib/uniword/ooxml/dotx_package.rb
|
|
1097
1112
|
- lib/uniword/ooxml/namespaces.rb
|
|
1098
1113
|
- lib/uniword/ooxml/package_file.rb
|
|
1114
|
+
- lib/uniword/ooxml/part_definition.rb
|
|
1115
|
+
- lib/uniword/ooxml/part_registry.rb
|
|
1099
1116
|
- lib/uniword/ooxml/relationships.rb
|
|
1100
1117
|
- lib/uniword/ooxml/relationships/hyperlink_relationship.rb
|
|
1101
1118
|
- lib/uniword/ooxml/relationships/image_relationship.rb
|
|
@@ -1125,10 +1142,13 @@ files:
|
|
|
1125
1142
|
- lib/uniword/ooxml/types/dcterms_created_type.rb
|
|
1126
1143
|
- lib/uniword/ooxml/types/dcterms_modified_type.rb
|
|
1127
1144
|
- lib/uniword/ooxml/types/dcterms_w3cdtf_type.rb
|
|
1145
|
+
- lib/uniword/ooxml/types/hex_color_value.rb
|
|
1128
1146
|
- lib/uniword/ooxml/types/mc_ignorable_type.rb
|
|
1129
1147
|
- lib/uniword/ooxml/types/ooxml_boolean.rb
|
|
1130
1148
|
- lib/uniword/ooxml/types/ooxml_boolean_optional.rb
|
|
1131
1149
|
- lib/uniword/ooxml/types/relationship_id.rb
|
|
1150
|
+
- lib/uniword/ooxml/types/theme_color_value.rb
|
|
1151
|
+
- lib/uniword/ooxml/types/unsigned_decimal_number.rb
|
|
1132
1152
|
- lib/uniword/ooxml/types/variant_types.rb
|
|
1133
1153
|
- lib/uniword/page_borders.rb
|
|
1134
1154
|
- lib/uniword/paragraph_border.rb
|
|
@@ -1479,28 +1499,35 @@ files:
|
|
|
1479
1499
|
- lib/uniword/validation/checkers/file_reference_checker.rb
|
|
1480
1500
|
- lib/uniword/validation/checkers/footnote_reference_checker.rb
|
|
1481
1501
|
- lib/uniword/validation/checkers/internal_link_checker.rb
|
|
1482
|
-
- lib/uniword/validation/
|
|
1502
|
+
- lib/uniword/validation/engine.rb
|
|
1483
1503
|
- lib/uniword/validation/layer_validation_result.rb
|
|
1484
1504
|
- lib/uniword/validation/layer_validator.rb
|
|
1485
1505
|
- lib/uniword/validation/link_checker.rb
|
|
1486
1506
|
- lib/uniword/validation/link_validator.rb
|
|
1487
1507
|
- lib/uniword/validation/opc_validator.rb
|
|
1508
|
+
- lib/uniword/validation/report.rb
|
|
1488
1509
|
- lib/uniword/validation/report/layer_result.rb
|
|
1489
1510
|
- lib/uniword/validation/report/terminal_formatter.rb
|
|
1490
1511
|
- lib/uniword/validation/report/validation_issue.rb
|
|
1491
1512
|
- lib/uniword/validation/report/verification_report.rb
|
|
1492
1513
|
- lib/uniword/validation/rules.rb
|
|
1493
1514
|
- lib/uniword/validation/rules/base.rb
|
|
1515
|
+
- lib/uniword/validation/rules/bookmark_pairing_rule.rb
|
|
1516
|
+
- lib/uniword/validation/rules/bookmark_uniqueness_rule.rb
|
|
1494
1517
|
- lib/uniword/validation/rules/bookmarks_rule.rb
|
|
1495
1518
|
- lib/uniword/validation/rules/content_types_coverage_rule.rb
|
|
1496
1519
|
- lib/uniword/validation/rules/core_properties_namespace_rule.rb
|
|
1520
|
+
- lib/uniword/validation/rules/document_body_rule.rb
|
|
1497
1521
|
- lib/uniword/validation/rules/document_context.rb
|
|
1522
|
+
- lib/uniword/validation/rules/empty_paragraphs_rule.rb
|
|
1498
1523
|
- lib/uniword/validation/rules/font_table_signature_rule.rb
|
|
1499
1524
|
- lib/uniword/validation/rules/fonts_rule.rb
|
|
1500
1525
|
- lib/uniword/validation/rules/footnotes_rule.rb
|
|
1501
1526
|
- lib/uniword/validation/rules/headers_footers_rule.rb
|
|
1502
1527
|
- lib/uniword/validation/rules/images_rule.rb
|
|
1503
1528
|
- lib/uniword/validation/rules/mc_ignorable_namespace_rule.rb
|
|
1529
|
+
- lib/uniword/validation/rules/model_context.rb
|
|
1530
|
+
- lib/uniword/validation/rules/model_rule.rb
|
|
1504
1531
|
- lib/uniword/validation/rules/numbering_preservation_rule.rb
|
|
1505
1532
|
- lib/uniword/validation/rules/numbering_rule.rb
|
|
1506
1533
|
- lib/uniword/validation/rules/registry.rb
|
|
@@ -1510,26 +1537,18 @@ files:
|
|
|
1510
1537
|
- lib/uniword/validation/rules/settings_rule.rb
|
|
1511
1538
|
- lib/uniword/validation/rules/settings_values_rule.rb
|
|
1512
1539
|
- lib/uniword/validation/rules/style_references_rule.rb
|
|
1540
|
+
- lib/uniword/validation/rules/table_grid_rule.rb
|
|
1541
|
+
- lib/uniword/validation/rules/table_properties_rule.rb
|
|
1513
1542
|
- lib/uniword/validation/rules/tables_rule.rb
|
|
1514
1543
|
- lib/uniword/validation/rules/theme_completeness_rule.rb
|
|
1515
1544
|
- lib/uniword/validation/rules/theme_rule.rb
|
|
1516
1545
|
- lib/uniword/validation/schema_registry.rb
|
|
1517
|
-
- lib/uniword/validation/structural_validator.rb
|
|
1518
1546
|
- lib/uniword/validation/validation_report.rb
|
|
1519
1547
|
- lib/uniword/validation/validation_result.rb
|
|
1520
1548
|
- lib/uniword/validation/validators.rb
|
|
1521
|
-
- lib/uniword/validation/validators/content_type_validator.rb
|
|
1522
1549
|
- lib/uniword/validation/validators/document_semantics_validator.rb
|
|
1523
|
-
- lib/uniword/validation/validators/file_structure_validator.rb
|
|
1524
|
-
- lib/uniword/validation/validators/ooxml_part_validator.rb
|
|
1525
|
-
- lib/uniword/validation/validators/relationship_validator.rb
|
|
1526
1550
|
- lib/uniword/validation/validators/xml_schema_validator.rb
|
|
1527
|
-
- lib/uniword/validation/validators/zip_integrity_validator.rb
|
|
1528
1551
|
- lib/uniword/validation/verify_orchestrator.rb
|
|
1529
|
-
- lib/uniword/validators.rb
|
|
1530
|
-
- lib/uniword/validators/element_validator.rb
|
|
1531
|
-
- lib/uniword/validators/paragraph_validator.rb
|
|
1532
|
-
- lib/uniword/validators/table_validator.rb
|
|
1533
1552
|
- lib/uniword/version.rb
|
|
1534
1553
|
- lib/uniword/visitor.rb
|
|
1535
1554
|
- lib/uniword/visitor/base_visitor.rb
|
|
@@ -1594,10 +1613,6 @@ files:
|
|
|
1594
1613
|
- lib/uniword/vml_word/border_left.rb
|
|
1595
1614
|
- lib/uniword/vml_word/border_right.rb
|
|
1596
1615
|
- lib/uniword/vml_word/border_top.rb
|
|
1597
|
-
- lib/uniword/warnings.rb
|
|
1598
|
-
- lib/uniword/warnings/warning.rb
|
|
1599
|
-
- lib/uniword/warnings/warning_collector.rb
|
|
1600
|
-
- lib/uniword/warnings/warning_report.rb
|
|
1601
1616
|
- lib/uniword/watermark.rb
|
|
1602
1617
|
- lib/uniword/watermark/manager.rb
|
|
1603
1618
|
- lib/uniword/word2010_ext.rb
|
|
@@ -1666,6 +1681,7 @@ files:
|
|
|
1666
1681
|
- lib/uniword/wordprocessingml/fallback.rb
|
|
1667
1682
|
- lib/uniword/wordprocessingml/field_char.rb
|
|
1668
1683
|
- lib/uniword/wordprocessingml/font.rb
|
|
1684
|
+
- lib/uniword/wordprocessingml/font_replacer.rb
|
|
1669
1685
|
- lib/uniword/wordprocessingml/font_table.rb
|
|
1670
1686
|
- lib/uniword/wordprocessingml/fonts.rb
|
|
1671
1687
|
- lib/uniword/wordprocessingml/footer.rb
|
|
@@ -1727,6 +1743,7 @@ files:
|
|
|
1727
1743
|
- lib/uniword/wordprocessingml/page_defaults.rb
|
|
1728
1744
|
- lib/uniword/wordprocessingml/page_margins.rb
|
|
1729
1745
|
- lib/uniword/wordprocessingml/page_numbering.rb
|
|
1746
|
+
- lib/uniword/wordprocessingml/page_setup.rb
|
|
1730
1747
|
- lib/uniword/wordprocessingml/page_size.rb
|
|
1731
1748
|
- lib/uniword/wordprocessingml/paragraph.rb
|
|
1732
1749
|
- lib/uniword/wordprocessingml/paragraph_borders.rb
|
|
@@ -1782,6 +1799,7 @@ files:
|
|
|
1782
1799
|
- lib/uniword/wordprocessingml/structured_document_tag/text.rb
|
|
1783
1800
|
- lib/uniword/wordprocessingml/structured_document_tag_properties.rb
|
|
1784
1801
|
- lib/uniword/wordprocessingml/style.rb
|
|
1802
|
+
- lib/uniword/wordprocessingml/style_cleanup.rb
|
|
1785
1803
|
- lib/uniword/wordprocessingml/style_name.rb
|
|
1786
1804
|
- lib/uniword/wordprocessingml/style_pane_format_filter.rb
|
|
1787
1805
|
- lib/uniword/wordprocessingml/style_pane_sort_method.rb
|
|
@@ -1816,6 +1834,7 @@ files:
|
|
|
1816
1834
|
- lib/uniword/wordprocessingml/title_pg.rb
|
|
1817
1835
|
- lib/uniword/wordprocessingml/tr_height.rb
|
|
1818
1836
|
- lib/uniword/wordprocessingml/ui_priority.rb
|
|
1837
|
+
- lib/uniword/wordprocessingml/update_fields.rb
|
|
1819
1838
|
- lib/uniword/wordprocessingml/val_int.rb
|
|
1820
1839
|
- lib/uniword/wordprocessingml/w14_attributes.rb
|
|
1821
1840
|
- lib/uniword/wordprocessingml/w14_doc_id.rb
|
data/config/validation_rules.yml
DELETED
|
@@ -1,60 +0,0 @@
|
|
|
1
|
-
# Document Validation Configuration
|
|
2
|
-
#
|
|
3
|
-
# Defines rules and settings for the 7-layer document validation system.
|
|
4
|
-
# Each layer validates one specific aspect of document integrity (MECE).
|
|
5
|
-
|
|
6
|
-
document_validation:
|
|
7
|
-
# General settings
|
|
8
|
-
fail_fast: true # Stop validation on first critical error
|
|
9
|
-
max_file_size: 104857600 # 100MB maximum file size
|
|
10
|
-
|
|
11
|
-
# Layer 1: File Structure Validation
|
|
12
|
-
file_structure:
|
|
13
|
-
enabled: true
|
|
14
|
-
check_extension: true
|
|
15
|
-
check_size: true
|
|
16
|
-
allowed_extensions:
|
|
17
|
-
- '.docx'
|
|
18
|
-
- '.doc'
|
|
19
|
-
|
|
20
|
-
# Layer 2: ZIP Integrity Validation
|
|
21
|
-
zip_integrity:
|
|
22
|
-
enabled: true
|
|
23
|
-
check_entries: true # Verify required entries exist
|
|
24
|
-
check_corruption: true # Test each entry for corruption
|
|
25
|
-
verify_compression: true # Validate compression method
|
|
26
|
-
|
|
27
|
-
# Layer 3: OOXML Part Validation
|
|
28
|
-
ooxml_parts:
|
|
29
|
-
enabled: true
|
|
30
|
-
require_content_types: true # [Content_Types].xml must exist
|
|
31
|
-
require_document: true # word/document.xml must exist
|
|
32
|
-
require_relationships: true # _rels/.rels must exist
|
|
33
|
-
warn_missing_optional: true # Warn about missing optional parts
|
|
34
|
-
|
|
35
|
-
# Layer 4: XML Schema Validation
|
|
36
|
-
xml_schema:
|
|
37
|
-
enabled: true
|
|
38
|
-
strict_parsing: true # Use strict XML parsing
|
|
39
|
-
check_encoding: true # Validate XML encoding
|
|
40
|
-
validate_namespaces: true # Check namespace declarations
|
|
41
|
-
|
|
42
|
-
# Layer 5: Relationship Validation
|
|
43
|
-
relationships:
|
|
44
|
-
enabled: true
|
|
45
|
-
check_targets_exist: true # Verify relationship targets exist
|
|
46
|
-
check_circular_refs: false # Check for circular references (expensive)
|
|
47
|
-
validate_types: true # Validate relationship type URIs
|
|
48
|
-
|
|
49
|
-
# Layer 6: Content Type Validation
|
|
50
|
-
content_types:
|
|
51
|
-
enabled: true
|
|
52
|
-
check_consistency: true # Verify content types are consistent
|
|
53
|
-
validate_extensions: true # Check file extensions match declarations
|
|
54
|
-
|
|
55
|
-
# Layer 7: Document Semantics Validation
|
|
56
|
-
document_semantics:
|
|
57
|
-
enabled: true
|
|
58
|
-
check_required_elements: true # Verify required elements (body, etc.)
|
|
59
|
-
validate_structure: true # Check document hierarchy
|
|
60
|
-
check_style_references: true # Validate style references (future)
|
data/config/warning_rules.yml
DELETED
|
@@ -1,57 +0,0 @@
|
|
|
1
|
-
# Warning System Configuration
|
|
2
|
-
#
|
|
3
|
-
# Defines rules for tracking unsupported elements and features during
|
|
4
|
-
# document processing. Helps users understand what may be lost in round-trip.
|
|
5
|
-
|
|
6
|
-
warning_system:
|
|
7
|
-
enabled: true
|
|
8
|
-
log_warnings: false # Set to true to log warnings during processing
|
|
9
|
-
log_level: :warn # Log level (:info, :warn, :error)
|
|
10
|
-
|
|
11
|
-
# Critical elements (data-bearing) - severity: error
|
|
12
|
-
# These elements contain important data that will be lost
|
|
13
|
-
critical_elements:
|
|
14
|
-
- chart # Charts - data visualization
|
|
15
|
-
- smartArt # SmartArt diagrams
|
|
16
|
-
- sdt # Content controls - user data
|
|
17
|
-
- customXml # Custom XML - data binding
|
|
18
|
-
- contentPart # Content parts
|
|
19
|
-
- control # ActiveX controls
|
|
20
|
-
|
|
21
|
-
# Warning elements (important but not critical) - severity: warning
|
|
22
|
-
# These elements affect formatting/structure but not core data
|
|
23
|
-
warning_elements:
|
|
24
|
-
- drawingML # Complex drawings
|
|
25
|
-
- vmlDrawing # Legacy VML drawings
|
|
26
|
-
- fldSimple # Simple fields
|
|
27
|
-
- altChunk # Alternative content chunks
|
|
28
|
-
- subDoc # Subdocuments
|
|
29
|
-
|
|
30
|
-
# Element-specific suggestions for users
|
|
31
|
-
element_suggestions:
|
|
32
|
-
chart: "Chart elements are not yet supported. The chart will be preserved as-is but cannot be edited. Consider using image exports for charts. Support planned for v6.1."
|
|
33
|
-
|
|
34
|
-
smartArt: "SmartArt diagrams are not yet supported. Diagram will be preserved but cannot be modified. Consider converting to regular shapes. Support planned for v6.2."
|
|
35
|
-
|
|
36
|
-
sdt: "Content controls are not yet supported. Controls will be preserved but values cannot be updated programmatically. Support planned for v6.1."
|
|
37
|
-
|
|
38
|
-
customXml: "Custom XML data binding is not yet supported. XML data will be preserved but cannot be accessed or modified. Support planned for v6.3."
|
|
39
|
-
|
|
40
|
-
drawingML: "Complex DrawingML graphics may not be fully supported. Basic shapes work, but advanced features may be lost."
|
|
41
|
-
|
|
42
|
-
vmlDrawing: "Legacy VML drawings have limited support. Consider updating to modern DrawingML format."
|
|
43
|
-
|
|
44
|
-
fldSimple: "Some field types are not yet supported. Field will be preserved but may not update correctly."
|
|
45
|
-
|
|
46
|
-
control: "ActiveX controls are not supported. Controls will be preserved but not functional."
|
|
47
|
-
|
|
48
|
-
altChunk: "Alternative content chunks are not supported. Content may be lost."
|
|
49
|
-
|
|
50
|
-
subDoc: "Subdocuments are not supported. Consider consolidating into single document."
|
|
51
|
-
|
|
52
|
-
# Reporting options
|
|
53
|
-
reporting:
|
|
54
|
-
group_by_element: true # Group warnings by element type
|
|
55
|
-
include_counts: true # Include occurrence counts
|
|
56
|
-
include_suggestions: true # Include suggestions in report
|
|
57
|
-
max_warnings: 100 # Maximum warnings to collect (prevent memory issues)
|