uniword 1.0.0 → 1.0.3

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.
Files changed (1784) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +43 -0
  3. data/README.adoc +71 -2142
  4. data/config/accessibility_profiles.yml +145 -0
  5. data/config/font_metadata.yml +213 -0
  6. data/config/latent_styles.yml +962 -0
  7. data/config/link_validation_rules.yml +62 -0
  8. data/config/locale_profiles.yml +226 -0
  9. data/config/metadata_schema.yml +294 -0
  10. data/config/ooxml/schema_loader.yml +98 -0
  11. data/config/ooxml/schema_main.yml +524 -0
  12. data/config/ooxml/schemas/01_document_structure.yml +44 -0
  13. data/config/ooxml/schemas/02_paragraph.yml +282 -0
  14. data/config/ooxml/schemas/03_run.yml +276 -0
  15. data/config/ooxml/schemas/04_table.yml +184 -0
  16. data/config/ooxml/schemas/05_headers_footers.yml +82 -0
  17. data/config/ooxml/schemas/06_fields.yml +81 -0
  18. data/config/ooxml/schemas/07_footnotes.yml +92 -0
  19. data/config/ooxml/schemas/08_styles.yml +265 -0
  20. data/config/ooxml/schemas/09_numbering.yml +247 -0
  21. data/config/ooxml/schemas/10_sections.yml +250 -0
  22. data/config/ooxml/schemas/11_drawing.yml +381 -0
  23. data/config/ooxml/schemas/12_math.yml +349 -0
  24. data/config/ooxml/schemas/13_charts.yml +920 -0
  25. data/config/ooxml/schemas/bibliography.yml +351 -0
  26. data/config/ooxml/schemas/chart.yml +1472 -0
  27. data/config/ooxml/schemas/content_types.yml +93 -0
  28. data/config/ooxml/schemas/customxml.yml +493 -0
  29. data/config/ooxml/schemas/document_properties.yml +275 -0
  30. data/config/ooxml/schemas/document_variables.yml +135 -0
  31. data/config/ooxml/schemas/drawingml.yml +1368 -0
  32. data/config/ooxml/schemas/glossary.yml +235 -0
  33. data/config/ooxml/schemas/math.yml +1266 -0
  34. data/config/ooxml/schemas/office.yml +648 -0
  35. data/config/ooxml/schemas/picture.yml +213 -0
  36. data/config/ooxml/schemas/presentationml.yml +1003 -0
  37. data/config/ooxml/schemas/relationships.yml +91 -0
  38. data/config/ooxml/schemas/shared_types.yml +174 -0
  39. data/config/ooxml/schemas/spreadsheetml.yml +1534 -0
  40. data/config/ooxml/schemas/vml.yml +426 -0
  41. data/config/ooxml/schemas/vml_office.yml +415 -0
  42. data/config/ooxml/schemas/wordprocessingml.yml +1881 -0
  43. data/config/ooxml/schemas/wordprocessingml_2010.yml +428 -0
  44. data/config/ooxml/schemas/wordprocessingml_2013.yml +286 -0
  45. data/config/ooxml/schemas/wordprocessingml_2016.yml +205 -0
  46. data/config/ooxml/schemas/wp_drawing.yml +528 -0
  47. data/config/pipeline.yml +108 -0
  48. data/config/profiles.yml +49 -0
  49. data/config/quality_rules.yml +49 -0
  50. data/config/style_mappings/iso_publication.yml +30 -0
  51. data/config/styles/iso_standard.yml +229 -0
  52. data/config/styles/legal_document.yml +198 -0
  53. data/config/styles/minimal.yml +90 -0
  54. data/config/styles/technical_report.yml +233 -0
  55. data/config/system_profiles.yml +87 -0
  56. data/config/theme_mapping.yml +447 -0
  57. data/config/transformation_rules.yml +160 -0
  58. data/config/validation_rules.yml +60 -0
  59. data/config/warning_rules.yml +57 -0
  60. data/data/color_schemes/amber.yml +17 -0
  61. data/data/color_schemes/azure.yml +17 -0
  62. data/data/color_schemes/burgundy.yml +17 -0
  63. data/data/color_schemes/cerulean.yml +17 -0
  64. data/data/color_schemes/chartreuse.yml +17 -0
  65. data/data/color_schemes/classic.yml +17 -0
  66. data/data/color_schemes/cobalt.yml +17 -0
  67. data/data/color_schemes/coral.yml +17 -0
  68. data/data/color_schemes/crimson.yml +17 -0
  69. data/data/color_schemes/emerald.yml +17 -0
  70. data/data/color_schemes/horizon.yml +17 -0
  71. data/data/color_schemes/indigo.yml +17 -0
  72. data/data/color_schemes/lavender.yml +17 -0
  73. data/data/color_schemes/magenta.yml +17 -0
  74. data/data/color_schemes/modern.yml +17 -0
  75. data/data/color_schemes/monochrome.yml +17 -0
  76. data/data/color_schemes/parchment.yml +17 -0
  77. data/data/color_schemes/saffron.yml +17 -0
  78. data/data/color_schemes/sage.yml +17 -0
  79. data/data/color_schemes/scarlet.yml +17 -0
  80. data/data/color_schemes/solar.yml +17 -0
  81. data/data/color_schemes/teal.yml +17 -0
  82. data/data/color_schemes/terrain.yml +17 -0
  83. data/data/font_schemes/caladea.yml +45 -0
  84. data/data/font_schemes/carlito_caladea.yml +45 -0
  85. data/data/font_schemes/carlito_liberation.yml +45 -0
  86. data/data/font_schemes/carlito_sans.yml +45 -0
  87. data/data/font_schemes/classic_office.yml +45 -0
  88. data/data/font_schemes/eb_garamond.yml +45 -0
  89. data/data/font_schemes/eb_garamond_liberation.yml +45 -0
  90. data/data/font_schemes/gelasio.yml +45 -0
  91. data/data/font_schemes/league_gothic.yml +45 -0
  92. data/data/font_schemes/league_liberation.yml +45 -0
  93. data/data/font_schemes/liberation_bold_sans.yml +45 -0
  94. data/data/font_schemes/liberation_libre.yml +45 -0
  95. data/data/font_schemes/liberation_mono_sans.yml +45 -0
  96. data/data/font_schemes/liberation_pair.yml +45 -0
  97. data/data/font_schemes/liberation_reverse.yml +45 -0
  98. data/data/font_schemes/liberation_sans.yml +45 -0
  99. data/data/font_schemes/liberation_sans_trebuchet.yml +45 -0
  100. data/data/font_schemes/libre_bodoni.yml +45 -0
  101. data/data/font_schemes/libre_franklin.yml +45 -0
  102. data/data/font_schemes/modern_office.yml +45 -0
  103. data/data/font_schemes/ms_office_2007.yml +72 -0
  104. data/data/font_schemes/ms_office_2013.yml +106 -0
  105. data/data/font_schemes/ms_office_2024.yml +106 -0
  106. data/data/font_schemes/source_alfa_slab.yml +45 -0
  107. data/data/font_schemes/source_display.yml +45 -0
  108. data/data/font_schemes/source_modern.yml +45 -0
  109. data/data/font_schemes/source_sans.yml +45 -0
  110. data/data/font_schemes/source_sans_century.yml +45 -0
  111. data/data/resources/document_elements/ar/bibliographies.yml +13 -0
  112. data/data/resources/document_elements/ar/cover_pages.yml +26 -0
  113. data/data/resources/document_elements/ar/equations.yml +21 -0
  114. data/data/resources/document_elements/ar/footers.yml +31 -0
  115. data/data/resources/document_elements/ar/headers.yml +32 -0
  116. data/data/resources/document_elements/ar/table_of_contents.yml +21 -0
  117. data/data/resources/document_elements/ar/tables.yml +19 -0
  118. data/data/resources/document_elements/ar/watermarks.yml +25 -0
  119. data/data/resources/document_elements/cs/bibliographies.yml +13 -0
  120. data/data/resources/document_elements/cs/cover_pages.yml +26 -0
  121. data/data/resources/document_elements/cs/equations.yml +21 -0
  122. data/data/resources/document_elements/cs/footers.yml +31 -0
  123. data/data/resources/document_elements/cs/headers.yml +32 -0
  124. data/data/resources/document_elements/cs/table_of_contents.yml +21 -0
  125. data/data/resources/document_elements/cs/tables.yml +19 -0
  126. data/data/resources/document_elements/cs/watermarks.yml +25 -0
  127. data/data/resources/document_elements/da/bibliographies.yml +13 -0
  128. data/data/resources/document_elements/da/cover_pages.yml +26 -0
  129. data/data/resources/document_elements/da/equations.yml +21 -0
  130. data/data/resources/document_elements/da/footers.yml +31 -0
  131. data/data/resources/document_elements/da/headers.yml +32 -0
  132. data/data/resources/document_elements/da/table_of_contents.yml +21 -0
  133. data/data/resources/document_elements/da/tables.yml +19 -0
  134. data/data/resources/document_elements/da/watermarks.yml +25 -0
  135. data/data/resources/document_elements/de/bibliographies.yml +13 -0
  136. data/data/resources/document_elements/de/cover_pages.yml +26 -0
  137. data/data/resources/document_elements/de/equations.yml +21 -0
  138. data/data/resources/document_elements/de/footers.yml +31 -0
  139. data/data/resources/document_elements/de/headers.yml +32 -0
  140. data/data/resources/document_elements/de/table_of_contents.yml +21 -0
  141. data/data/resources/document_elements/de/tables.yml +19 -0
  142. data/data/resources/document_elements/de/watermarks.yml +25 -0
  143. data/data/resources/document_elements/el/bibliographies.yml +13 -0
  144. data/data/resources/document_elements/el/cover_pages.yml +26 -0
  145. data/data/resources/document_elements/el/equations.yml +21 -0
  146. data/data/resources/document_elements/el/footers.yml +31 -0
  147. data/data/resources/document_elements/el/headers.yml +32 -0
  148. data/data/resources/document_elements/el/table_of_contents.yml +21 -0
  149. data/data/resources/document_elements/el/tables.yml +19 -0
  150. data/data/resources/document_elements/el/watermarks.yml +25 -0
  151. data/data/resources/document_elements/en/bibliographies.yml +13 -0
  152. data/data/resources/document_elements/en/cover_pages.yml +26 -0
  153. data/data/resources/document_elements/en/equations.yml +21 -0
  154. data/data/resources/document_elements/en/footers.yml +31 -0
  155. data/data/resources/document_elements/en/headers.yml +32 -0
  156. data/data/resources/document_elements/en/table_of_contents.yml +21 -0
  157. data/data/resources/document_elements/en/tables.yml +19 -0
  158. data/data/resources/document_elements/en/watermarks.yml +25 -0
  159. data/data/resources/document_elements/en-GB/bibliographies.yml +13 -0
  160. data/data/resources/document_elements/en-GB/cover_pages.yml +26 -0
  161. data/data/resources/document_elements/en-GB/equations.yml +21 -0
  162. data/data/resources/document_elements/en-GB/footers.yml +31 -0
  163. data/data/resources/document_elements/en-GB/headers.yml +32 -0
  164. data/data/resources/document_elements/en-GB/table_of_contents.yml +21 -0
  165. data/data/resources/document_elements/en-GB/tables.yml +19 -0
  166. data/data/resources/document_elements/en-GB/watermarks.yml +25 -0
  167. data/data/resources/document_elements/es/bibliographies.yml +13 -0
  168. data/data/resources/document_elements/es/cover_pages.yml +26 -0
  169. data/data/resources/document_elements/es/equations.yml +21 -0
  170. data/data/resources/document_elements/es/footers.yml +31 -0
  171. data/data/resources/document_elements/es/headers.yml +32 -0
  172. data/data/resources/document_elements/es/table_of_contents.yml +21 -0
  173. data/data/resources/document_elements/es/tables.yml +19 -0
  174. data/data/resources/document_elements/es/watermarks.yml +25 -0
  175. data/data/resources/document_elements/es-MX/bibliographies.yml +13 -0
  176. data/data/resources/document_elements/es-MX/cover_pages.yml +26 -0
  177. data/data/resources/document_elements/es-MX/equations.yml +21 -0
  178. data/data/resources/document_elements/es-MX/footers.yml +31 -0
  179. data/data/resources/document_elements/es-MX/headers.yml +32 -0
  180. data/data/resources/document_elements/es-MX/table_of_contents.yml +21 -0
  181. data/data/resources/document_elements/es-MX/tables.yml +19 -0
  182. data/data/resources/document_elements/es-MX/watermarks.yml +25 -0
  183. data/data/resources/document_elements/fi/bibliographies.yml +13 -0
  184. data/data/resources/document_elements/fi/cover_pages.yml +26 -0
  185. data/data/resources/document_elements/fi/equations.yml +21 -0
  186. data/data/resources/document_elements/fi/footers.yml +31 -0
  187. data/data/resources/document_elements/fi/headers.yml +32 -0
  188. data/data/resources/document_elements/fi/table_of_contents.yml +21 -0
  189. data/data/resources/document_elements/fi/tables.yml +19 -0
  190. data/data/resources/document_elements/fi/watermarks.yml +25 -0
  191. data/data/resources/document_elements/fr/bibliographies.yml +13 -0
  192. data/data/resources/document_elements/fr/cover_pages.yml +26 -0
  193. data/data/resources/document_elements/fr/equations.yml +21 -0
  194. data/data/resources/document_elements/fr/footers.yml +31 -0
  195. data/data/resources/document_elements/fr/headers.yml +32 -0
  196. data/data/resources/document_elements/fr/table_of_contents.yml +21 -0
  197. data/data/resources/document_elements/fr/tables.yml +19 -0
  198. data/data/resources/document_elements/fr/watermarks.yml +25 -0
  199. data/data/resources/document_elements/fr-CA/bibliographies.yml +13 -0
  200. data/data/resources/document_elements/fr-CA/cover_pages.yml +26 -0
  201. data/data/resources/document_elements/fr-CA/equations.yml +21 -0
  202. data/data/resources/document_elements/fr-CA/footers.yml +31 -0
  203. data/data/resources/document_elements/fr-CA/headers.yml +32 -0
  204. data/data/resources/document_elements/fr-CA/table_of_contents.yml +21 -0
  205. data/data/resources/document_elements/fr-CA/tables.yml +19 -0
  206. data/data/resources/document_elements/fr-CA/watermarks.yml +25 -0
  207. data/data/resources/document_elements/he/bibliographies.yml +13 -0
  208. data/data/resources/document_elements/he/cover_pages.yml +26 -0
  209. data/data/resources/document_elements/he/equations.yml +21 -0
  210. data/data/resources/document_elements/he/footers.yml +31 -0
  211. data/data/resources/document_elements/he/headers.yml +32 -0
  212. data/data/resources/document_elements/he/table_of_contents.yml +21 -0
  213. data/data/resources/document_elements/he/tables.yml +19 -0
  214. data/data/resources/document_elements/he/watermarks.yml +25 -0
  215. data/data/resources/document_elements/hu/bibliographies.yml +13 -0
  216. data/data/resources/document_elements/hu/cover_pages.yml +26 -0
  217. data/data/resources/document_elements/hu/equations.yml +21 -0
  218. data/data/resources/document_elements/hu/footers.yml +31 -0
  219. data/data/resources/document_elements/hu/headers.yml +32 -0
  220. data/data/resources/document_elements/hu/table_of_contents.yml +21 -0
  221. data/data/resources/document_elements/hu/tables.yml +19 -0
  222. data/data/resources/document_elements/hu/watermarks.yml +25 -0
  223. data/data/resources/document_elements/id/bibliographies.yml +13 -0
  224. data/data/resources/document_elements/id/cover_pages.yml +26 -0
  225. data/data/resources/document_elements/id/equations.yml +21 -0
  226. data/data/resources/document_elements/id/footers.yml +31 -0
  227. data/data/resources/document_elements/id/headers.yml +32 -0
  228. data/data/resources/document_elements/id/table_of_contents.yml +21 -0
  229. data/data/resources/document_elements/id/tables.yml +19 -0
  230. data/data/resources/document_elements/id/watermarks.yml +25 -0
  231. data/data/resources/document_elements/it/bibliographies.yml +13 -0
  232. data/data/resources/document_elements/it/cover_pages.yml +26 -0
  233. data/data/resources/document_elements/it/equations.yml +21 -0
  234. data/data/resources/document_elements/it/footers.yml +31 -0
  235. data/data/resources/document_elements/it/headers.yml +32 -0
  236. data/data/resources/document_elements/it/table_of_contents.yml +21 -0
  237. data/data/resources/document_elements/it/tables.yml +19 -0
  238. data/data/resources/document_elements/it/watermarks.yml +25 -0
  239. data/data/resources/document_elements/ja/bibliographies.yml +13 -0
  240. data/data/resources/document_elements/ja/cover_pages.yml +26 -0
  241. data/data/resources/document_elements/ja/equations.yml +21 -0
  242. data/data/resources/document_elements/ja/footers.yml +31 -0
  243. data/data/resources/document_elements/ja/headers.yml +32 -0
  244. data/data/resources/document_elements/ja/table_of_contents.yml +21 -0
  245. data/data/resources/document_elements/ja/tables.yml +19 -0
  246. data/data/resources/document_elements/ja/watermarks.yml +25 -0
  247. data/data/resources/document_elements/ko/bibliographies.yml +13 -0
  248. data/data/resources/document_elements/ko/cover_pages.yml +26 -0
  249. data/data/resources/document_elements/ko/equations.yml +21 -0
  250. data/data/resources/document_elements/ko/footers.yml +31 -0
  251. data/data/resources/document_elements/ko/headers.yml +32 -0
  252. data/data/resources/document_elements/ko/table_of_contents.yml +21 -0
  253. data/data/resources/document_elements/ko/tables.yml +19 -0
  254. data/data/resources/document_elements/ko/watermarks.yml +25 -0
  255. data/data/resources/document_elements/nl/bibliographies.yml +13 -0
  256. data/data/resources/document_elements/nl/cover_pages.yml +26 -0
  257. data/data/resources/document_elements/nl/equations.yml +21 -0
  258. data/data/resources/document_elements/nl/footers.yml +31 -0
  259. data/data/resources/document_elements/nl/headers.yml +32 -0
  260. data/data/resources/document_elements/nl/table_of_contents.yml +21 -0
  261. data/data/resources/document_elements/nl/tables.yml +19 -0
  262. data/data/resources/document_elements/nl/watermarks.yml +25 -0
  263. data/data/resources/document_elements/no/bibliographies.yml +13 -0
  264. data/data/resources/document_elements/no/cover_pages.yml +26 -0
  265. data/data/resources/document_elements/no/equations.yml +21 -0
  266. data/data/resources/document_elements/no/footers.yml +31 -0
  267. data/data/resources/document_elements/no/headers.yml +32 -0
  268. data/data/resources/document_elements/no/table_of_contents.yml +21 -0
  269. data/data/resources/document_elements/no/tables.yml +19 -0
  270. data/data/resources/document_elements/no/watermarks.yml +25 -0
  271. data/data/resources/document_elements/pl/bibliographies.yml +13 -0
  272. data/data/resources/document_elements/pl/cover_pages.yml +26 -0
  273. data/data/resources/document_elements/pl/equations.yml +21 -0
  274. data/data/resources/document_elements/pl/footers.yml +31 -0
  275. data/data/resources/document_elements/pl/headers.yml +32 -0
  276. data/data/resources/document_elements/pl/table_of_contents.yml +21 -0
  277. data/data/resources/document_elements/pl/tables.yml +19 -0
  278. data/data/resources/document_elements/pl/watermarks.yml +25 -0
  279. data/data/resources/document_elements/pt/bibliographies.yml +13 -0
  280. data/data/resources/document_elements/pt/cover_pages.yml +26 -0
  281. data/data/resources/document_elements/pt/equations.yml +21 -0
  282. data/data/resources/document_elements/pt/footers.yml +31 -0
  283. data/data/resources/document_elements/pt/headers.yml +32 -0
  284. data/data/resources/document_elements/pt/table_of_contents.yml +21 -0
  285. data/data/resources/document_elements/pt/tables.yml +19 -0
  286. data/data/resources/document_elements/pt/watermarks.yml +25 -0
  287. data/data/resources/document_elements/pt-PT/bibliographies.yml +13 -0
  288. data/data/resources/document_elements/pt-PT/cover_pages.yml +26 -0
  289. data/data/resources/document_elements/pt-PT/equations.yml +21 -0
  290. data/data/resources/document_elements/pt-PT/footers.yml +31 -0
  291. data/data/resources/document_elements/pt-PT/headers.yml +32 -0
  292. data/data/resources/document_elements/pt-PT/table_of_contents.yml +21 -0
  293. data/data/resources/document_elements/pt-PT/tables.yml +19 -0
  294. data/data/resources/document_elements/pt-PT/watermarks.yml +25 -0
  295. data/data/resources/document_elements/ru/bibliographies.yml +13 -0
  296. data/data/resources/document_elements/ru/cover_pages.yml +26 -0
  297. data/data/resources/document_elements/ru/equations.yml +21 -0
  298. data/data/resources/document_elements/ru/footers.yml +31 -0
  299. data/data/resources/document_elements/ru/headers.yml +32 -0
  300. data/data/resources/document_elements/ru/table_of_contents.yml +21 -0
  301. data/data/resources/document_elements/ru/tables.yml +19 -0
  302. data/data/resources/document_elements/ru/watermarks.yml +25 -0
  303. data/data/resources/document_elements/sk/bibliographies.yml +13 -0
  304. data/data/resources/document_elements/sk/cover_pages.yml +26 -0
  305. data/data/resources/document_elements/sk/equations.yml +21 -0
  306. data/data/resources/document_elements/sk/footers.yml +31 -0
  307. data/data/resources/document_elements/sk/headers.yml +32 -0
  308. data/data/resources/document_elements/sk/table_of_contents.yml +21 -0
  309. data/data/resources/document_elements/sk/tables.yml +19 -0
  310. data/data/resources/document_elements/sk/watermarks.yml +25 -0
  311. data/data/resources/document_elements/sv/bibliographies.yml +13 -0
  312. data/data/resources/document_elements/sv/cover_pages.yml +26 -0
  313. data/data/resources/document_elements/sv/equations.yml +21 -0
  314. data/data/resources/document_elements/sv/footers.yml +31 -0
  315. data/data/resources/document_elements/sv/headers.yml +32 -0
  316. data/data/resources/document_elements/sv/table_of_contents.yml +21 -0
  317. data/data/resources/document_elements/sv/tables.yml +19 -0
  318. data/data/resources/document_elements/sv/watermarks.yml +25 -0
  319. data/data/resources/document_elements/th/bibliographies.yml +13 -0
  320. data/data/resources/document_elements/th/cover_pages.yml +26 -0
  321. data/data/resources/document_elements/th/equations.yml +21 -0
  322. data/data/resources/document_elements/th/footers.yml +31 -0
  323. data/data/resources/document_elements/th/headers.yml +32 -0
  324. data/data/resources/document_elements/th/table_of_contents.yml +21 -0
  325. data/data/resources/document_elements/th/tables.yml +19 -0
  326. data/data/resources/document_elements/th/watermarks.yml +25 -0
  327. data/data/resources/document_elements/tr/bibliographies.yml +13 -0
  328. data/data/resources/document_elements/tr/cover_pages.yml +26 -0
  329. data/data/resources/document_elements/tr/equations.yml +21 -0
  330. data/data/resources/document_elements/tr/footers.yml +31 -0
  331. data/data/resources/document_elements/tr/headers.yml +32 -0
  332. data/data/resources/document_elements/tr/table_of_contents.yml +21 -0
  333. data/data/resources/document_elements/tr/tables.yml +19 -0
  334. data/data/resources/document_elements/tr/watermarks.yml +25 -0
  335. data/data/resources/document_elements/zh-CN/bibliographies.yml +13 -0
  336. data/data/resources/document_elements/zh-CN/cover_pages.yml +26 -0
  337. data/data/resources/document_elements/zh-CN/equations.yml +21 -0
  338. data/data/resources/document_elements/zh-CN/footers.yml +31 -0
  339. data/data/resources/document_elements/zh-CN/headers.yml +32 -0
  340. data/data/resources/document_elements/zh-CN/table_of_contents.yml +21 -0
  341. data/data/resources/document_elements/zh-CN/tables.yml +19 -0
  342. data/data/resources/document_elements/zh-CN/watermarks.yml +25 -0
  343. data/data/resources/document_elements/zh-TW/bibliographies.yml +13 -0
  344. data/data/resources/document_elements/zh-TW/cover_pages.yml +26 -0
  345. data/data/resources/document_elements/zh-TW/equations.yml +21 -0
  346. data/data/resources/document_elements/zh-TW/footers.yml +31 -0
  347. data/data/resources/document_elements/zh-TW/headers.yml +32 -0
  348. data/data/resources/document_elements/zh-TW/table_of_contents.yml +21 -0
  349. data/data/resources/document_elements/zh-TW/tables.yml +19 -0
  350. data/data/resources/document_elements/zh-TW/watermarks.yml +25 -0
  351. data/data/resources/font_registry.yml +135 -0
  352. data/data/schemas/ecma/opc-contentTypes.xsd +42 -0
  353. data/data/schemas/ecma/opc-coreProperties.xsd +50 -0
  354. data/data/schemas/ecma/opc-digSig.xsd +49 -0
  355. data/data/schemas/ecma/opc-relationships.xsd +33 -0
  356. data/data/schemas/iso/dml-chart.xsd +1499 -0
  357. data/data/schemas/iso/dml-chartDrawing.xsd +146 -0
  358. data/data/schemas/iso/dml-diagram.xsd +1085 -0
  359. data/data/schemas/iso/dml-lockedCanvas.xsd +11 -0
  360. data/data/schemas/iso/dml-main.xsd +3081 -0
  361. data/data/schemas/iso/dml-picture.xsd +23 -0
  362. data/data/schemas/iso/dml-spreadsheetDrawing.xsd +185 -0
  363. data/data/schemas/iso/dml-wordprocessingDrawing.xsd +287 -0
  364. data/data/schemas/iso/pml.xsd +1676 -0
  365. data/data/schemas/iso/shared-additionalCharacteristics.xsd +28 -0
  366. data/data/schemas/iso/shared-bibliography.xsd +144 -0
  367. data/data/schemas/iso/shared-commonSimpleTypes.xsd +172 -0
  368. data/data/schemas/iso/shared-customXmlDataProperties.xsd +25 -0
  369. data/data/schemas/iso/shared-customXmlSchemaProperties.xsd +18 -0
  370. data/data/schemas/iso/shared-documentPropertiesCustom.xsd +59 -0
  371. data/data/schemas/iso/shared-documentPropertiesExtended.xsd +56 -0
  372. data/data/schemas/iso/shared-documentPropertiesVariantTypes.xsd +195 -0
  373. data/data/schemas/iso/shared-math.xsd +582 -0
  374. data/data/schemas/iso/shared-relationshipReference.xsd +25 -0
  375. data/data/schemas/iso/sml.xsd +4439 -0
  376. data/data/schemas/iso/vml-main.xsd +570 -0
  377. data/data/schemas/iso/vml-officeDrawing.xsd +509 -0
  378. data/data/schemas/iso/vml-presentationDrawing.xsd +12 -0
  379. data/data/schemas/iso/vml-spreadsheetDrawing.xsd +108 -0
  380. data/data/schemas/iso/vml-wordprocessingDrawing.xsd +96 -0
  381. data/data/schemas/iso/wml.xsd +3646 -0
  382. data/data/schemas/iso/xml.xsd +116 -0
  383. data/data/schemas/mce/mc.xsd +75 -0
  384. data/data/schemas/microsoft/wml-2010.xsd +560 -0
  385. data/data/schemas/microsoft/wml-2012.xsd +66 -0
  386. data/data/schemas/microsoft/wml-2018.xsd +14 -0
  387. data/data/schemas/microsoft/wml-cex-2018.xsd +19 -0
  388. data/data/schemas/microsoft/wml-cid-2016.xsd +13 -0
  389. data/data/schemas/microsoft/wml-sdtdatahash-2020.xsd +4 -0
  390. data/data/schemas/microsoft/wml-symex-2015.xsd +8 -0
  391. data/data/schemas/microsoft/word12.xsd +3 -0
  392. data/data/stylesets/ceremonial.yml +929 -0
  393. data/data/stylesets/classic.yml +1051 -0
  394. data/data/stylesets/contemporary.yml +951 -0
  395. data/data/stylesets/gazette.yml +1452 -0
  396. data/data/stylesets/heritage.yml +898 -0
  397. data/data/stylesets/minimal.yml +855 -0
  398. data/data/stylesets/ornate.yml +920 -0
  399. data/data/stylesets/outlook.yml +1428 -0
  400. data/data/stylesets/refined.yml +956 -0
  401. data/data/stylesets/scrollwork.yml +891 -0
  402. data/data/stylesets/signature.yml +903 -0
  403. data/data/stylesets/wicker.yml +1285 -0
  404. data/data/themes/abyss.yml +197 -0
  405. data/data/themes/archive.yml +197 -0
  406. data/data/themes/boardwalk.yml +197 -0
  407. data/data/themes/botanical.yml +197 -0
  408. data/data/themes/bulletin.yml +197 -0
  409. data/data/themes/calculus.yml +389 -0
  410. data/data/themes/constellation.yml +197 -0
  411. data/data/themes/contrail.yml +197 -0
  412. data/data/themes/corporate.yml +197 -0
  413. data/data/themes/emblem.yml +197 -0
  414. data/data/themes/exhibit.yml +197 -0
  415. data/data/themes/harvest.yml +197 -0
  416. data/data/themes/incision.yml +197 -0
  417. data/data/themes/lather.yml +197 -0
  418. data/data/themes/letterpress.yml +197 -0
  419. data/data/themes/memoir.yml +389 -0
  420. data/data/themes/meridian.yml +197 -0
  421. data/data/themes/mosaic.yml +197 -0
  422. data/data/themes/parkway.yml +197 -0
  423. data/data/themes/plasma.yml +197 -0
  424. data/data/themes/plumage.yml +197 -0
  425. data/data/themes/prism.yml +197 -0
  426. data/data/themes/ripple.yml +197 -0
  427. data/data/themes/spectrum.yml +197 -0
  428. data/data/themes/spotlight.yml +197 -0
  429. data/data/themes/vista.yml +197 -0
  430. data/data/themes/weave.yml +197 -0
  431. data/data/themes/workspace.yml +197 -0
  432. data/data/themes/zephyr.yml +197 -0
  433. data/exe/uniword +2 -2
  434. data/lib/uniword/accessibility/accessibility_checker.rb +4 -4
  435. data/lib/uniword/accessibility/accessibility_profile.rb +20 -11
  436. data/lib/uniword/accessibility/accessibility_report.rb +9 -9
  437. data/lib/uniword/accessibility/accessibility_rule.rb +7 -7
  438. data/lib/uniword/accessibility/accessibility_violation.rb +1 -1
  439. data/lib/uniword/accessibility/rules/descriptive_headings_rule.rb +5 -5
  440. data/lib/uniword/accessibility/rules/document_title_rule.rb +3 -3
  441. data/lib/uniword/accessibility/rules/heading_structure_rule.rb +6 -6
  442. data/lib/uniword/accessibility/rules/image_alt_text_rule.rb +7 -5
  443. data/lib/uniword/accessibility/rules/language_specification_rule.rb +2 -2
  444. data/lib/uniword/accessibility/rules/table_headers_rule.rb +2 -2
  445. data/lib/uniword/accessibility/rules.rb +4 -2
  446. data/lib/uniword/accessibility.rb +8 -4
  447. data/lib/uniword/assembly/assembly_manifest.rb +27 -18
  448. data/lib/uniword/assembly/component_registry.rb +10 -10
  449. data/lib/uniword/assembly/cross_reference_resolver.rb +1 -1
  450. data/lib/uniword/assembly/document_assembler.rb +19 -19
  451. data/lib/uniword/assembly/toc.rb +4 -4
  452. data/lib/uniword/assembly/toc_entry.rb +2 -1
  453. data/lib/uniword/assembly/toc_instruction.rb +3 -3
  454. data/lib/uniword/assembly/variable_substitutor.rb +2 -2
  455. data/lib/uniword/assembly.rb +2 -1
  456. data/lib/uniword/batch/batch_result.rb +20 -20
  457. data/lib/uniword/batch/document_processor.rb +32 -28
  458. data/lib/uniword/batch/processing_stage.rb +6 -6
  459. data/lib/uniword/batch/stages/compress_images_stage.rb +2 -2
  460. data/lib/uniword/batch/stages/convert_format_stage.rb +7 -7
  461. data/lib/uniword/batch/stages/normalize_styles_stage.rb +14 -14
  462. data/lib/uniword/batch/stages/quality_check_stage.rb +13 -9
  463. data/lib/uniword/batch/stages/update_metadata_stage.rb +7 -11
  464. data/lib/uniword/batch/stages/validate_links_stage.rb +9 -9
  465. data/lib/uniword/batch.rb +6 -3
  466. data/lib/uniword/bibliography/author.rb +21 -21
  467. data/lib/uniword/bibliography/city.rb +3 -3
  468. data/lib/uniword/bibliography/corporate.rb +3 -3
  469. data/lib/uniword/bibliography/day.rb +3 -3
  470. data/lib/uniword/bibliography/edition.rb +3 -3
  471. data/lib/uniword/bibliography/first.rb +3 -3
  472. data/lib/uniword/bibliography/first_name.rb +3 -3
  473. data/lib/uniword/bibliography/guid.rb +3 -3
  474. data/lib/uniword/bibliography/issue.rb +3 -3
  475. data/lib/uniword/bibliography/last.rb +3 -3
  476. data/lib/uniword/bibliography/last_name.rb +3 -3
  477. data/lib/uniword/bibliography/lcid.rb +3 -3
  478. data/lib/uniword/bibliography/locale_id.rb +3 -3
  479. data/lib/uniword/bibliography/month.rb +3 -3
  480. data/lib/uniword/bibliography/name_list.rb +3 -3
  481. data/lib/uniword/bibliography/pages.rb +3 -3
  482. data/lib/uniword/bibliography/person.rb +5 -5
  483. data/lib/uniword/bibliography/publisher.rb +3 -3
  484. data/lib/uniword/bibliography/ref_order.rb +3 -3
  485. data/lib/uniword/bibliography/source.rb +59 -55
  486. data/lib/uniword/bibliography/source_tag.rb +3 -3
  487. data/lib/uniword/bibliography/source_type.rb +3 -3
  488. data/lib/uniword/bibliography/sources.rb +6 -6
  489. data/lib/uniword/bibliography/tag.rb +3 -3
  490. data/lib/uniword/bibliography/title.rb +3 -3
  491. data/lib/uniword/bibliography/url.rb +3 -3
  492. data/lib/uniword/bibliography/volume_number.rb +3 -3
  493. data/lib/uniword/bibliography/year.rb +3 -3
  494. data/lib/uniword/bibliography.rb +30 -30
  495. data/lib/uniword/bookmark.rb +2 -2
  496. data/lib/uniword/builder/base_builder.rb +44 -0
  497. data/lib/uniword/builder/bibliography_builder.rb +7 -7
  498. data/lib/uniword/builder/chart_builder.rb +100 -159
  499. data/lib/uniword/builder/comment_builder.rb +1 -1
  500. data/lib/uniword/builder/document_builder.rb +18 -59
  501. data/lib/uniword/builder/footnote_builder.rb +2 -2
  502. data/lib/uniword/builder/has_borders.rb +26 -0
  503. data/lib/uniword/builder/has_shading.rb +19 -0
  504. data/lib/uniword/builder/header_footer_builder.rb +2 -2
  505. data/lib/uniword/builder/image_builder.rb +41 -36
  506. data/lib/uniword/builder/list_builder.rb +5 -4
  507. data/lib/uniword/builder/numbering_builder.rb +4 -16
  508. data/lib/uniword/builder/paragraph_builder.rb +16 -89
  509. data/lib/uniword/builder/run_builder.rb +31 -158
  510. data/lib/uniword/builder/sdt_builder.rb +19 -37
  511. data/lib/uniword/builder/section_builder.rb +11 -39
  512. data/lib/uniword/builder/style_builder.rb +3 -3
  513. data/lib/uniword/builder/table_builder.rb +11 -51
  514. data/lib/uniword/builder/table_cell_builder.rb +14 -58
  515. data/lib/uniword/builder/table_row_builder.rb +4 -16
  516. data/lib/uniword/builder/toc_builder.rb +4 -4
  517. data/lib/uniword/builder/watermark_builder.rb +17 -17
  518. data/lib/uniword/builder.rb +37 -36
  519. data/lib/uniword/chart/area3_d_chart.rb +9 -9
  520. data/lib/uniword/chart/area_chart.rb +8 -8
  521. data/lib/uniword/chart/auto_title_deleted.rb +3 -3
  522. data/lib/uniword/chart/axis_id.rb +3 -3
  523. data/lib/uniword/chart/axis_position.rb +3 -3
  524. data/lib/uniword/chart/bar3_d_chart.rb +11 -11
  525. data/lib/uniword/chart/bar_chart.rb +10 -10
  526. data/lib/uniword/chart/bubble_chart.rb +10 -10
  527. data/lib/uniword/chart/bubble_size.rb +4 -4
  528. data/lib/uniword/chart/cat_ax.rb +14 -14
  529. data/lib/uniword/chart/category_axis_data.rb +6 -6
  530. data/lib/uniword/chart/chart.rb +9 -8
  531. data/lib/uniword/chart/chart_reference.rb +3 -3
  532. data/lib/uniword/chart/chart_space.rb +9 -9
  533. data/lib/uniword/chart/color_map_override.rb +3 -3
  534. data/lib/uniword/chart/data_label.rb +9 -9
  535. data/lib/uniword/chart/data_labels.rb +12 -12
  536. data/lib/uniword/chart/date_ax.rb +14 -14
  537. data/lib/uniword/chart/diagram_reference.rb +3 -3
  538. data/lib/uniword/chart/doughnut_chart.rb +7 -7
  539. data/lib/uniword/chart/drop_lines.rb +3 -3
  540. data/lib/uniword/chart/error_bar_type.rb +3 -3
  541. data/lib/uniword/chart/error_bars.rb +10 -10
  542. data/lib/uniword/chart/error_direction.rb +3 -3
  543. data/lib/uniword/chart/explosion.rb +3 -3
  544. data/lib/uniword/chart/gap_width.rb +3 -3
  545. data/lib/uniword/chart/hi_low_lines.rb +3 -3
  546. data/lib/uniword/chart/index.rb +3 -3
  547. data/lib/uniword/chart/layout.rb +3 -3
  548. data/lib/uniword/chart/legend.rb +10 -9
  549. data/lib/uniword/chart/legend_entry.rb +5 -5
  550. data/lib/uniword/chart/legend_position.rb +3 -3
  551. data/lib/uniword/chart/line3_d_chart.rb +9 -9
  552. data/lib/uniword/chart/line_chart.rb +12 -12
  553. data/lib/uniword/chart/major_gridlines.rb +3 -3
  554. data/lib/uniword/chart/marker.rb +5 -5
  555. data/lib/uniword/chart/marker_size.rb +3 -3
  556. data/lib/uniword/chart/marker_style.rb +3 -3
  557. data/lib/uniword/chart/minor_gridlines.rb +3 -3
  558. data/lib/uniword/chart/number_reference.rb +4 -4
  559. data/lib/uniword/chart/numbering_format.rb +4 -4
  560. data/lib/uniword/chart/order.rb +3 -3
  561. data/lib/uniword/chart/orientation.rb +3 -3
  562. data/lib/uniword/chart/pie3_d_chart.rb +5 -5
  563. data/lib/uniword/chart/pie_chart.rb +6 -6
  564. data/lib/uniword/chart/plot_area.rb +9 -9
  565. data/lib/uniword/chart/plot_vis_only.rb +3 -3
  566. data/lib/uniword/chart/radar_chart.rb +7 -7
  567. data/lib/uniword/chart/scaling.rb +6 -6
  568. data/lib/uniword/chart/scatter_chart.rb +7 -7
  569. data/lib/uniword/chart/ser_ax.rb +13 -13
  570. data/lib/uniword/chart/series.rb +6 -6
  571. data/lib/uniword/chart/series_text.rb +4 -4
  572. data/lib/uniword/chart/shape_properties.rb +3 -3
  573. data/lib/uniword/chart/show_category_name.rb +3 -3
  574. data/lib/uniword/chart/show_legend_key.rb +3 -3
  575. data/lib/uniword/chart/show_value.rb +3 -3
  576. data/lib/uniword/chart/smooth.rb +3 -3
  577. data/lib/uniword/chart/stock_chart.rb +8 -8
  578. data/lib/uniword/chart/style.rb +3 -3
  579. data/lib/uniword/chart/surface3_d_chart.rb +6 -6
  580. data/lib/uniword/chart/surface_chart.rb +6 -6
  581. data/lib/uniword/chart/text_properties.rb +3 -3
  582. data/lib/uniword/chart/tick_label_position.rb +3 -3
  583. data/lib/uniword/chart/title.rb +7 -7
  584. data/lib/uniword/chart/trendline.rb +9 -9
  585. data/lib/uniword/chart/trendline_type.rb +3 -3
  586. data/lib/uniword/chart/up_down_bars.rb +5 -5
  587. data/lib/uniword/chart/val_ax.rb +16 -16
  588. data/lib/uniword/chart/values.rb +4 -4
  589. data/lib/uniword/chart/x_values.rb +4 -4
  590. data/lib/uniword/chart/y_values.rb +4 -4
  591. data/lib/uniword/cli/diff_cli.rb +188 -0
  592. data/lib/uniword/cli/generate_cli.rb +83 -0
  593. data/lib/uniword/cli/headers_cli.rb +159 -0
  594. data/lib/uniword/cli/helpers.rb +43 -0
  595. data/lib/uniword/cli/images_cli.rb +166 -0
  596. data/lib/uniword/cli/main.rb +550 -0
  597. data/lib/uniword/cli/protect_cli.rb +97 -0
  598. data/lib/uniword/cli/resources_cli.rb +165 -0
  599. data/lib/uniword/cli/review_cli.rb +291 -0
  600. data/lib/uniword/cli/spellcheck_cli.rb +102 -0
  601. data/lib/uniword/cli/styleset_cli.rb +191 -0
  602. data/lib/uniword/cli/template_cli.rb +194 -0
  603. data/lib/uniword/cli/theme_cli.rb +221 -0
  604. data/lib/uniword/cli/toc_cli.rb +154 -0
  605. data/lib/uniword/cli/watermark_cli.rb +97 -0
  606. data/lib/uniword/cli.rb +18 -735
  607. data/lib/uniword/column_configuration.rb +2 -2
  608. data/lib/uniword/comment.rb +7 -7
  609. data/lib/uniword/comment_range.rb +5 -5
  610. data/lib/uniword/comments_part.rb +7 -3
  611. data/lib/uniword/configuration/configuration_loader.rb +3 -3
  612. data/lib/uniword/configuration.rb +2 -1
  613. data/lib/uniword/content_types/default.rb +4 -4
  614. data/lib/uniword/content_types/override.rb +4 -4
  615. data/lib/uniword/content_types/types.rb +4 -7
  616. data/lib/uniword/content_types.rb +35 -35
  617. data/lib/uniword/customxml/custom_xml.rb +6 -6
  618. data/lib/uniword/customxml/custom_xml_attribute.rb +5 -5
  619. data/lib/uniword/customxml/custom_xml_block.rb +6 -6
  620. data/lib/uniword/customxml/custom_xml_cell.rb +6 -6
  621. data/lib/uniword/customxml/custom_xml_del_range_start.rb +5 -5
  622. data/lib/uniword/customxml/custom_xml_ins_range_end.rb +3 -3
  623. data/lib/uniword/customxml/custom_xml_ins_range_start.rb +5 -5
  624. data/lib/uniword/customxml/custom_xml_move_from_range_end.rb +3 -3
  625. data/lib/uniword/customxml/custom_xml_move_from_range_start.rb +5 -5
  626. data/lib/uniword/customxml/custom_xml_move_to_range_end.rb +3 -3
  627. data/lib/uniword/customxml/custom_xml_move_to_range_start.rb +5 -5
  628. data/lib/uniword/customxml/custom_xml_properties.rb +7 -6
  629. data/lib/uniword/customxml/custom_xml_row.rb +6 -6
  630. data/lib/uniword/customxml/custom_xml_run.rb +6 -6
  631. data/lib/uniword/customxml/data_binding.rb +5 -5
  632. data/lib/uniword/customxml/data_store_item.rb +4 -4
  633. data/lib/uniword/customxml/element_name.rb +3 -3
  634. data/lib/uniword/customxml/name.rb +3 -3
  635. data/lib/uniword/customxml/namespace_uri.rb +3 -3
  636. data/lib/uniword/customxml/placeholder.rb +3 -3
  637. data/lib/uniword/customxml/placeholder_text.rb +3 -3
  638. data/lib/uniword/customxml/prefix_mappings.rb +3 -3
  639. data/lib/uniword/customxml/schema_reference.rb +5 -5
  640. data/lib/uniword/customxml/showing_placeholder.rb +3 -3
  641. data/lib/uniword/customxml/showing_placeholder_header.rb +3 -3
  642. data/lib/uniword/customxml/smart_tag.rb +6 -6
  643. data/lib/uniword/customxml/smart_tag_attribute.rb +4 -4
  644. data/lib/uniword/customxml/smart_tag_element.rb +3 -3
  645. data/lib/uniword/customxml/smart_tag_name.rb +3 -3
  646. data/lib/uniword/customxml/smart_tag_properties.rb +5 -4
  647. data/lib/uniword/customxml/smart_tag_type.rb +5 -5
  648. data/lib/uniword/customxml/smart_tag_uri.rb +3 -3
  649. data/lib/uniword/customxml/store_item_id.rb +3 -3
  650. data/lib/uniword/customxml/x_path.rb +3 -3
  651. data/lib/uniword/customxml/x_path_expression.rb +3 -3
  652. data/lib/uniword/customxml.rb +45 -38
  653. data/lib/uniword/diff/diff_result.rb +100 -0
  654. data/lib/uniword/diff/document_differ.rb +517 -0
  655. data/lib/uniword/diff/formatter.rb +120 -0
  656. data/lib/uniword/diff/package_diff_result.rb +204 -0
  657. data/lib/uniword/diff/package_differ.rb +581 -0
  658. data/lib/uniword/diff.rb +19 -0
  659. data/lib/uniword/document_factory.rb +55 -26
  660. data/lib/uniword/document_variables/data_type.rb +3 -3
  661. data/lib/uniword/document_variables/default_value.rb +3 -3
  662. data/lib/uniword/document_variables/doc_var.rb +4 -4
  663. data/lib/uniword/document_variables/doc_vars.rb +3 -3
  664. data/lib/uniword/document_variables/read_only.rb +3 -3
  665. data/lib/uniword/document_variables/variable_binding.rb +5 -5
  666. data/lib/uniword/document_variables/variable_collection.rb +4 -4
  667. data/lib/uniword/document_variables/variable_expression.rb +3 -3
  668. data/lib/uniword/document_variables/variable_format.rb +3 -3
  669. data/lib/uniword/document_variables/variable_scope.rb +3 -3
  670. data/lib/uniword/document_writer.rb +18 -17
  671. data/lib/uniword/docx/document_statistics.rb +142 -0
  672. data/lib/uniword/docx/package.rb +492 -0
  673. data/lib/uniword/docx/package_defaults.rb +151 -0
  674. data/lib/uniword/docx/package_serialization.rb +490 -0
  675. data/lib/uniword/docx/profile.rb +256 -0
  676. data/lib/uniword/docx/reconciler.rb +1006 -0
  677. data/lib/uniword/docx.rb +15 -0
  678. data/lib/uniword/drawingml/adjust_value_list.rb +3 -3
  679. data/lib/uniword/drawingml/alpha.rb +3 -3
  680. data/lib/uniword/drawingml/alpha_bi_level.rb +3 -3
  681. data/lib/uniword/drawingml/alpha_modulation.rb +3 -3
  682. data/lib/uniword/drawingml/alpha_modulation_fixed.rb +3 -3
  683. data/lib/uniword/drawingml/alpha_offset.rb +3 -3
  684. data/lib/uniword/drawingml/arc_to.rb +6 -6
  685. data/lib/uniword/drawingml/background_color.rb +4 -4
  686. data/lib/uniword/drawingml/bevel_top.rb +5 -5
  687. data/lib/uniword/drawingml/bi_level.rb +3 -3
  688. data/lib/uniword/drawingml/blip.rb +11 -9
  689. data/lib/uniword/drawingml/blip_fill.rb +6 -6
  690. data/lib/uniword/drawingml/blue.rb +3 -3
  691. data/lib/uniword/drawingml/blur.rb +4 -4
  692. data/lib/uniword/drawingml/body_properties.rb +3 -3
  693. data/lib/uniword/drawingml/camera.rb +4 -4
  694. data/lib/uniword/drawingml/close_path.rb +2 -2
  695. data/lib/uniword/drawingml/color_scheme.rb +71 -71
  696. data/lib/uniword/drawingml/complex_script_font.rb +4 -4
  697. data/lib/uniword/drawingml/custom_dash.rb +3 -3
  698. data/lib/uniword/drawingml/custom_geometry.rb +4 -4
  699. data/lib/uniword/drawingml/dash_stop.rb +4 -4
  700. data/lib/uniword/drawingml/default_paragraph_properties.rb +4 -4
  701. data/lib/uniword/drawingml/duotone.rb +5 -4
  702. data/lib/uniword/drawingml/east_asian_font.rb +4 -4
  703. data/lib/uniword/drawingml/effect_container.rb +3 -3
  704. data/lib/uniword/drawingml/effect_list.rb +7 -7
  705. data/lib/uniword/drawingml/extension.rb +11 -11
  706. data/lib/uniword/drawingml/extension_list.rb +2 -2
  707. data/lib/uniword/drawingml/extents.rb +4 -4
  708. data/lib/uniword/drawingml/extra_color_scheme_list.rb +1 -1
  709. data/lib/uniword/drawingml/fill_overlay.rb +3 -3
  710. data/lib/uniword/drawingml/fill_rect.rb +27 -0
  711. data/lib/uniword/drawingml/fill_to_rect.rb +6 -6
  712. data/lib/uniword/drawingml/font_reference.rb +4 -4
  713. data/lib/uniword/drawingml/font_scheme.rb +30 -30
  714. data/lib/uniword/drawingml/foreground_color.rb +4 -4
  715. data/lib/uniword/drawingml/format_scheme.rb +23 -23
  716. data/lib/uniword/drawingml/gamma.rb +2 -2
  717. data/lib/uniword/drawingml/geometry_guide.rb +4 -4
  718. data/lib/uniword/drawingml/glow.rb +5 -5
  719. data/lib/uniword/drawingml/gradient_fill.rb +6 -6
  720. data/lib/uniword/drawingml/gradient_stop.rb +5 -5
  721. data/lib/uniword/drawingml/gradient_stop_list.rb +5 -4
  722. data/lib/uniword/drawingml/graphic.rb +3 -3
  723. data/lib/uniword/drawingml/graphic_data.rb +6 -6
  724. data/lib/uniword/drawingml/graphic_frame_locks.rb +24 -0
  725. data/lib/uniword/drawingml/grayscale.rb +2 -2
  726. data/lib/uniword/drawingml/green.rb +3 -3
  727. data/lib/uniword/drawingml/group_locking.rb +10 -10
  728. data/lib/uniword/drawingml/group_shape_properties.rb +3 -3
  729. data/lib/uniword/drawingml/gvml.rb +17 -12
  730. data/lib/uniword/drawingml/gvml_connector.rb +5 -5
  731. data/lib/uniword/drawingml/gvml_connector_non_visual.rb +4 -4
  732. data/lib/uniword/drawingml/gvml_graphic_frame_non_visual.rb +5 -4
  733. data/lib/uniword/drawingml/gvml_graphical_object_frame.rb +6 -5
  734. data/lib/uniword/drawingml/gvml_group_shape.rb +10 -10
  735. data/lib/uniword/drawingml/gvml_group_shape_non_visual.rb +4 -4
  736. data/lib/uniword/drawingml/gvml_picture.rb +6 -6
  737. data/lib/uniword/drawingml/gvml_picture_non_visual.rb +4 -4
  738. data/lib/uniword/drawingml/gvml_shape.rb +6 -6
  739. data/lib/uniword/drawingml/gvml_shape_non_visual.rb +4 -4
  740. data/lib/uniword/drawingml/gvml_text_shape.rb +5 -5
  741. data/lib/uniword/drawingml/gvml_use_shape_rectangle.rb +2 -2
  742. data/lib/uniword/drawingml/hue.rb +3 -3
  743. data/lib/uniword/drawingml/hue_modulation.rb +3 -3
  744. data/lib/uniword/drawingml/hue_offset.rb +3 -3
  745. data/lib/uniword/drawingml/inner_shadow.rb +7 -7
  746. data/lib/uniword/drawingml/inverse_gamma.rb +2 -2
  747. data/lib/uniword/drawingml/level1_paragraph_properties.rb +4 -4
  748. data/lib/uniword/drawingml/level2_paragraph_properties.rb +4 -4
  749. data/lib/uniword/drawingml/level3_paragraph_properties.rb +4 -4
  750. data/lib/uniword/drawingml/light_rig.rb +5 -5
  751. data/lib/uniword/drawingml/line_defaults.rb +6 -6
  752. data/lib/uniword/drawingml/line_join_miter.rb +3 -3
  753. data/lib/uniword/drawingml/line_join_round.rb +2 -2
  754. data/lib/uniword/drawingml/line_properties.rb +10 -10
  755. data/lib/uniword/drawingml/line_to.rb +3 -3
  756. data/lib/uniword/drawingml/linear_gradient.rb +4 -4
  757. data/lib/uniword/drawingml/list_style.rb +6 -6
  758. data/lib/uniword/drawingml/luminance.rb +3 -3
  759. data/lib/uniword/drawingml/luminance_modulation.rb +3 -3
  760. data/lib/uniword/drawingml/luminance_offset.rb +3 -3
  761. data/lib/uniword/drawingml/move_to.rb +3 -3
  762. data/lib/uniword/drawingml/no_fill.rb +2 -2
  763. data/lib/uniword/drawingml/non_visual_connector_properties.rb +3 -3
  764. data/lib/uniword/drawingml/non_visual_drawing_properties.rb +10 -4
  765. data/lib/uniword/drawingml/non_visual_graphic_frame_properties.rb +3 -3
  766. data/lib/uniword/drawingml/non_visual_group_drawing_shape_properties.rb +3 -3
  767. data/lib/uniword/drawingml/non_visual_picture_properties.rb +6 -5
  768. data/lib/uniword/drawingml/non_visual_shape_properties.rb +3 -3
  769. data/lib/uniword/drawingml/object_defaults.rb +4 -4
  770. data/lib/uniword/drawingml/office_art_extension.rb +5 -3
  771. data/lib/uniword/drawingml/office_art_extension_list.rb +5 -4
  772. data/lib/uniword/drawingml/offset.rb +4 -4
  773. data/lib/uniword/drawingml/outer_shadow.rb +11 -11
  774. data/lib/uniword/drawingml/path_gradient.rb +4 -4
  775. data/lib/uniword/drawingml/path_list.rb +3 -3
  776. data/lib/uniword/drawingml/pattern_fill.rb +5 -5
  777. data/lib/uniword/drawingml/picture_locking.rb +10 -10
  778. data/lib/uniword/drawingml/preset_dash.rb +3 -3
  779. data/lib/uniword/drawingml/preset_geometry.rb +4 -4
  780. data/lib/uniword/drawingml/preset_shadow.rb +5 -5
  781. data/lib/uniword/drawingml/red.rb +3 -3
  782. data/lib/uniword/drawingml/red_modulation.rb +3 -3
  783. data/lib/uniword/drawingml/red_offset.rb +3 -3
  784. data/lib/uniword/drawingml/reflection.rb +10 -10
  785. data/lib/uniword/drawingml/relative_rect.rb +6 -6
  786. data/lib/uniword/drawingml/rotation.rb +5 -5
  787. data/lib/uniword/drawingml/saturation.rb +3 -3
  788. data/lib/uniword/drawingml/saturation_modulation.rb +3 -3
  789. data/lib/uniword/drawingml/saturation_offset.rb +3 -3
  790. data/lib/uniword/drawingml/scene_3d.rb +4 -4
  791. data/lib/uniword/drawingml/scheme_color.rb +13 -13
  792. data/lib/uniword/drawingml/shade.rb +3 -3
  793. data/lib/uniword/drawingml/shape.rb +4 -4
  794. data/lib/uniword/drawingml/shape_3d.rb +6 -6
  795. data/lib/uniword/drawingml/shape_defaults.rb +6 -6
  796. data/lib/uniword/drawingml/shape_properties.rb +4 -4
  797. data/lib/uniword/drawingml/shape_style.rb +6 -6
  798. data/lib/uniword/drawingml/soft_edge.rb +3 -3
  799. data/lib/uniword/drawingml/solid_fill.rb +4 -4
  800. data/lib/uniword/drawingml/source_rect.rb +6 -6
  801. data/lib/uniword/drawingml/srgb_color.rb +13 -13
  802. data/lib/uniword/drawingml/stretch.rb +6 -2
  803. data/lib/uniword/drawingml/style_matrix.rb +6 -6
  804. data/lib/uniword/drawingml/style_matrix_reference.rb +5 -5
  805. data/lib/uniword/drawingml/style_reference.rb +4 -4
  806. data/lib/uniword/drawingml/text_body.rb +6 -5
  807. data/lib/uniword/drawingml/text_character_properties.rb +8 -8
  808. data/lib/uniword/drawingml/text_defaults.rb +6 -6
  809. data/lib/uniword/drawingml/text_font.rb +4 -4
  810. data/lib/uniword/drawingml/text_paragraph.rb +3 -3
  811. data/lib/uniword/drawingml/text_paragraph_properties.rb +5 -5
  812. data/lib/uniword/drawingml/text_run.rb +3 -3
  813. data/lib/uniword/drawingml/theme.rb +29 -29
  814. data/lib/uniword/drawingml/tile.rb +8 -8
  815. data/lib/uniword/drawingml/tile_rect.rb +6 -6
  816. data/lib/uniword/drawingml/tint.rb +3 -3
  817. data/lib/uniword/drawingml/transform2_d.rb +4 -4
  818. data/lib/uniword/drawingml/use_local_dpi.rb +21 -0
  819. data/lib/uniword/drawingml.rb +163 -144
  820. data/lib/uniword/element.rb +1 -1
  821. data/lib/uniword/element_registry.rb +1 -1
  822. data/lib/uniword/endnote.rb +1 -1
  823. data/lib/uniword/errors.rb +1 -1
  824. data/lib/uniword/field.rb +21 -21
  825. data/lib/uniword/footer.rb +8 -5
  826. data/lib/uniword/footnote.rb +1 -1
  827. data/lib/uniword/format_converter.rb +6 -6
  828. data/lib/uniword/format_detector.rb +39 -16
  829. data/lib/uniword/generation/document_generator.rb +135 -0
  830. data/lib/uniword/generation/structured_text_parser.rb +131 -0
  831. data/lib/uniword/generation/style_extractor.rb +90 -0
  832. data/lib/uniword/generation/style_mapper.rb +89 -0
  833. data/lib/uniword/generation.rb +17 -0
  834. data/lib/uniword/glossary/auto_text.rb +3 -3
  835. data/lib/uniword/glossary/category_name.rb +3 -3
  836. data/lib/uniword/glossary/doc_part.rb +4 -4
  837. data/lib/uniword/glossary/doc_part_behavior.rb +3 -3
  838. data/lib/uniword/glossary/doc_part_behaviors.rb +5 -4
  839. data/lib/uniword/glossary/doc_part_body.rb +7 -6
  840. data/lib/uniword/glossary/doc_part_category.rb +4 -4
  841. data/lib/uniword/glossary/doc_part_description.rb +3 -3
  842. data/lib/uniword/glossary/doc_part_gallery.rb +3 -3
  843. data/lib/uniword/glossary/doc_part_id.rb +3 -3
  844. data/lib/uniword/glossary/doc_part_name.rb +3 -3
  845. data/lib/uniword/glossary/doc_part_properties.rb +9 -9
  846. data/lib/uniword/glossary/doc_part_type.rb +3 -3
  847. data/lib/uniword/glossary/doc_part_types.rb +4 -4
  848. data/lib/uniword/glossary/doc_parts.rb +3 -3
  849. data/lib/uniword/glossary/equation.rb +3 -3
  850. data/lib/uniword/glossary/glossary_document.rb +5 -5
  851. data/lib/uniword/glossary/style_id.rb +3 -3
  852. data/lib/uniword/glossary/text_box.rb +3 -3
  853. data/lib/uniword/glossary.rb +19 -19
  854. data/lib/uniword/header.rb +8 -5
  855. data/lib/uniword/headers_footers/manager.rb +140 -0
  856. data/lib/uniword/headers_footers.rb +12 -0
  857. data/lib/uniword/hyperlink.rb +1 -1
  858. data/lib/uniword/image.rb +12 -9
  859. data/lib/uniword/images/image_info.rb +48 -0
  860. data/lib/uniword/images/image_manager.rb +253 -0
  861. data/lib/uniword/images.rb +15 -0
  862. data/lib/uniword/infrastructure/mime_packager.rb +15 -17
  863. data/lib/uniword/infrastructure/mime_parser.rb +28 -18
  864. data/lib/uniword/infrastructure/xml_namespace_normalizer.rb +8 -6
  865. data/lib/uniword/infrastructure/zip_extractor.rb +23 -15
  866. data/lib/uniword/infrastructure/zip_packager.rb +30 -29
  867. data/lib/uniword/lazy_loader.rb +5 -11
  868. data/lib/uniword/line_numbering.rb +11 -11
  869. data/lib/uniword/logger.rb +1 -1
  870. data/lib/uniword/math/accent.rb +4 -4
  871. data/lib/uniword/math/accent_properties.rb +4 -4
  872. data/lib/uniword/math/argument_properties.rb +3 -3
  873. data/lib/uniword/math/bar.rb +4 -4
  874. data/lib/uniword/math/bar_properties.rb +4 -4
  875. data/lib/uniword/math/begin_char.rb +3 -3
  876. data/lib/uniword/math/border_box.rb +4 -4
  877. data/lib/uniword/math/border_box_properties.rb +11 -11
  878. data/lib/uniword/math/box.rb +4 -4
  879. data/lib/uniword/math/box_properties.rb +8 -8
  880. data/lib/uniword/math/char.rb +3 -3
  881. data/lib/uniword/math/control_properties.rb +3 -3
  882. data/lib/uniword/math/degree.rb +4 -4
  883. data/lib/uniword/math/delimiter.rb +4 -4
  884. data/lib/uniword/math/delimiter_properties.rb +8 -8
  885. data/lib/uniword/math/denominator.rb +4 -4
  886. data/lib/uniword/math/element.rb +29 -24
  887. data/lib/uniword/math/end_char.rb +3 -3
  888. data/lib/uniword/math/equation_array.rb +4 -4
  889. data/lib/uniword/math/equation_array_properties.rb +8 -8
  890. data/lib/uniword/math/fraction.rb +5 -5
  891. data/lib/uniword/math/fraction_properties.rb +4 -4
  892. data/lib/uniword/math/function.rb +5 -5
  893. data/lib/uniword/math/function_name.rb +4 -4
  894. data/lib/uniword/math/function_properties.rb +3 -3
  895. data/lib/uniword/math/group_char.rb +4 -4
  896. data/lib/uniword/math/group_char_properties.rb +6 -6
  897. data/lib/uniword/math/lim.rb +4 -4
  898. data/lib/uniword/math/lower_limit.rb +5 -5
  899. data/lib/uniword/math/lower_limit_properties.rb +3 -3
  900. data/lib/uniword/math/math_break.rb +3 -3
  901. data/lib/uniword/math/math_font.rb +3 -3
  902. data/lib/uniword/math/math_properties.rb +18 -18
  903. data/lib/uniword/math/math_run.rb +5 -5
  904. data/lib/uniword/math/math_run_properties.rb +9 -9
  905. data/lib/uniword/math/math_simple_int_val.rb +3 -3
  906. data/lib/uniword/math/math_simple_val.rb +3 -3
  907. data/lib/uniword/math/math_style.rb +3 -3
  908. data/lib/uniword/math/math_text.rb +2 -2
  909. data/lib/uniword/math/matrix.rb +4 -4
  910. data/lib/uniword/math/matrix_column.rb +3 -3
  911. data/lib/uniword/math/matrix_column_properties.rb +4 -4
  912. data/lib/uniword/math/matrix_columns.rb +3 -3
  913. data/lib/uniword/math/matrix_properties.rb +10 -10
  914. data/lib/uniword/math/matrix_row.rb +3 -3
  915. data/lib/uniword/math/nary.rb +6 -6
  916. data/lib/uniword/math/nary_properties.rb +8 -8
  917. data/lib/uniword/math/numerator.rb +4 -4
  918. data/lib/uniword/math/o_math.rb +28 -23
  919. data/lib/uniword/math/o_math_para.rb +4 -4
  920. data/lib/uniword/math/o_math_para_properties.rb +3 -3
  921. data/lib/uniword/math/phantom.rb +4 -4
  922. data/lib/uniword/math/phantom_properties.rb +8 -8
  923. data/lib/uniword/math/plurimath_adapter.rb +26 -22
  924. data/lib/uniword/math/pre_sub_superscript.rb +6 -6
  925. data/lib/uniword/math/pre_sub_superscript_properties.rb +3 -3
  926. data/lib/uniword/math/radical.rb +5 -5
  927. data/lib/uniword/math/radical_properties.rb +4 -4
  928. data/lib/uniword/math/separator_char.rb +3 -3
  929. data/lib/uniword/math/sub.rb +4 -4
  930. data/lib/uniword/math/sub_superscript.rb +6 -6
  931. data/lib/uniword/math/sub_superscript_properties.rb +4 -4
  932. data/lib/uniword/math/subscript.rb +5 -5
  933. data/lib/uniword/math/subscript_properties.rb +3 -3
  934. data/lib/uniword/math/sup.rb +4 -4
  935. data/lib/uniword/math/superscript.rb +5 -5
  936. data/lib/uniword/math/superscript_properties.rb +3 -3
  937. data/lib/uniword/math/upper_limit.rb +5 -5
  938. data/lib/uniword/math/upper_limit_properties.rb +3 -3
  939. data/lib/uniword/math.rb +70 -68
  940. data/lib/uniword/math_equation.rb +6 -6
  941. data/lib/uniword/mhtml/css_number_formatter.rb +7 -6
  942. data/lib/uniword/mhtml/document.rb +24 -18
  943. data/lib/uniword/mhtml/html_part.rb +19 -18
  944. data/lib/uniword/mhtml/math_converter.rb +17 -15
  945. data/lib/uniword/mhtml/metadata/document_properties.rb +21 -21
  946. data/lib/uniword/mhtml/metadata/latent_styles.rb +8 -8
  947. data/lib/uniword/mhtml/metadata/office_document_settings.rb +4 -4
  948. data/lib/uniword/mhtml/metadata/word_document_settings.rb +16 -15
  949. data/lib/uniword/mhtml/metadata.rb +4 -2
  950. data/lib/uniword/mhtml/mhtml_package.rb +7 -9
  951. data/lib/uniword/mhtml/mime_part.rb +17 -13
  952. data/lib/uniword/mhtml/namespaces.rb +7 -7
  953. data/lib/uniword/mhtml/numbering_configuration.rb +3 -3
  954. data/lib/uniword/mhtml/styles_configuration.rb +3 -3
  955. data/lib/uniword/mhtml/theme.rb +2 -2
  956. data/lib/uniword/mhtml/word_css.rb +15 -29
  957. data/lib/uniword/office/bottom.rb +3 -3
  958. data/lib/uniword/office/brightness.rb +3 -3
  959. data/lib/uniword/office/button.rb +5 -5
  960. data/lib/uniword/office/callout.rb +10 -10
  961. data/lib/uniword/office/callout_anchor.rb +3 -3
  962. data/lib/uniword/office/checkbox.rb +4 -4
  963. data/lib/uniword/office/color_menu.rb +4 -4
  964. data/lib/uniword/office/color_mru.rb +4 -4
  965. data/lib/uniword/office/complex.rb +3 -3
  966. data/lib/uniword/office/diagram.rb +10 -10
  967. data/lib/uniword/office/diffusity.rb +3 -3
  968. data/lib/uniword/office/document_protection.rb +5 -5
  969. data/lib/uniword/office/document_view.rb +3 -3
  970. data/lib/uniword/office/edge.rb +4 -4
  971. data/lib/uniword/office/extrusion.rb +19 -19
  972. data/lib/uniword/office/extrusion_color.rb +4 -4
  973. data/lib/uniword/office/extrusion_color_mode.rb +3 -3
  974. data/lib/uniword/office/extrusion_ok.rb +3 -3
  975. data/lib/uniword/office/field.rb +4 -4
  976. data/lib/uniword/office/forms.rb +3 -3
  977. data/lib/uniword/office/id_map.rb +4 -4
  978. data/lib/uniword/office/ink.rb +4 -4
  979. data/lib/uniword/office/ink_annotation.rb +4 -4
  980. data/lib/uniword/office/left.rb +3 -3
  981. data/lib/uniword/office/lock.rb +7 -7
  982. data/lib/uniword/office/metal.rb +3 -3
  983. data/lib/uniword/office/proof_state.rb +4 -4
  984. data/lib/uniword/office/regroup.rb +3 -3
  985. data/lib/uniword/office/regroup_table.rb +3 -3
  986. data/lib/uniword/office/relation_table.rb +3 -3
  987. data/lib/uniword/office/right.rb +3 -3
  988. data/lib/uniword/office/rules.rb +3 -3
  989. data/lib/uniword/office/shape_defaults.rb +6 -6
  990. data/lib/uniword/office/shape_layout.rb +4 -4
  991. data/lib/uniword/office/signature_line.rb +12 -12
  992. data/lib/uniword/office/skew.rb +6 -6
  993. data/lib/uniword/office/specularity.rb +3 -3
  994. data/lib/uniword/office/top.rb +3 -3
  995. data/lib/uniword/office/writing_style.rb +6 -6
  996. data/lib/uniword/office/zoom.rb +3 -3
  997. data/lib/uniword/office.rb +41 -41
  998. data/lib/uniword/ooxml/additional_characteristics.rb +8 -8
  999. data/lib/uniword/ooxml/app_properties.rb +44 -44
  1000. data/lib/uniword/ooxml/core_properties.rb +15 -14
  1001. data/lib/uniword/ooxml/custom_properties.rb +35 -35
  1002. data/lib/uniword/ooxml/dotx_package.rb +161 -52
  1003. data/lib/uniword/ooxml/namespaces.rb +267 -114
  1004. data/lib/uniword/ooxml/package_file.rb +13 -10
  1005. data/lib/uniword/ooxml/relationships/hyperlink_relationship.rb +3 -3
  1006. data/lib/uniword/ooxml/relationships/image_relationship.rb +2 -2
  1007. data/lib/uniword/ooxml/relationships/office_document_relationship.rb +3 -3
  1008. data/lib/uniword/ooxml/relationships/package_relationship.rb +6 -6
  1009. data/lib/uniword/ooxml/relationships/package_relationships.rb +16 -16
  1010. data/lib/uniword/ooxml/relationships/relationship.rb +6 -6
  1011. data/lib/uniword/ooxml/relationships/relationships.rb +7 -6
  1012. data/lib/uniword/ooxml/relationships.rb +6 -3
  1013. data/lib/uniword/ooxml/schema/attribute_definition.rb +10 -9
  1014. data/lib/uniword/ooxml/schema/child_definition.rb +17 -17
  1015. data/lib/uniword/ooxml/schema/element_definition.rb +3 -3
  1016. data/lib/uniword/ooxml/schema/element_serializer.rb +43 -21
  1017. data/lib/uniword/ooxml/schema/ooxml_schema.rb +7 -6
  1018. data/lib/uniword/ooxml/schema_library.rb +9 -8
  1019. data/lib/uniword/ooxml/styleset_package.rb +1 -1
  1020. data/lib/uniword/ooxml/theme_package.rb +6 -6
  1021. data/lib/uniword/ooxml/thmx_package.rb +13 -12
  1022. data/lib/uniword/ooxml/types/cp_description_type.rb +1 -1
  1023. data/lib/uniword/ooxml/types/cp_keywords_type.rb +1 -1
  1024. data/lib/uniword/ooxml/types/cp_last_modified_by_type.rb +1 -1
  1025. data/lib/uniword/ooxml/types/cp_revision_type.rb +1 -1
  1026. data/lib/uniword/ooxml/types/dc_creator_type.rb +1 -1
  1027. data/lib/uniword/ooxml/types/dc_subject_type.rb +1 -1
  1028. data/lib/uniword/ooxml/types/dc_title_type.rb +1 -1
  1029. data/lib/uniword/ooxml/types/dcterms_created_type.rb +4 -4
  1030. data/lib/uniword/ooxml/types/dcterms_modified_type.rb +4 -4
  1031. data/lib/uniword/ooxml/types/dcterms_w3cdtf_type.rb +6 -35
  1032. data/lib/uniword/ooxml/types/mc_ignorable_type.rb +1 -1
  1033. data/lib/uniword/ooxml/types/on_off_type.rb +5 -5
  1034. data/lib/uniword/ooxml/types/ooxml_boolean.rb +7 -7
  1035. data/lib/uniword/ooxml/types/ooxml_boolean_optional.rb +7 -7
  1036. data/lib/uniword/ooxml/types/relationship_id.rb +18 -0
  1037. data/lib/uniword/ooxml/types/variant_types.rb +41 -41
  1038. data/lib/uniword/ooxml/types.rb +29 -25
  1039. data/lib/uniword/ooxml.rb +2 -2
  1040. data/lib/uniword/page_borders.rb +9 -9
  1041. data/lib/uniword/paragraph_border.rb +9 -8
  1042. data/lib/uniword/picture/fill_rect.rb +6 -6
  1043. data/lib/uniword/picture/non_visual_drawing_properties.rb +29 -0
  1044. data/lib/uniword/picture/non_visual_picture_drawing_properties.rb +4 -4
  1045. data/lib/uniword/picture/non_visual_picture_properties.rb +5 -5
  1046. data/lib/uniword/picture/picture.rb +5 -5
  1047. data/lib/uniword/picture/picture_blip_fill.rb +6 -6
  1048. data/lib/uniword/picture/picture_locks.rb +4 -4
  1049. data/lib/uniword/picture/picture_shape_properties.rb +5 -5
  1050. data/lib/uniword/picture/picture_source_rect.rb +6 -6
  1051. data/lib/uniword/picture/picture_stretch.rb +3 -3
  1052. data/lib/uniword/picture/tile.rb +7 -7
  1053. data/lib/uniword/picture.rb +4 -1
  1054. data/lib/uniword/presentationml/audio.rb +5 -5
  1055. data/lib/uniword/presentationml/body_properties.rb +7 -7
  1056. data/lib/uniword/presentationml/break.rb +3 -3
  1057. data/lib/uniword/presentationml/color_map.rb +6 -6
  1058. data/lib/uniword/presentationml/common_slide_data.rb +5 -5
  1059. data/lib/uniword/presentationml/common_time_node.rb +8 -8
  1060. data/lib/uniword/presentationml/connection_shape.rb +4 -4
  1061. data/lib/uniword/presentationml/embed.rb +3 -3
  1062. data/lib/uniword/presentationml/embedded_font.rb +4 -4
  1063. data/lib/uniword/presentationml/end_conditions_list.rb +3 -3
  1064. data/lib/uniword/presentationml/end_paragraph_run_properties.rb +5 -5
  1065. data/lib/uniword/presentationml/extension.rb +3 -3
  1066. data/lib/uniword/presentationml/extension_list.rb +3 -3
  1067. data/lib/uniword/presentationml/field.rb +7 -7
  1068. data/lib/uniword/presentationml/graphic_frame.rb +5 -5
  1069. data/lib/uniword/presentationml/group_shape.rb +6 -6
  1070. data/lib/uniword/presentationml/handout_master.rb +4 -4
  1071. data/lib/uniword/presentationml/handout_master_id_list.rb +3 -3
  1072. data/lib/uniword/presentationml/list_style.rb +6 -6
  1073. data/lib/uniword/presentationml/non_visual_shape_properties.rb +5 -5
  1074. data/lib/uniword/presentationml/notes.rb +5 -5
  1075. data/lib/uniword/presentationml/notes_master_id_list.rb +3 -3
  1076. data/lib/uniword/presentationml/notes_size.rb +4 -4
  1077. data/lib/uniword/presentationml/ole_object.rb +5 -5
  1078. data/lib/uniword/presentationml/paragraph.rb +7 -7
  1079. data/lib/uniword/presentationml/paragraph_properties.rb +7 -7
  1080. data/lib/uniword/presentationml/parallel_time_node.rb +3 -3
  1081. data/lib/uniword/presentationml/picture.rb +5 -5
  1082. data/lib/uniword/presentationml/presentation.rb +14 -11
  1083. data/lib/uniword/presentationml/run.rb +4 -4
  1084. data/lib/uniword/presentationml/run_properties.rb +9 -9
  1085. data/lib/uniword/presentationml/sequence_time_node.rb +5 -5
  1086. data/lib/uniword/presentationml/shape.rb +5 -5
  1087. data/lib/uniword/presentationml/shape_properties.rb +7 -7
  1088. data/lib/uniword/presentationml/shape_tree.rb +13 -11
  1089. data/lib/uniword/presentationml/slide.rb +8 -8
  1090. data/lib/uniword/presentationml/slide_id.rb +6 -5
  1091. data/lib/uniword/presentationml/slide_id_list.rb +3 -3
  1092. data/lib/uniword/presentationml/slide_layout.rb +8 -8
  1093. data/lib/uniword/presentationml/slide_master.rb +8 -8
  1094. data/lib/uniword/presentationml/slide_master_id.rb +6 -5
  1095. data/lib/uniword/presentationml/slide_master_id_list.rb +5 -4
  1096. data/lib/uniword/presentationml/slide_size.rb +5 -5
  1097. data/lib/uniword/presentationml/start_conditions_list.rb +3 -3
  1098. data/lib/uniword/presentationml/text_body.rb +5 -5
  1099. data/lib/uniword/presentationml/time_node_list.rb +4 -4
  1100. data/lib/uniword/presentationml/timing.rb +4 -4
  1101. data/lib/uniword/presentationml/transition.rb +8 -8
  1102. data/lib/uniword/presentationml/video.rb +4 -4
  1103. data/lib/uniword/presentationml.rb +54 -50
  1104. data/lib/uniword/properties/adjust_right_ind.rb +27 -0
  1105. data/lib/uniword/properties/alignment.rb +3 -3
  1106. data/lib/uniword/properties/auto_space_de.rb +27 -0
  1107. data/lib/uniword/properties/auto_space_dn.rb +27 -0
  1108. data/lib/uniword/properties/bold.rb +5 -5
  1109. data/lib/uniword/properties/boolean_formatting.rb +44 -30
  1110. data/lib/uniword/properties/border.rb +8 -8
  1111. data/lib/uniword/properties/borders.rb +8 -8
  1112. data/lib/uniword/properties/cell_vertical_align.rb +3 -3
  1113. data/lib/uniword/properties/cell_width.rb +4 -4
  1114. data/lib/uniword/properties/character_spacing.rb +3 -3
  1115. data/lib/uniword/properties/color_value.rb +6 -6
  1116. data/lib/uniword/properties/contextual_spacing.rb +4 -4
  1117. data/lib/uniword/properties/displaced_by_custom_xml_value.rb +18 -0
  1118. data/lib/uniword/properties/emphasis_mark.rb +3 -3
  1119. data/lib/uniword/properties/font_size.rb +3 -3
  1120. data/lib/uniword/properties/highlight.rb +3 -3
  1121. data/lib/uniword/properties/history_value.rb +17 -0
  1122. data/lib/uniword/properties/indentation.rb +6 -6
  1123. data/lib/uniword/properties/italic.rb +5 -5
  1124. data/lib/uniword/properties/kerning.rb +3 -3
  1125. data/lib/uniword/properties/language.rb +5 -5
  1126. data/lib/uniword/properties/margin.rb +3 -3
  1127. data/lib/uniword/properties/numbering_id.rb +3 -3
  1128. data/lib/uniword/properties/numbering_level.rb +3 -3
  1129. data/lib/uniword/properties/numbering_properties.rb +4 -4
  1130. data/lib/uniword/properties/outline.rb +6 -6
  1131. data/lib/uniword/properties/outline_level.rb +3 -3
  1132. data/lib/uniword/properties/page_break_before.rb +26 -0
  1133. data/lib/uniword/properties/position.rb +3 -3
  1134. data/lib/uniword/properties/relationship_id.rb +17 -0
  1135. data/lib/uniword/properties/run_fonts.rb +11 -11
  1136. data/lib/uniword/properties/shading.rb +6 -6
  1137. data/lib/uniword/properties/spacing.rb +12 -6
  1138. data/lib/uniword/properties/style_reference.rb +5 -5
  1139. data/lib/uniword/properties/tab_stop.rb +5 -5
  1140. data/lib/uniword/properties/table_caption.rb +19 -0
  1141. data/lib/uniword/properties/table_cell_margin.rb +6 -6
  1142. data/lib/uniword/properties/table_indent.rb +4 -4
  1143. data/lib/uniword/properties/table_justification.rb +3 -3
  1144. data/lib/uniword/properties/table_layout.rb +23 -0
  1145. data/lib/uniword/properties/table_look.rb +9 -9
  1146. data/lib/uniword/properties/table_width.rb +4 -4
  1147. data/lib/uniword/properties/tabs.rb +3 -3
  1148. data/lib/uniword/properties/text_fill.rb +3 -3
  1149. data/lib/uniword/properties/text_outline.rb +4 -4
  1150. data/lib/uniword/properties/underline.rb +6 -6
  1151. data/lib/uniword/properties/vertical_align.rb +3 -3
  1152. data/lib/uniword/properties/widow_control.rb +27 -0
  1153. data/lib/uniword/properties/width_scale.rb +3 -3
  1154. data/lib/uniword/properties/word2010_id_value.rb +17 -0
  1155. data/lib/uniword/properties.rb +69 -55
  1156. data/lib/uniword/protect/manager.rb +124 -0
  1157. data/lib/uniword/protect.rb +11 -0
  1158. data/lib/uniword/quality/document_checker.rb +10 -10
  1159. data/lib/uniword/quality/quality_report.rb +19 -19
  1160. data/lib/uniword/quality/quality_rule.rb +7 -7
  1161. data/lib/uniword/quality/rules/heading_hierarchy_rule.rb +2 -2
  1162. data/lib/uniword/quality/rules/image_alt_text_rule.rb +4 -4
  1163. data/lib/uniword/quality/rules/link_validation_rule.rb +8 -10
  1164. data/lib/uniword/quality/rules/paragraph_length_rule.rb +4 -4
  1165. data/lib/uniword/quality/rules/style_consistency_rule.rb +6 -5
  1166. data/lib/uniword/quality/rules/table_header_rule.rb +2 -2
  1167. data/lib/uniword/quality.rb +8 -4
  1168. data/lib/uniword/resource/cache.rb +1 -1
  1169. data/lib/uniword/resource/cache_paths.rb +9 -7
  1170. data/lib/uniword/resource/cache_version.rb +4 -3
  1171. data/lib/uniword/resource/color_scheme_loader.rb +36 -0
  1172. data/lib/uniword/resource/color_transformer.rb +2 -2
  1173. data/lib/uniword/resource/document_element_converter.rb +63 -0
  1174. data/lib/uniword/resource/document_element_loader.rb +54 -0
  1175. data/lib/uniword/resource/document_element_template.rb +54 -0
  1176. data/lib/uniword/resource/font_scheme_loader.rb +50 -0
  1177. data/lib/uniword/resource/font_substitutor.rb +98 -21
  1178. data/lib/uniword/resource/importer.rb +54 -6
  1179. data/lib/uniword/resource/resource_location.rb +1 -1
  1180. data/lib/uniword/resource/resource_resolver.rb +9 -7
  1181. data/lib/uniword/resource/theme_mapping_loader.rb +138 -0
  1182. data/lib/uniword/resource/theme_processor.rb +7 -10
  1183. data/lib/uniword/resource/theme_transition.rb +124 -0
  1184. data/lib/uniword/resource.rb +18 -0
  1185. data/lib/uniword/review/accept_reject.rb +120 -0
  1186. data/lib/uniword/review/interactive_review.rb +233 -0
  1187. data/lib/uniword/review/review_manager.rb +250 -0
  1188. data/lib/uniword/review.rb +19 -0
  1189. data/lib/uniword/revision.rb +8 -8
  1190. data/lib/uniword/schema/model_generator.rb +22 -21
  1191. data/lib/uniword/schema/schema_loader.rb +8 -8
  1192. data/lib/uniword/section.rb +28 -25
  1193. data/lib/uniword/section_properties.rb +15 -13
  1194. data/lib/uniword/serialization/ooxml_serializer.rb +3 -2
  1195. data/lib/uniword/shading.rb +15 -14
  1196. data/lib/uniword/shared_types/angle.rb +3 -3
  1197. data/lib/uniword/shared_types/boolean_value.rb +3 -3
  1198. data/lib/uniword/shared_types/decimal_number.rb +3 -3
  1199. data/lib/uniword/shared_types/emu_measure.rb +3 -3
  1200. data/lib/uniword/shared_types/fixed_percentage.rb +3 -3
  1201. data/lib/uniword/shared_types/hex_color.rb +3 -3
  1202. data/lib/uniword/shared_types/on_off.rb +3 -3
  1203. data/lib/uniword/shared_types/percent_value.rb +3 -3
  1204. data/lib/uniword/shared_types/pixel_measure.rb +3 -3
  1205. data/lib/uniword/shared_types/point_measure.rb +3 -3
  1206. data/lib/uniword/shared_types/positive_percentage.rb +3 -3
  1207. data/lib/uniword/shared_types/string_type.rb +3 -3
  1208. data/lib/uniword/shared_types/text_alignment.rb +3 -3
  1209. data/lib/uniword/shared_types/twips_measure.rb +3 -3
  1210. data/lib/uniword/shared_types/vertical_alignment.rb +3 -3
  1211. data/lib/uniword/shared_types.rb +16 -16
  1212. data/lib/uniword/spellcheck/grammar_checker.rb +135 -0
  1213. data/lib/uniword/spellcheck/hunspell_adapter.rb +100 -0
  1214. data/lib/uniword/spellcheck/spell_checker.rb +160 -0
  1215. data/lib/uniword/spellcheck/spellcheck_result.rb +82 -0
  1216. data/lib/uniword/spellcheck.rb +10 -0
  1217. data/lib/uniword/spreadsheetml/alignment.rb +8 -8
  1218. data/lib/uniword/spreadsheetml/authors.rb +5 -4
  1219. data/lib/uniword/spreadsheetml/auto_filter.rb +7 -6
  1220. data/lib/uniword/spreadsheetml/bold.rb +3 -3
  1221. data/lib/uniword/spreadsheetml/book_views.rb +3 -3
  1222. data/lib/uniword/spreadsheetml/border.rb +7 -7
  1223. data/lib/uniword/spreadsheetml/borders.rb +6 -5
  1224. data/lib/uniword/spreadsheetml/calc_properties.rb +5 -5
  1225. data/lib/uniword/spreadsheetml/cell.rb +7 -7
  1226. data/lib/uniword/spreadsheetml/cell_format.rb +12 -12
  1227. data/lib/uniword/spreadsheetml/cell_formats.rb +4 -4
  1228. data/lib/uniword/spreadsheetml/cell_formula.rb +6 -6
  1229. data/lib/uniword/spreadsheetml/cell_style.rb +8 -8
  1230. data/lib/uniword/spreadsheetml/cell_style_xfs.rb +4 -4
  1231. data/lib/uniword/spreadsheetml/cell_styles.rb +4 -4
  1232. data/lib/uniword/spreadsheetml/cell_value.rb +3 -3
  1233. data/lib/uniword/spreadsheetml/chartsheet.rb +4 -4
  1234. data/lib/uniword/spreadsheetml/col.rb +8 -8
  1235. data/lib/uniword/spreadsheetml/col_breaks.rb +4 -4
  1236. data/lib/uniword/spreadsheetml/color.rb +6 -6
  1237. data/lib/uniword/spreadsheetml/color_filter.rb +4 -4
  1238. data/lib/uniword/spreadsheetml/colors.rb +3 -3
  1239. data/lib/uniword/spreadsheetml/cols.rb +3 -3
  1240. data/lib/uniword/spreadsheetml/comment.rb +5 -5
  1241. data/lib/uniword/spreadsheetml/comment_list.rb +5 -4
  1242. data/lib/uniword/spreadsheetml/comments.rb +4 -4
  1243. data/lib/uniword/spreadsheetml/conditional_formatting.rb +6 -5
  1244. data/lib/uniword/spreadsheetml/conditional_formatting_rule.rb +5 -5
  1245. data/lib/uniword/spreadsheetml/custom_filter.rb +4 -4
  1246. data/lib/uniword/spreadsheetml/custom_filters.rb +6 -5
  1247. data/lib/uniword/spreadsheetml/custom_workbook_views.rb +3 -3
  1248. data/lib/uniword/spreadsheetml/data_validation.rb +13 -13
  1249. data/lib/uniword/spreadsheetml/data_validations.rb +6 -5
  1250. data/lib/uniword/spreadsheetml/date_group_item.rb +9 -9
  1251. data/lib/uniword/spreadsheetml/defined_name.rb +6 -6
  1252. data/lib/uniword/spreadsheetml/defined_names.rb +3 -3
  1253. data/lib/uniword/spreadsheetml/dimension.rb +3 -3
  1254. data/lib/uniword/spreadsheetml/drawing.rb +3 -3
  1255. data/lib/uniword/spreadsheetml/dynamic_filter.rb +5 -5
  1256. data/lib/uniword/spreadsheetml/external_reference.rb +3 -3
  1257. data/lib/uniword/spreadsheetml/external_references.rb +3 -3
  1258. data/lib/uniword/spreadsheetml/file_sharing.rb +3 -3
  1259. data/lib/uniword/spreadsheetml/file_version.rb +4 -4
  1260. data/lib/uniword/spreadsheetml/fill.rb +3 -3
  1261. data/lib/uniword/spreadsheetml/fills.rb +4 -4
  1262. data/lib/uniword/spreadsheetml/filter.rb +3 -3
  1263. data/lib/uniword/spreadsheetml/filter_column.rb +11 -11
  1264. data/lib/uniword/spreadsheetml/filters.rb +8 -7
  1265. data/lib/uniword/spreadsheetml/font.rb +7 -7
  1266. data/lib/uniword/spreadsheetml/font_name.rb +3 -3
  1267. data/lib/uniword/spreadsheetml/font_size.rb +3 -3
  1268. data/lib/uniword/spreadsheetml/fonts.rb +4 -4
  1269. data/lib/uniword/spreadsheetml/hyperlink.rb +7 -7
  1270. data/lib/uniword/spreadsheetml/hyperlinks.rb +3 -3
  1271. data/lib/uniword/spreadsheetml/icon_filter.rb +4 -4
  1272. data/lib/uniword/spreadsheetml/italic.rb +3 -3
  1273. data/lib/uniword/spreadsheetml/legacy_drawing.rb +3 -3
  1274. data/lib/uniword/spreadsheetml/merge_cell.rb +3 -3
  1275. data/lib/uniword/spreadsheetml/merge_cells.rb +4 -4
  1276. data/lib/uniword/spreadsheetml/number_format.rb +4 -4
  1277. data/lib/uniword/spreadsheetml/number_formats.rb +4 -4
  1278. data/lib/uniword/spreadsheetml/ole_object.rb +4 -4
  1279. data/lib/uniword/spreadsheetml/ole_objects.rb +3 -3
  1280. data/lib/uniword/spreadsheetml/ole_size.rb +3 -3
  1281. data/lib/uniword/spreadsheetml/pattern_fill.rb +5 -5
  1282. data/lib/uniword/spreadsheetml/phonetic_pr.rb +10 -10
  1283. data/lib/uniword/spreadsheetml/phonetic_properties.rb +4 -4
  1284. data/lib/uniword/spreadsheetml/pivot_caches.rb +3 -3
  1285. data/lib/uniword/spreadsheetml/pivot_table.rb +4 -4
  1286. data/lib/uniword/spreadsheetml/pivot_table_definition.rb +5 -5
  1287. data/lib/uniword/spreadsheetml/protected_ranges.rb +3 -3
  1288. data/lib/uniword/spreadsheetml/query_table.rb +4 -4
  1289. data/lib/uniword/spreadsheetml/rich_text_run.rb +4 -4
  1290. data/lib/uniword/spreadsheetml/row.rb +8 -8
  1291. data/lib/uniword/spreadsheetml/row_breaks.rb +4 -4
  1292. data/lib/uniword/spreadsheetml/run_properties.rb +6 -6
  1293. data/lib/uniword/spreadsheetml/scenarios.rb +5 -5
  1294. data/lib/uniword/spreadsheetml/shared_string_table.rb +7 -6
  1295. data/lib/uniword/spreadsheetml/sheet.rb +6 -6
  1296. data/lib/uniword/spreadsheetml/sheet_data.rb +3 -3
  1297. data/lib/uniword/spreadsheetml/sheet_format_pr.rb +12 -9
  1298. data/lib/uniword/spreadsheetml/sheet_protection.rb +6 -6
  1299. data/lib/uniword/spreadsheetml/sheet_view.rb +7 -7
  1300. data/lib/uniword/spreadsheetml/sheet_views.rb +3 -3
  1301. data/lib/uniword/spreadsheetml/sheets.rb +3 -3
  1302. data/lib/uniword/spreadsheetml/sort_condition.rb +9 -9
  1303. data/lib/uniword/spreadsheetml/sort_state.rb +6 -5
  1304. data/lib/uniword/spreadsheetml/sparkline_group.rb +4 -4
  1305. data/lib/uniword/spreadsheetml/sparkline_groups.rb +5 -4
  1306. data/lib/uniword/spreadsheetml/string_item.rb +5 -5
  1307. data/lib/uniword/spreadsheetml/table.rb +9 -9
  1308. data/lib/uniword/spreadsheetml/table_column.rb +4 -4
  1309. data/lib/uniword/spreadsheetml/table_columns.rb +4 -4
  1310. data/lib/uniword/spreadsheetml/table_formula.rb +3 -3
  1311. data/lib/uniword/spreadsheetml/table_parts.rb +4 -4
  1312. data/lib/uniword/spreadsheetml/table_style_info.rb +7 -7
  1313. data/lib/uniword/spreadsheetml/table_styles.rb +6 -5
  1314. data/lib/uniword/spreadsheetml/text.rb +4 -4
  1315. data/lib/uniword/spreadsheetml/top10.rb +6 -6
  1316. data/lib/uniword/spreadsheetml/workbook.rb +7 -7
  1317. data/lib/uniword/spreadsheetml/workbook_properties.rb +5 -5
  1318. data/lib/uniword/spreadsheetml/workbook_protection.rb +4 -4
  1319. data/lib/uniword/spreadsheetml/workbook_view.rb +5 -5
  1320. data/lib/uniword/spreadsheetml/worksheet/sheet_format_pr.rb +12 -9
  1321. data/lib/uniword/spreadsheetml/worksheet.rb +8 -8
  1322. data/lib/uniword/spreadsheetml.rb +108 -105
  1323. data/lib/uniword/streaming_parser.rb +21 -21
  1324. data/lib/uniword/styles.rb +12 -7
  1325. data/lib/uniword/styleset.rb +12 -12
  1326. data/lib/uniword/stylesets/package.rb +13 -9
  1327. data/lib/uniword/stylesets/styleset_importer.rb +10 -10
  1328. data/lib/uniword/stylesets/yaml_styleset_loader.rb +4 -4
  1329. data/lib/uniword/tab_stop.rb +13 -12
  1330. data/lib/uniword/table_border.rb +16 -15
  1331. data/lib/uniword/template/helpers/conditional_helper.rb +2 -1
  1332. data/lib/uniword/template/helpers/filter_helper.rb +20 -17
  1333. data/lib/uniword/template/template.rb +4 -2
  1334. data/lib/uniword/template/template_parser.rb +5 -5
  1335. data/lib/uniword/template/template_validator.rb +5 -4
  1336. data/lib/uniword/template/variable_resolver.rb +10 -10
  1337. data/lib/uniword/template_manager.rb +163 -0
  1338. data/lib/uniword/text_box.rb +5 -4
  1339. data/lib/uniword/text_frame.rb +16 -16
  1340. data/lib/uniword/theme/media_file.rb +18 -12
  1341. data/lib/uniword/theme/theme_applicator.rb +13 -12
  1342. data/lib/uniword/theme/theme_package_reader.rb +5 -5
  1343. data/lib/uniword/theme/theme_xml_parser.rb +67 -56
  1344. data/lib/uniword/theme_writer.rb +1 -1
  1345. data/lib/uniword/themes/theme.rb +29 -21
  1346. data/lib/uniword/themes/theme_importer.rb +24 -24
  1347. data/lib/uniword/themes/theme_transformation.rb +41 -13
  1348. data/lib/uniword/toc/toc_entry.rb +73 -0
  1349. data/lib/uniword/toc/toc_generator.rb +302 -0
  1350. data/lib/uniword/toc.rb +16 -0
  1351. data/lib/uniword/tracked_changes.rb +8 -7
  1352. data/lib/uniword/transformation/html_element_builder.rb +445 -0
  1353. data/lib/uniword/transformation/html_formatting_mapper.rb +245 -0
  1354. data/lib/uniword/transformation/html_to_ooxml_converter.rb +48 -457
  1355. data/lib/uniword/transformation/hyperlink_transformation_rule.rb +2 -2
  1356. data/lib/uniword/transformation/image_transformation_rule.rb +1 -1
  1357. data/lib/uniword/transformation/mhtml_element_renderer.rb +626 -0
  1358. data/lib/uniword/transformation/mhtml_metadata_builder.rb +233 -0
  1359. data/lib/uniword/transformation/mhtml_style_builder.rb +713 -0
  1360. data/lib/uniword/transformation/ooxml_to_html_converter.rb +19 -19
  1361. data/lib/uniword/transformation/ooxml_to_mhtml_converter.rb +182 -1278
  1362. data/lib/uniword/transformation/paragraph_transformation_rule.rb +10 -10
  1363. data/lib/uniword/transformation/run_transformation_rule.rb +1 -1
  1364. data/lib/uniword/transformation/table_transformation_rule.rb +3 -3
  1365. data/lib/uniword/transformation/transformation_rule_registry.rb +1 -1
  1366. data/lib/uniword/transformation/transformer.rb +41 -46
  1367. data/lib/uniword/transformation.rb +31 -11
  1368. data/lib/uniword/validation/checkers/external_link_checker.rb +30 -18
  1369. data/lib/uniword/validation/checkers/file_reference_checker.rb +25 -17
  1370. data/lib/uniword/validation/checkers/footnote_reference_checker.rb +19 -11
  1371. data/lib/uniword/validation/checkers/internal_link_checker.rb +19 -11
  1372. data/lib/uniword/validation/checkers.rb +4 -2
  1373. data/lib/uniword/validation/document_validator.rb +12 -12
  1374. data/lib/uniword/validation/layer_validation_result.rb +3 -3
  1375. data/lib/uniword/validation/layer_validator.rb +5 -5
  1376. data/lib/uniword/validation/link_validator.rb +8 -8
  1377. data/lib/uniword/validation/opc_validator.rb +229 -0
  1378. data/lib/uniword/validation/report/layer_result.rb +59 -0
  1379. data/lib/uniword/validation/report/terminal_formatter.rb +102 -0
  1380. data/lib/uniword/validation/report/validation_issue.rb +56 -0
  1381. data/lib/uniword/validation/report/verification_report.rb +66 -0
  1382. data/lib/uniword/validation/rules/base.rb +100 -0
  1383. data/lib/uniword/validation/rules/bookmarks_rule.rb +84 -0
  1384. data/lib/uniword/validation/rules/content_types_coverage_rule.rb +64 -0
  1385. data/lib/uniword/validation/rules/core_properties_namespace_rule.rb +86 -0
  1386. data/lib/uniword/validation/rules/document_context.rb +197 -0
  1387. data/lib/uniword/validation/rules/font_table_signature_rule.rb +55 -0
  1388. data/lib/uniword/validation/rules/fonts_rule.rb +64 -0
  1389. data/lib/uniword/validation/rules/footnotes_rule.rb +164 -0
  1390. data/lib/uniword/validation/rules/headers_footers_rule.rb +91 -0
  1391. data/lib/uniword/validation/rules/images_rule.rb +115 -0
  1392. data/lib/uniword/validation/rules/mc_ignorable_namespace_rule.rb +82 -0
  1393. data/lib/uniword/validation/rules/numbering_preservation_rule.rb +139 -0
  1394. data/lib/uniword/validation/rules/numbering_rule.rb +81 -0
  1395. data/lib/uniword/validation/rules/registry.rb +69 -0
  1396. data/lib/uniword/validation/rules/relationship_integrity_rule.rb +85 -0
  1397. data/lib/uniword/validation/rules/rsid_rule.rb +65 -0
  1398. data/lib/uniword/validation/rules/section_properties_rule.rb +72 -0
  1399. data/lib/uniword/validation/rules/settings_rule.rb +76 -0
  1400. data/lib/uniword/validation/rules/settings_values_rule.rb +76 -0
  1401. data/lib/uniword/validation/rules/style_references_rule.rb +98 -0
  1402. data/lib/uniword/validation/rules/tables_rule.rb +69 -0
  1403. data/lib/uniword/validation/rules/theme_completeness_rule.rb +72 -0
  1404. data/lib/uniword/validation/rules/theme_rule.rb +88 -0
  1405. data/lib/uniword/validation/rules.rb +47 -0
  1406. data/lib/uniword/validation/schema_registry.rb +200 -0
  1407. data/lib/uniword/validation/structural_validator.rb +116 -0
  1408. data/lib/uniword/validation/validation_report.rb +18 -18
  1409. data/lib/uniword/validation/validation_result.rb +3 -3
  1410. data/lib/uniword/validation/validators/content_type_validator.rb +28 -22
  1411. data/lib/uniword/validation/validators/document_semantics_validator.rb +42 -123
  1412. data/lib/uniword/validation/validators/file_structure_validator.rb +10 -7
  1413. data/lib/uniword/validation/validators/ooxml_part_validator.rb +19 -19
  1414. data/lib/uniword/validation/validators/relationship_validator.rb +22 -21
  1415. data/lib/uniword/validation/validators/xml_schema_validator.rb +110 -73
  1416. data/lib/uniword/validation/validators/zip_integrity_validator.rb +8 -8
  1417. data/lib/uniword/validation/validators.rb +10 -5
  1418. data/lib/uniword/validation/verify_orchestrator.rb +171 -0
  1419. data/lib/uniword/validation.rb +3 -1
  1420. data/lib/uniword/validators/element_validator.rb +11 -9
  1421. data/lib/uniword/validators/paragraph_validator.rb +5 -11
  1422. data/lib/uniword/validators/table_validator.rb +6 -12
  1423. data/lib/uniword/version.rb +1 -1
  1424. data/lib/uniword/visitor/text_extractor.rb +6 -6
  1425. data/lib/uniword/vml/arc.rb +13 -13
  1426. data/lib/uniword/vml/background.rb +9 -9
  1427. data/lib/uniword/vml/curve.rb +11 -11
  1428. data/lib/uniword/vml/fill.rb +8 -8
  1429. data/lib/uniword/vml/formula.rb +3 -3
  1430. data/lib/uniword/vml/formulas.rb +3 -3
  1431. data/lib/uniword/vml/group.rb +7 -7
  1432. data/lib/uniword/vml/handle.rb +11 -11
  1433. data/lib/uniword/vml/handles.rb +3 -3
  1434. data/lib/uniword/vml/image.rb +16 -16
  1435. data/lib/uniword/vml/imagedata.rb +14 -9
  1436. data/lib/uniword/vml/line.rb +10 -10
  1437. data/lib/uniword/vml/oval.rb +11 -11
  1438. data/lib/uniword/vml/path.rb +6 -6
  1439. data/lib/uniword/vml/polyline.rb +9 -9
  1440. data/lib/uniword/vml/rect.rb +11 -11
  1441. data/lib/uniword/vml/roundrect.rb +12 -12
  1442. data/lib/uniword/vml/shadow.rb +9 -9
  1443. data/lib/uniword/vml/shape.rb +22 -22
  1444. data/lib/uniword/vml/shapetype.rb +10 -10
  1445. data/lib/uniword/vml/stroke.rb +9 -9
  1446. data/lib/uniword/vml/textbox.rb +5 -5
  1447. data/lib/uniword/vml/textpath.rb +5 -5
  1448. data/lib/uniword/vml/wrap.rb +4 -4
  1449. data/lib/uniword/vml.rb +24 -24
  1450. data/lib/uniword/vml_office/vml_anchor_lock.rb +3 -3
  1451. data/lib/uniword/vml_office/vml_bottom.rb +4 -4
  1452. data/lib/uniword/vml_office/vml_callout.rb +10 -10
  1453. data/lib/uniword/vml_office/vml_clip_path.rb +4 -4
  1454. data/lib/uniword/vml_office/vml_color_mru.rb +4 -4
  1455. data/lib/uniword/vml_office/vml_column.rb +4 -4
  1456. data/lib/uniword/vml_office/vml_complex.rb +3 -3
  1457. data/lib/uniword/vml_office/vml_complex_extension.rb +4 -4
  1458. data/lib/uniword/vml_office/vml_diagram.rb +8 -8
  1459. data/lib/uniword/vml_office/vml_entry.rb +4 -4
  1460. data/lib/uniword/vml_office/vml_extrusion.rb +14 -14
  1461. data/lib/uniword/vml_office/vml_id_map.rb +4 -4
  1462. data/lib/uniword/vml_office/vml_ink.rb +5 -5
  1463. data/lib/uniword/vml_office/vml_left.rb +4 -4
  1464. data/lib/uniword/vml_office/vml_lock.rb +11 -11
  1465. data/lib/uniword/vml_office/vml_office_fill.rb +8 -8
  1466. data/lib/uniword/vml_office/vml_proxy.rb +6 -6
  1467. data/lib/uniword/vml_office/vml_regroup.rb +3 -3
  1468. data/lib/uniword/vml_office/vml_relation_table.rb +4 -4
  1469. data/lib/uniword/vml_office/vml_right.rb +4 -4
  1470. data/lib/uniword/vml_office/vml_rule.rb +5 -5
  1471. data/lib/uniword/vml_office/vml_rules.rb +4 -4
  1472. data/lib/uniword/vml_office/vml_shape_defaults.rb +9 -9
  1473. data/lib/uniword/vml_office/vml_shape_layout.rb +12 -12
  1474. data/lib/uniword/vml_office/vml_signature_line.rb +11 -11
  1475. data/lib/uniword/vml_office/vml_skew.rb +7 -7
  1476. data/lib/uniword/vml_office/vml_top.rb +4 -4
  1477. data/lib/uniword/vml_office/vml_wrap_block.rb +4 -4
  1478. data/lib/uniword/vml_office/vml_wrap_coords.rb +3 -3
  1479. data/lib/uniword/vml_office.rb +31 -31
  1480. data/lib/uniword/vml_word/border_bottom.rb +7 -7
  1481. data/lib/uniword/vml_word/border_left.rb +7 -7
  1482. data/lib/uniword/vml_word/border_right.rb +7 -7
  1483. data/lib/uniword/vml_word/border_top.rb +7 -7
  1484. data/lib/uniword/vml_word.rb +4 -4
  1485. data/lib/uniword/warnings/warning.rb +1 -1
  1486. data/lib/uniword/warnings/warning_collector.rb +9 -9
  1487. data/lib/uniword/warnings/warning_report.rb +6 -6
  1488. data/lib/uniword/watermark/manager.rb +119 -0
  1489. data/lib/uniword/watermark.rb +11 -0
  1490. data/lib/uniword/word2010_ext/wrap.rb +4 -4
  1491. data/lib/uniword/word2010_ext.rb +2 -2
  1492. data/lib/uniword/word_implementation.rb +12 -4
  1493. data/lib/uniword/word_implementation_factory.rb +1 -1
  1494. data/lib/uniword/word_implementation_linux.rb +7 -7
  1495. data/lib/uniword/word_implementation_macos.rb +8 -8
  1496. data/lib/uniword/word_implementation_null.rb +1 -1
  1497. data/lib/uniword/word_implementation_windows.rb +22 -17
  1498. data/lib/uniword/wordprocessing_group.rb +5 -5
  1499. data/lib/uniword/wordprocessing_shape.rb +10 -10
  1500. data/lib/uniword/wordprocessingml/abstract_num.rb +5 -5
  1501. data/lib/uniword/wordprocessingml/abstract_num_id.rb +3 -3
  1502. data/lib/uniword/wordprocessingml/alternate_content.rb +4 -4
  1503. data/lib/uniword/wordprocessingml/anchor.rb +9 -9
  1504. data/lib/uniword/wordprocessingml/based_on.rb +3 -3
  1505. data/lib/uniword/wordprocessingml/body.rb +38 -14
  1506. data/lib/uniword/wordprocessingml/bookmark_end.rb +5 -3
  1507. data/lib/uniword/wordprocessingml/bookmark_start.rb +6 -4
  1508. data/lib/uniword/wordprocessingml/border.rb +7 -7
  1509. data/lib/uniword/wordprocessingml/break.rb +4 -4
  1510. data/lib/uniword/wordprocessingml/carriage_return.rb +2 -2
  1511. data/lib/uniword/wordprocessingml/character_style.rb +64 -63
  1512. data/lib/uniword/wordprocessingml/choice.rb +4 -4
  1513. data/lib/uniword/wordprocessingml/cnf_style.rb +15 -15
  1514. data/lib/uniword/wordprocessingml/columns.rb +5 -5
  1515. data/lib/uniword/wordprocessingml/comment_range_end.rb +3 -3
  1516. data/lib/uniword/wordprocessingml/comment_range_start.rb +3 -3
  1517. data/lib/uniword/wordprocessingml/comment_reference.rb +3 -3
  1518. data/lib/uniword/wordprocessingml/compat.rb +7 -6
  1519. data/lib/uniword/wordprocessingml/compat_setting.rb +5 -5
  1520. data/lib/uniword/wordprocessingml/deleted_text.rb +3 -3
  1521. data/lib/uniword/wordprocessingml/doc_defaults.rb +4 -4
  1522. data/lib/uniword/wordprocessingml/doc_grid.rb +5 -5
  1523. data/lib/uniword/wordprocessingml/doc_pr.rb +5 -5
  1524. data/lib/uniword/wordprocessingml/document_root/feature_facade.rb +317 -0
  1525. data/lib/uniword/wordprocessingml/document_root.rb +145 -30
  1526. data/lib/uniword/wordprocessingml/drawing.rb +4 -4
  1527. data/lib/uniword/wordprocessingml/emboss.rb +3 -3
  1528. data/lib/uniword/wordprocessingml/endnote.rb +5 -5
  1529. data/lib/uniword/wordprocessingml/endnote_ref.rb +2 -2
  1530. data/lib/uniword/wordprocessingml/endnote_reference.rb +3 -3
  1531. data/lib/uniword/wordprocessingml/endnotes.rb +5 -4
  1532. data/lib/uniword/wordprocessingml/extent.rb +4 -4
  1533. data/lib/uniword/wordprocessingml/fallback.rb +4 -4
  1534. data/lib/uniword/wordprocessingml/field_char.rb +4 -4
  1535. data/lib/uniword/wordprocessingml/font.rb +36 -26
  1536. data/lib/uniword/wordprocessingml/font_table.rb +23 -5
  1537. data/lib/uniword/wordprocessingml/fonts.rb +3 -3
  1538. data/lib/uniword/wordprocessingml/footer.rb +4 -4
  1539. data/lib/uniword/wordprocessingml/footer_reference.rb +6 -8
  1540. data/lib/uniword/wordprocessingml/footnote.rb +5 -5
  1541. data/lib/uniword/wordprocessingml/footnote_ref.rb +2 -2
  1542. data/lib/uniword/wordprocessingml/footnote_reference.rb +3 -3
  1543. data/lib/uniword/wordprocessingml/footnotes.rb +5 -4
  1544. data/lib/uniword/wordprocessingml/graphic.rb +3 -3
  1545. data/lib/uniword/wordprocessingml/graphic_data.rb +3 -3
  1546. data/lib/uniword/wordprocessingml/grid_after.rb +3 -3
  1547. data/lib/uniword/wordprocessingml/grid_before.rb +3 -3
  1548. data/lib/uniword/wordprocessingml/grid_col.rb +3 -3
  1549. data/lib/uniword/wordprocessingml/header.rb +4 -4
  1550. data/lib/uniword/wordprocessingml/header_reference.rb +6 -8
  1551. data/lib/uniword/wordprocessingml/hide_mark.rb +20 -0
  1552. data/lib/uniword/wordprocessingml/hyperlink.rb +14 -32
  1553. data/lib/uniword/wordprocessingml/imprint.rb +3 -3
  1554. data/lib/uniword/wordprocessingml/inline.rb +5 -5
  1555. data/lib/uniword/wordprocessingml/instr_text.rb +7 -6
  1556. data/lib/uniword/wordprocessingml/last_rendered_page_break.rb +2 -2
  1557. data/lib/uniword/wordprocessingml/latent_styles.rb +16 -16
  1558. data/lib/uniword/wordprocessingml/level.rb +50 -16
  1559. data/lib/uniword/wordprocessingml/link.rb +3 -3
  1560. data/lib/uniword/wordprocessingml/lvl_jc.rb +3 -3
  1561. data/lib/uniword/wordprocessingml/lvl_text.rb +3 -3
  1562. data/lib/uniword/wordprocessingml/mc_requires.rb +1 -1
  1563. data/lib/uniword/wordprocessingml/multi_level_type.rb +3 -3
  1564. data/lib/uniword/wordprocessingml/next.rb +3 -3
  1565. data/lib/uniword/wordprocessingml/no_break_hyphen.rb +2 -2
  1566. data/lib/uniword/wordprocessingml/no_wrap.rb +2 -2
  1567. data/lib/uniword/wordprocessingml/num.rb +7 -4
  1568. data/lib/uniword/wordprocessingml/num_fmt.rb +3 -3
  1569. data/lib/uniword/wordprocessingml/numbering.rb +29 -5
  1570. data/lib/uniword/wordprocessingml/numbering_configuration.rb +29 -9
  1571. data/lib/uniword/wordprocessingml/numbering_definition.rb +37 -27
  1572. data/lib/uniword/wordprocessingml/numbering_elements.rb +14 -14
  1573. data/lib/uniword/wordprocessingml/numbering_instance.rb +40 -8
  1574. data/lib/uniword/wordprocessingml/numbering_level.rb +9 -8
  1575. data/lib/uniword/wordprocessingml/object.rb +4 -4
  1576. data/lib/uniword/wordprocessingml/outline.rb +3 -3
  1577. data/lib/uniword/wordprocessingml/p_pr_default.rb +3 -3
  1578. data/lib/uniword/wordprocessingml/page_margins.rb +9 -9
  1579. data/lib/uniword/wordprocessingml/page_numbering.rb +6 -4
  1580. data/lib/uniword/wordprocessingml/page_size.rb +7 -5
  1581. data/lib/uniword/wordprocessingml/paragraph.rb +33 -75
  1582. data/lib/uniword/wordprocessingml/paragraph_borders.rb +9 -11
  1583. data/lib/uniword/wordprocessingml/paragraph_properties.rb +108 -119
  1584. data/lib/uniword/wordprocessingml/paragraph_style.rb +66 -59
  1585. data/lib/uniword/wordprocessingml/pict.rb +3 -3
  1586. data/lib/uniword/wordprocessingml/picture.rb +4 -4
  1587. data/lib/uniword/wordprocessingml/position_tab.rb +5 -5
  1588. data/lib/uniword/wordprocessingml/proof_err.rb +3 -3
  1589. data/lib/uniword/wordprocessingml/r_pr_default.rb +3 -3
  1590. data/lib/uniword/wordprocessingml/recipient_data.rb +5 -5
  1591. data/lib/uniword/wordprocessingml/recipients.rb +5 -4
  1592. data/lib/uniword/wordprocessingml/run.rb +34 -28
  1593. data/lib/uniword/wordprocessingml/run_properties/accessors.rb +74 -0
  1594. data/lib/uniword/wordprocessingml/run_properties/conversion.rb +167 -0
  1595. data/lib/uniword/wordprocessingml/run_properties/predicates.rb +96 -0
  1596. data/lib/uniword/wordprocessingml/run_properties/yaml_transforms.rb +205 -0
  1597. data/lib/uniword/wordprocessingml/run_properties.rb +89 -598
  1598. data/lib/uniword/wordprocessingml/section_properties.rb +29 -19
  1599. data/lib/uniword/wordprocessingml/semi_hidden.rb +3 -3
  1600. data/lib/uniword/wordprocessingml/settings.rb +174 -136
  1601. data/lib/uniword/wordprocessingml/shading.rb +7 -7
  1602. data/lib/uniword/wordprocessingml/shadow.rb +3 -3
  1603. data/lib/uniword/wordprocessingml/shape.rb +5 -5
  1604. data/lib/uniword/wordprocessingml/simple_field.rb +5 -5
  1605. data/lib/uniword/wordprocessingml/simple_pos.rb +4 -4
  1606. data/lib/uniword/wordprocessingml/soft_hyphen.rb +2 -2
  1607. data/lib/uniword/wordprocessingml/start.rb +3 -3
  1608. data/lib/uniword/wordprocessingml/structured_document_tag/alias.rb +3 -3
  1609. data/lib/uniword/wordprocessingml/structured_document_tag/appearance.rb +3 -3
  1610. data/lib/uniword/wordprocessingml/structured_document_tag/bibliography.rb +2 -2
  1611. data/lib/uniword/wordprocessingml/structured_document_tag/content.rb +19 -10
  1612. data/lib/uniword/wordprocessingml/structured_document_tag/data_binding.rb +6 -5
  1613. data/lib/uniword/wordprocessingml/structured_document_tag/date.rb +16 -15
  1614. data/lib/uniword/wordprocessingml/structured_document_tag/doc_part_obj.rb +11 -10
  1615. data/lib/uniword/wordprocessingml/structured_document_tag/end_properties.rb +3 -3
  1616. data/lib/uniword/wordprocessingml/structured_document_tag/id.rb +3 -3
  1617. data/lib/uniword/wordprocessingml/structured_document_tag/placeholder.rb +5 -5
  1618. data/lib/uniword/wordprocessingml/structured_document_tag/run_properties.rb +31 -31
  1619. data/lib/uniword/wordprocessingml/structured_document_tag/showing_placeholder_header.rb +2 -2
  1620. data/lib/uniword/wordprocessingml/structured_document_tag/tag.rb +3 -3
  1621. data/lib/uniword/wordprocessingml/structured_document_tag/temporary.rb +2 -2
  1622. data/lib/uniword/wordprocessingml/structured_document_tag/text.rb +5 -2
  1623. data/lib/uniword/wordprocessingml/structured_document_tag.rb +15 -10
  1624. data/lib/uniword/wordprocessingml/structured_document_tag_properties.rb +17 -16
  1625. data/lib/uniword/wordprocessingml/style.rb +48 -171
  1626. data/lib/uniword/wordprocessingml/style_name.rb +3 -3
  1627. data/lib/uniword/wordprocessingml/styles/list_style_definition.rb +2 -2
  1628. data/lib/uniword/wordprocessingml/styles/paragraph_style_definition.rb +3 -2
  1629. data/lib/uniword/wordprocessingml/styles/style_definition.rb +1 -1
  1630. data/lib/uniword/wordprocessingml/styles/style_library.rb +1 -1
  1631. data/lib/uniword/wordprocessingml/styles/table_style_definition.rb +7 -5
  1632. data/lib/uniword/wordprocessingml/styles.rb +4 -2
  1633. data/lib/uniword/wordprocessingml/styles_configuration.rb +47 -19
  1634. data/lib/uniword/wordprocessingml/symbol.rb +4 -4
  1635. data/lib/uniword/wordprocessingml/tab.rb +4 -4
  1636. data/lib/uniword/wordprocessingml/tab_stop.rb +5 -37
  1637. data/lib/uniword/wordprocessingml/table.rb +8 -7
  1638. data/lib/uniword/wordprocessingml/table_borders.rb +8 -8
  1639. data/lib/uniword/wordprocessingml/table_cell.rb +8 -38
  1640. data/lib/uniword/wordprocessingml/table_cell_borders.rb +6 -6
  1641. data/lib/uniword/wordprocessingml/table_cell_margin.rb +7 -7
  1642. data/lib/uniword/wordprocessingml/table_cell_properties.rb +14 -28
  1643. data/lib/uniword/wordprocessingml/table_grid.rb +3 -3
  1644. data/lib/uniword/wordprocessingml/table_properties.rb +18 -253
  1645. data/lib/uniword/wordprocessingml/table_row.rb +9 -25
  1646. data/lib/uniword/wordprocessingml/table_row_properties.rb +13 -9
  1647. data/lib/uniword/wordprocessingml/table_style.rb +3 -3
  1648. data/lib/uniword/wordprocessingml/text.rb +6 -13
  1649. data/lib/uniword/wordprocessingml/text_box_content.rb +7 -6
  1650. data/lib/uniword/wordprocessingml/text_direction.rb +3 -3
  1651. data/lib/uniword/wordprocessingml/title_pg.rb +20 -0
  1652. data/lib/uniword/wordprocessingml/tr_height.rb +4 -4
  1653. data/lib/uniword/wordprocessingml/ui_priority.rb +3 -3
  1654. data/lib/uniword/wordprocessingml/val_int.rb +3 -3
  1655. data/lib/uniword/wordprocessingml/w14_attributes.rb +1 -1
  1656. data/lib/uniword/wordprocessingml/web_settings.rb +30 -7
  1657. data/lib/uniword/wordprocessingml/width_after.rb +4 -4
  1658. data/lib/uniword/wordprocessingml/width_before.rb +4 -4
  1659. data/lib/uniword/wordprocessingml/zoom.rb +3 -3
  1660. data/lib/uniword/wordprocessingml.rb +209 -197
  1661. data/lib/uniword/wordprocessingml_2010/checkbox.rb +5 -5
  1662. data/lib/uniword/wordprocessingml_2010/checked_state.rb +4 -4
  1663. data/lib/uniword/wordprocessingml_2010/conditional_format_style.rb +7 -7
  1664. data/lib/uniword/wordprocessingml_2010/conflict_deletion.rb +5 -5
  1665. data/lib/uniword/wordprocessingml_2010/conflict_insertion.rb +5 -5
  1666. data/lib/uniword/wordprocessingml_2010/conflict_mode.rb +3 -3
  1667. data/lib/uniword/wordprocessingml_2010/custom_xml_conflict_insertion.rb +4 -4
  1668. data/lib/uniword/wordprocessingml_2010/doc_id.rb +3 -3
  1669. data/lib/uniword/wordprocessingml_2010/doc_part_gallery.rb +3 -3
  1670. data/lib/uniword/wordprocessingml_2010/doc_part_obj.rb +5 -5
  1671. data/lib/uniword/wordprocessingml_2010/entity_picker.rb +3 -3
  1672. data/lib/uniword/wordprocessingml_2010/ligatures.rb +3 -3
  1673. data/lib/uniword/wordprocessingml_2010/number_form.rb +3 -3
  1674. data/lib/uniword/wordprocessingml_2010/para_id.rb +3 -3
  1675. data/lib/uniword/wordprocessingml_2010/props3d.rb +5 -5
  1676. data/lib/uniword/wordprocessingml_2010/sdt_content.rb +3 -3
  1677. data/lib/uniword/wordprocessingml_2010/sdt_properties.rb +5 -5
  1678. data/lib/uniword/wordprocessingml_2010/structured_document_tag.rb +4 -4
  1679. data/lib/uniword/wordprocessingml_2010/text_fill.rb +5 -5
  1680. data/lib/uniword/wordprocessingml_2010/text_glow.rb +4 -4
  1681. data/lib/uniword/wordprocessingml_2010/text_id.rb +3 -3
  1682. data/lib/uniword/wordprocessingml_2010/text_outline.rb +6 -6
  1683. data/lib/uniword/wordprocessingml_2010/text_reflection.rb +6 -6
  1684. data/lib/uniword/wordprocessingml_2010/text_shadow.rb +6 -6
  1685. data/lib/uniword/wordprocessingml_2010/unchecked_state.rb +4 -4
  1686. data/lib/uniword/wordprocessingml_2010.rb +30 -26
  1687. data/lib/uniword/wordprocessingml_2013/chart_props.rb +4 -4
  1688. data/lib/uniword/wordprocessingml_2013/chart_tracking_ref_based.rb +3 -3
  1689. data/lib/uniword/wordprocessingml_2013/comment_author.rb +5 -5
  1690. data/lib/uniword/wordprocessingml_2013/comment_collapsed.rb +3 -3
  1691. data/lib/uniword/wordprocessingml_2013/comment_done.rb +3 -3
  1692. data/lib/uniword/wordprocessingml_2013/comment_ex.rb +5 -5
  1693. data/lib/uniword/wordprocessingml_2013/comments_ids.rb +3 -3
  1694. data/lib/uniword/wordprocessingml_2013/doc_part_anchor.rb +3 -3
  1695. data/lib/uniword/wordprocessingml_2013/document_part.rb +3 -3
  1696. data/lib/uniword/wordprocessingml_2013/footnote_columns.rb +3 -3
  1697. data/lib/uniword/wordprocessingml_2013/people_group.rb +4 -4
  1698. data/lib/uniword/wordprocessingml_2013/person.rb +5 -5
  1699. data/lib/uniword/wordprocessingml_2013/presence_info.rb +4 -4
  1700. data/lib/uniword/wordprocessingml_2013/repeating_section.rb +4 -4
  1701. data/lib/uniword/wordprocessingml_2013/repeating_section_item.rb +3 -3
  1702. data/lib/uniword/wordprocessingml_2013/sdt_appearance.rb +3 -3
  1703. data/lib/uniword/wordprocessingml_2013/sdt_color.rb +3 -3
  1704. data/lib/uniword/wordprocessingml_2013/sdt_data_binding.rb +4 -4
  1705. data/lib/uniword/wordprocessingml_2013/web_extension.rb +3 -3
  1706. data/lib/uniword/wordprocessingml_2013/web_extension_linked.rb +3 -3
  1707. data/lib/uniword/wordprocessingml_2013.rb +26 -21
  1708. data/lib/uniword/wordprocessingml_2016/cell_rsid.rb +3 -3
  1709. data/lib/uniword/wordprocessingml_2016/chart_color_style.rb +3 -3
  1710. data/lib/uniword/wordprocessingml_2016/chart_style2016.rb +3 -3
  1711. data/lib/uniword/wordprocessingml_2016/comments_ext.rb +4 -4
  1712. data/lib/uniword/wordprocessingml_2016/conflict_mode2016.rb +3 -3
  1713. data/lib/uniword/wordprocessingml_2016/content_id.rb +3 -3
  1714. data/lib/uniword/wordprocessingml_2016/data_binding2016.rb +5 -5
  1715. data/lib/uniword/wordprocessingml_2016/extension.rb +4 -4
  1716. data/lib/uniword/wordprocessingml_2016/extension_list.rb +3 -3
  1717. data/lib/uniword/wordprocessingml_2016/persistent_document_id.rb +3 -3
  1718. data/lib/uniword/wordprocessingml_2016/row_rsid.rb +3 -3
  1719. data/lib/uniword/wordprocessingml_2016/sdt_appearance2016.rb +3 -3
  1720. data/lib/uniword/wordprocessingml_2016/separator_extension.rb +3 -3
  1721. data/lib/uniword/wordprocessingml_2016/table_rsid.rb +3 -3
  1722. data/lib/uniword/wordprocessingml_2016/web_video_property.rb +4 -4
  1723. data/lib/uniword/wordprocessingml_2016.rb +21 -16
  1724. data/lib/uniword/wp_drawing/align.rb +3 -3
  1725. data/lib/uniword/wp_drawing/allow_overlap.rb +3 -3
  1726. data/lib/uniword/wp_drawing/anchor.rb +29 -27
  1727. data/lib/uniword/wp_drawing/behind_doc.rb +3 -3
  1728. data/lib/uniword/wp_drawing/c_nv_graphic_frame_pr.rb +5 -5
  1729. data/lib/uniword/wp_drawing/doc_pr.rb +7 -7
  1730. data/lib/uniword/wp_drawing/doc_properties.rb +8 -6
  1731. data/lib/uniword/wp_drawing/effect_extent.rb +6 -6
  1732. data/lib/uniword/wp_drawing/extent.rb +4 -4
  1733. data/lib/uniword/wp_drawing/hidden.rb +3 -3
  1734. data/lib/uniword/wp_drawing/inline.rb +16 -11
  1735. data/lib/uniword/wp_drawing/layout_in_cell.rb +3 -3
  1736. data/lib/uniword/wp_drawing/line_to.rb +4 -4
  1737. data/lib/uniword/wp_drawing/locked.rb +3 -3
  1738. data/lib/uniword/wp_drawing/non_visual_drawing_props.rb +6 -4
  1739. data/lib/uniword/wp_drawing/pos_offset.rb +3 -3
  1740. data/lib/uniword/wp_drawing/position_h.rb +5 -5
  1741. data/lib/uniword/wp_drawing/position_v.rb +5 -5
  1742. data/lib/uniword/wp_drawing/relative_height.rb +3 -3
  1743. data/lib/uniword/wp_drawing/simple_pos.rb +4 -4
  1744. data/lib/uniword/wp_drawing/size_rel_h.rb +4 -4
  1745. data/lib/uniword/wp_drawing/size_rel_v.rb +4 -4
  1746. data/lib/uniword/wp_drawing/start.rb +4 -4
  1747. data/lib/uniword/wp_drawing/wrap_none.rb +2 -2
  1748. data/lib/uniword/wp_drawing/wrap_polygon.rb +5 -5
  1749. data/lib/uniword/wp_drawing/wrap_square.rb +8 -8
  1750. data/lib/uniword/wp_drawing/wrap_through.rb +6 -6
  1751. data/lib/uniword/wp_drawing/wrap_tight.rb +6 -6
  1752. data/lib/uniword/wp_drawing/wrap_top_and_bottom.rb +5 -5
  1753. data/lib/uniword/wp_drawing.rb +30 -29
  1754. data/lib/uniword.rb +139 -121
  1755. metadata +583 -41
  1756. data/lib/uniword/document_properties/app_version.rb +0 -22
  1757. data/lib/uniword/document_properties/application.rb +0 -22
  1758. data/lib/uniword/document_properties/bool_value.rb +0 -22
  1759. data/lib/uniword/document_properties/company.rb +0 -22
  1760. data/lib/uniword/document_properties/custom_properties.rb +0 -23
  1761. data/lib/uniword/document_properties/custom_property.rb +0 -37
  1762. data/lib/uniword/document_properties/doc_security.rb +0 -22
  1763. data/lib/uniword/document_properties/extended_properties.rb +0 -41
  1764. data/lib/uniword/document_properties/file_time.rb +0 -22
  1765. data/lib/uniword/document_properties/heading_pairs.rb +0 -23
  1766. data/lib/uniword/document_properties/hyperlinks_changed.rb +0 -22
  1767. data/lib/uniword/document_properties/i4.rb +0 -22
  1768. data/lib/uniword/document_properties/links_up_to_date.rb +0 -22
  1769. data/lib/uniword/document_properties/lpw_str.rb +0 -22
  1770. data/lib/uniword/document_properties/manager.rb +0 -22
  1771. data/lib/uniword/document_properties/scale_crop.rb +0 -22
  1772. data/lib/uniword/document_properties/shared_doc.rb +0 -22
  1773. data/lib/uniword/document_properties/titles_of_parts.rb +0 -23
  1774. data/lib/uniword/document_properties/variant.rb +0 -25
  1775. data/lib/uniword/document_properties/vector.rb +0 -27
  1776. data/lib/uniword/document_properties.rb +0 -32
  1777. data/lib/uniword/metadata/metadata.rb +0 -345
  1778. data/lib/uniword/metadata/metadata_extractor.rb +0 -403
  1779. data/lib/uniword/metadata/metadata_index.rb +0 -455
  1780. data/lib/uniword/metadata/metadata_manager.rb +0 -334
  1781. data/lib/uniword/metadata/metadata_updater.rb +0 -243
  1782. data/lib/uniword/metadata/metadata_validator.rb +0 -326
  1783. data/lib/uniword/metadata.rb +0 -12
  1784. data/lib/uniword/ooxml/docx_package.rb +0 -989
data/lib/uniword/cli.rb CHANGED
@@ -1,737 +1,20 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'thor'
4
-
5
- # All classes are autoloaded via lib/uniword.rb
6
- # No require_relative needed - autoload handles lazy loading
7
-
8
- module Uniword
9
- # StyleSet subcommands for Uniword CLI
10
- class StyleSetCLI < Thor
11
- # Error handling for all commands
12
- def self.exit_on_failure?
13
- true
14
- end
15
-
16
- desc 'list', 'List all available bundled StyleSets'
17
- long_desc <<~DESC
18
- Display all StyleSets that are bundled with uniword.
19
-
20
- These StyleSets can be loaded using StyleSet.load(name) or doc.apply_styleset(name).
21
-
22
- Examples:
23
- $ uniword styleset list
24
- $ uniword styleset list --verbose
25
- DESC
26
- option :verbose, aliases: '-v', desc: 'Show detailed information', type: :boolean,
27
- default: false
28
- def list
29
- stylesets = StyleSet.available_stylesets
30
-
31
- if stylesets.empty?
32
- say 'No bundled StyleSets found.', :yellow
33
- say "Run 'uniword styleset import' to import .dotx StyleSets.", :yellow
34
- return
35
- end
36
-
37
- say "Available StyleSets (#{stylesets.count}):", :green
38
- stylesets.each do |styleset_name|
39
- if options[:verbose]
40
- # Load StyleSet to show details
41
- begin
42
- styleset = StyleSet.load(styleset_name)
43
- say " #{styleset_name}:", :cyan
44
- say " Name: #{styleset.name}"
45
- say " Styles: #{styleset.styles.count}"
46
- say " Paragraph styles: #{styleset.paragraph_styles.count}"
47
- say " Character styles: #{styleset.character_styles.count}"
48
- say " Table styles: #{styleset.table_styles.count}"
49
- rescue StandardError => e
50
- say " #{styleset_name}: Error loading - #{e.message}", :red
51
- end
52
- else
53
- say " - #{styleset_name}"
54
- end
55
- end
56
- end
57
-
58
- desc 'import', 'Import .dotx files to YAML StyleSet library'
59
- long_desc <<~DESC
60
- Import .dotx StyleSet files to YAML format for bundling with gem.
61
-
62
- The YAML format is human-readable, faster to load, and easier to customize.
63
-
64
- Examples:
65
- $ uniword styleset import
66
- $ uniword styleset import --source stylesets/ --output data/stylesets
67
- DESC
68
- option :source, type: :string, default: 'references/word-package/style-sets',
69
- desc: 'Source directory with .dotx files'
70
- option :output, type: :string, default: 'data/stylesets',
71
- desc: 'Output directory for YAML files'
72
- option :verbose, aliases: '-v', desc: 'Verbose output', type: :boolean, default: false
73
- def import
74
- say "Importing StyleSets from #{options[:source]}...", :green if options[:verbose]
75
-
76
- importer = Stylesets::StyleSetImporter.new
77
- count = importer.import_all(options[:source], options[:output])
78
-
79
- say "Successfully imported #{count} StyleSets to #{options[:output]}/", :green
80
-
81
- if options[:verbose]
82
- stylesets = Dir.glob(File.join(options[:output], '*.yml')).map do |f|
83
- File.basename(f, '.yml')
84
- end.sort
85
- say "\nAvailable StyleSets:", :cyan
86
- stylesets.each { |name| say " - #{name}" }
87
- end
88
- rescue StandardError => e
89
- say "Error importing StyleSets: #{e.message}", :red
90
- exit 1
91
- end
92
-
93
- desc 'apply INPUT OUTPUT', 'Apply a StyleSet to a document'
94
- long_desc <<~DESC
95
- Apply a StyleSet to an existing document.
96
-
97
- You can apply either:
98
- - A bundled StyleSet by name (e.g., 'distinctive', 'basic')
99
- - A .dotx StyleSet file by path
100
-
101
- StyleSets contain collections of paragraph, character, and table styles
102
- that provide consistent formatting for documents.
103
-
104
- Examples:
105
- $ uniword styleset apply input.docx output.docx --name distinctive
106
- $ uniword styleset apply input.docx output.docx --name distinctive --verbose
107
- $ uniword styleset apply input.docx output.docx --file Distinctive.dotx
108
- DESC
109
- option :name, type: :string,
110
- desc: 'Bundled StyleSet name (e.g., distinctive, basic)'
111
- option :file, type: :string,
112
- desc: 'Path to .dotx StyleSet file'
113
- option :strategy, type: :string, default: 'keep_existing',
114
- desc: 'Application strategy (keep_existing, replace, rename)'
115
- option :verbose, aliases: '-v', desc: 'Verbose output', type: :boolean, default: false
116
- def apply(input_path, output_path)
117
- # Validate that either --name or --file is provided
118
- unless options[:name] || options[:file]
119
- say '✗ Error: Must specify either --name for bundled StyleSet or --file for .dotx file',
120
- :red
121
- exit 1
122
- end
123
-
124
- if options[:name] && options[:file]
125
- say '✗ Error: Cannot specify both --name and --file', :red
126
- exit 1
127
- end
128
-
129
- say "Loading document #{input_path}...", :green if options[:verbose]
130
-
131
- # Load input document
132
- doc = DocumentFactory.from_file(input_path)
133
-
134
- if options[:verbose]
135
- say ' Loaded document:', :cyan
136
- say " Paragraphs: #{doc.paragraphs.count}"
137
- say " Current styles: #{doc.styles.count}"
138
- end
139
-
140
- # Apply StyleSet
141
- begin
142
- if options[:name]
143
- # Apply bundled StyleSet
144
- say "Applying bundled StyleSet '#{options[:name]}'...", :green if options[:verbose]
145
- strategy = options[:strategy].to_sym
146
- doc.apply_styleset(options[:name], strategy: strategy)
147
- else
148
- # Apply .dotx file
149
- unless File.exist?(options[:file])
150
- say "✗ StyleSet file not found: #{options[:file]}", :red
151
- exit 1
152
- end
153
- say "Applying StyleSet from #{options[:file]}...", :green if options[:verbose]
154
- styleset = StyleSet.from_dotx(options[:file])
155
- strategy = options[:strategy].to_sym
156
- styleset.apply_to(doc, strategy: strategy)
157
- end
158
-
159
- if options[:verbose]
160
- say ' Applied StyleSet:', :cyan
161
- say " Total styles: #{doc.styles.count}"
162
- say " Strategy: #{options[:strategy]}"
163
- end
164
- rescue ArgumentError => e
165
- say "✗ Error applying StyleSet: #{e.message}", :red
166
- exit 1
167
- end
168
-
169
- # Save output document
170
- doc.save(output_path)
171
-
172
- say "StyleSet applied successfully to #{output_path}", :green
173
- rescue Uniword::Error => e
174
- say "Error: #{e.message}", :red
175
- exit 1
176
- rescue StandardError => e
177
- say "Unexpected error: #{e.message}", :red
178
- say e.backtrace.join("\n"), :red if options[:verbose]
179
- exit 1
180
- end
181
- end
182
-
183
- # Word Resources subcommands for Uniword CLI
184
- class ResourcesCLI < Thor
185
- def self.exit_on_failure?
186
- true
187
- end
188
-
189
- desc 'export OUTPUT_DIR', 'Export Word resources from local Microsoft Word installation'
190
- long_desc <<~DESC
191
- Export raw Word resources (.thmx themes, .dotx stylesets) from the
192
- local Microsoft Word installation to a target directory.
193
-
194
- This copies the native files without conversion to YAML.
195
-
196
- The --word-app option specifies the path to Microsoft Word.app.
197
- On macOS, this is typically /Applications/Microsoft Word.app
198
-
199
- Examples:
200
- $ uniword resources export uniword-private/word-resources --word-app "/Applications/Microsoft Word.app"
201
- $ uniword resources export /path/to/output --word-app "/Applications/Microsoft Word.app"
202
- DESC
203
- option :verbose, aliases: '-v', desc: 'Verbose output', type: :boolean, default: false
204
- option :word_app, aliases: '-w', desc: 'Path to Microsoft Word.app', type: :string,
205
- required: true, banner: 'PATH'
206
- def export(output_dir)
207
- word_app_path = options[:word_app]
208
-
209
- unless word_app_path
210
- say '--word-app is required', :red
211
- exit 1
212
- end
213
-
214
- unless File.exist?(word_app_path)
215
- say "Microsoft Word not found at: #{word_app_path}", :red
216
- exit 1
217
- end
218
-
219
- unless File.directory?(word_app_path)
220
- say "#{word_app_path} is not a directory (expected path to Microsoft Word.app)", :red
221
- exit 1
222
- end
223
-
224
- resources_path = File.join(word_app_path, 'Contents', 'Resources')
225
-
226
- output_base = output_dir || 'uniword-private/word-resources'
227
-
228
- # Export themes from Word's Office Themes/ to office-themes/
229
- themes_path = File.join(resources_path, 'Office Themes')
230
- if Dir.exist?(themes_path)
231
- themes_dir = File.join(output_base, 'office-themes')
232
- FileUtils.mkdir_p(themes_dir)
233
- count = 0
234
- Dir.glob("#{themes_path}/*.thmx").each do |thmx|
235
- FileUtils.cp(thmx, themes_dir)
236
- say " Copied #{File.basename(thmx)}" if options[:verbose]
237
- count += 1
238
- end
239
- say "Exported #{count} themes to #{themes_dir}", :green
240
- else
241
- say 'No themes found in Word installation', :yellow
242
- end
243
-
244
- # Export QuickStyles from Word's QuickStyles/ to quick-styles/
245
- stylesets_path = File.join(resources_path, 'QuickStyles')
246
- if Dir.exist?(stylesets_path)
247
- styles_dir = File.join(output_base, 'quick-styles')
248
- FileUtils.mkdir_p(styles_dir)
249
- count = 0
250
- Dir.glob("#{stylesets_path}/*.dotx").each do |dotx|
251
- FileUtils.cp(dotx, styles_dir)
252
- say " Copied #{File.basename(dotx)}" if options[:verbose]
253
- count += 1
254
- end
255
- say "Exported #{count} stylesets to #{styles_dir}", :green
256
- else
257
- say 'No QuickStyles found in Word installation', :yellow
258
- end
259
-
260
- # Export Document Elements from all *.lproj/Document Elements/ to document-elements/
261
- lproj_count = 0
262
- elements_count = 0
263
- elements_dir = File.join(output_base, 'document-elements')
264
- Dir.glob("#{resources_path}/*.lproj").each do |lproj|
265
- doc_elements_path = File.join(lproj, 'Document Elements')
266
- next unless Dir.exist?(doc_elements_path)
267
-
268
- lproj_name = File.basename(lproj, '.lproj')
269
- lproj_elements_dir = File.join(elements_dir, lproj_name)
270
- FileUtils.mkdir_p(lproj_elements_dir)
271
- Dir.glob("#{doc_elements_path}/*.dotx").each do |dotx|
272
- FileUtils.cp(dotx, lproj_elements_dir)
273
- say " #{lproj_name}: #{File.basename(dotx)}" if options[:verbose]
274
- elements_count += 1
275
- end
276
- lproj_count += 1
277
- end
278
- if elements_count.positive?
279
- say "Exported #{elements_count} document elements from #{lproj_count} languages to #{elements_dir}",
280
- :green
281
- else
282
- say 'No Document Elements found in Word installation', :yellow
283
- end
284
-
285
- # Export Citation Styles from Word's Style/ to citation-styles/
286
- citation_styles_path = File.join(resources_path, 'Style')
287
- if Dir.exist?(citation_styles_path)
288
- styles_dir = File.join(output_base, 'citation-styles')
289
- FileUtils.mkdir_p(styles_dir)
290
- count = 0
291
- Dir.glob("#{citation_styles_path}/*.xsl").each do |xsl|
292
- FileUtils.cp(xsl, styles_dir)
293
- say " Copied #{File.basename(xsl)}" if options[:verbose]
294
- count += 1
295
- end
296
- say "Exported #{count} citation styles to #{styles_dir}", :green
297
- else
298
- say 'No citation styles found in Word installation', :yellow
299
- end
300
-
301
- # Export Theme Colors from Word's Office Themes/Theme Colors/ to theme-colors/
302
- theme_colors_path = File.join(resources_path, 'Office Themes', 'Theme Colors')
303
- if Dir.exist?(theme_colors_path)
304
- colors_dir = File.join(output_base, 'theme-colors')
305
- FileUtils.mkdir_p(colors_dir)
306
- count = 0
307
- Dir.glob("#{theme_colors_path}/*.xml").each do |xml|
308
- FileUtils.cp(xml, colors_dir)
309
- say " Copied #{File.basename(xml)}" if options[:verbose]
310
- count += 1
311
- end
312
- say "Exported #{count} theme colors to #{colors_dir}", :green
313
- else
314
- say 'No theme colors found in Word installation', :yellow
315
- end
316
-
317
- # Export Theme Fonts from Word's Office Themes/Theme Fonts/ to theme-fonts/
318
- theme_fonts_path = File.join(resources_path, 'Office Themes', 'Theme Fonts')
319
- if Dir.exist?(theme_fonts_path)
320
- fonts_dir = File.join(output_base, 'theme-fonts')
321
- FileUtils.mkdir_p(fonts_dir)
322
- count = 0
323
- Dir.glob("#{theme_fonts_path}/*.xml").each do |xml|
324
- FileUtils.cp(xml, fonts_dir)
325
- say " Copied #{File.basename(xml)}" if options[:verbose]
326
- count += 1
327
- end
328
- say "Exported #{count} theme fonts to #{fonts_dir}", :green
329
- else
330
- say 'No theme fonts found in Word installation', :yellow
331
- end
332
-
333
- say "\nWord resources exported to #{output_base}", :green
334
- rescue StandardError => e
335
- say "Error: #{e.message}", :red
336
- exit 1
337
- end
338
- end
339
-
340
- # Theme subcommands for Uniword CLI
341
- class ThemeCLI < Thor
342
- # Error handling for all commands
343
- def self.exit_on_failure?
344
- true
345
- end
346
-
347
- desc 'list', 'List all available bundled themes'
348
- long_desc <<~DESC
349
- Display all themes that are bundled with uniword.
350
-
351
- These themes can be loaded using Themes::Theme.load(name) and
352
- converted using Themes::ThemeTransformation.
353
-
354
- Examples:
355
- $ uniword theme list
356
- $ uniword theme list --verbose
357
- DESC
358
- option :verbose, aliases: '-v', desc: 'Show detailed information', type: :boolean,
359
- default: false
360
- def list
361
- themes = Themes::Theme.available_themes
362
-
363
- if themes.empty?
364
- say 'No bundled themes found.', :yellow
365
- say "Run 'uniword theme import' to import Office themes.", :yellow
366
- return
367
- end
368
-
369
- say "Available themes (#{themes.count}):", :green
370
- themes.each do |theme_name|
371
- if options[:verbose]
372
- # Load theme to show details
373
- begin
374
- friendly = Themes::Theme.load(theme_name)
375
- say " #{theme_name}:", :cyan
376
- say " Name: #{friendly.name}"
377
- say " Colors: #{friendly.color_scheme&.colors&.count || 0}"
378
- say " Variants: #{friendly.variants&.count || 0}"
379
- rescue StandardError => e
380
- say " #{theme_name}: Error loading - #{e.message}", :red
381
- end
382
- else
383
- say " - #{theme_name}"
384
- end
385
- end
386
- end
387
-
388
- desc 'import', 'Import .thmx files to YAML theme library'
389
- long_desc <<~DESC
390
- Import Office theme (.thmx) files to YAML format for bundling with gem.
391
-
392
- The YAML format is human-readable, faster to load, and easier to customize.
393
-
394
- Examples:
395
- $ uniword theme import
396
- $ uniword theme import --source themes/ --output data/themes
397
- DESC
398
- option :source, type: :string, default: 'references/word-package/office-themes',
399
- desc: 'Source directory with .thmx files'
400
- option :output, type: :string, default: 'data/themes',
401
- desc: 'Output directory for YAML files'
402
- option :verbose, aliases: '-v', desc: 'Verbose output', type: :boolean, default: false
403
- def import
404
- say "Importing themes from #{options[:source]}...", :green if options[:verbose]
405
-
406
- importer = Themes::ThemeImporter.new
407
- count = importer.import_all(options[:source], options[:output])
408
-
409
- say "Successfully imported #{count} themes to #{options[:output]}/", :green
410
-
411
- if options[:verbose]
412
- themes = Dir.glob(File.join(options[:output], '*.yml')).map do |f|
413
- File.basename(f, '.yml')
414
- end.sort
415
- say "\nAvailable themes:", :cyan
416
- themes.each { |name| say " - #{name}" }
417
- end
418
- rescue StandardError => e
419
- say "Error importing themes: #{e.message}", :red
420
- exit 1
421
- end
422
-
423
- desc 'apply INPUT OUTPUT', 'Apply a theme to a document'
424
- long_desc <<~DESC
425
- Apply a theme to an existing document.
426
-
427
- You can apply either:
428
- - A bundled theme by name (e.g., 'atlas', 'office_theme')
429
- - A .thmx theme file by path
430
-
431
- Themes control the document's colors, fonts, and visual styling.
432
- You can optionally apply a specific theme variant for different
433
- visual styles.
434
-
435
- Examples:
436
- $ uniword theme apply input.docx output.docx --name atlas
437
- $ uniword theme apply input.docx output.docx --name atlas --variant 2
438
- $ uniword theme apply input.docx output.docx --file Atlas.thmx
439
- $ uniword theme apply input.docx output.docx --file themes/Office.thmx --variant 2
440
- DESC
441
- option :name, type: :string,
442
- desc: 'Bundled theme name (e.g., atlas, office_theme)'
443
- option :file, type: :string,
444
- desc: 'Path to .thmx theme file'
445
- option :variant, type: :string,
446
- desc: 'Theme variant (variant1, variant2, etc. or numeric 1, 2, etc.)'
447
- option :verbose, aliases: '-v', desc: 'Verbose output', type: :boolean, default: false
448
- def apply(input_path, output_path)
449
- # Validate that either --name or --file is provided
450
- unless options[:name] || options[:file]
451
- say '✗ Error: Must specify either --name for bundled theme or --file for .thmx file', :red
452
- exit 1
453
- end
454
-
455
- if options[:name] && options[:file]
456
- say '✗ Error: Cannot specify both --name and --file', :red
457
- exit 1
458
- end
459
-
460
- say "Loading document #{input_path}...", :green if options[:verbose]
461
-
462
- # Load input document
463
- doc = DocumentFactory.from_file(input_path)
464
-
465
- if options[:verbose]
466
- say ' Loaded document:', :cyan
467
- say " Paragraphs: #{doc.paragraphs.count}"
468
- say " Current theme: #{doc.theme&.name || 'None'}"
469
- end
470
-
471
- # Apply theme
472
- begin
473
- if options[:name]
474
- # Apply bundled theme
475
- say "Applying bundled theme '#{options[:name]}'...", :green if options[:verbose]
476
- doc.apply_theme(options[:name], variant: options[:variant])
477
- else
478
- # Apply .thmx file
479
- unless File.exist?(options[:file])
480
- say "✗ Theme file not found: #{options[:file]}", :red
481
- exit 1
482
- end
483
- say "Applying theme from #{options[:file]}...", :green if options[:verbose]
484
- doc.apply_theme_file(options[:file], variant: options[:variant])
485
- end
486
-
487
- if options[:verbose]
488
- say ' Applied theme:', :cyan
489
- say " Theme name: #{doc.theme.name}"
490
- say " Colors: #{doc.theme.color_scheme.colors.keys.join(', ')}"
491
- say " Major font: #{doc.theme.major_font}"
492
- say " Minor font: #{doc.theme.minor_font}"
493
- if doc.theme.variants.any?
494
- say " Available variants: #{doc.theme.variants.keys.join(', ')}"
495
- end
496
- end
497
- rescue ArgumentError => e
498
- say "✗ Error applying theme: #{e.message}", :red
499
- exit 1
500
- end
501
-
502
- # Save output document
503
- doc.save(output_path)
504
-
505
- say "Theme applied successfully to #{output_path}", :green
506
- rescue Uniword::Error => e
507
- say "Error: #{e.message}", :red
508
- exit 1
509
- rescue StandardError => e
510
- say "Unexpected error: #{e.message}", :red
511
- say e.backtrace.join("\n"), :red if options[:verbose]
512
- exit 1
513
- end
514
- end
515
-
516
- # Command-line interface for Uniword
517
- #
518
- # Provides commands for document conversion, inspection, and validation
519
- class CLI < Thor
520
- # Error handling for all commands
521
- def self.exit_on_failure?
522
- true
523
- end
524
-
525
- desc 'convert INPUT OUTPUT', 'Convert document between formats'
526
- long_desc <<~DESC
527
- Convert a document from one format to another.
528
-
529
- Supports automatic format detection based on file extensions,
530
- or you can specify formats explicitly with --from and --to options.
531
-
532
- Supported formats: DOCX, MHTML
533
-
534
- Examples:
535
- $ uniword convert input.docx output.mhtml
536
- $ uniword convert input.mhtml output.docx --verbose
537
- $ uniword convert input.doc output.docx --from doc --to docx
538
- DESC
539
- option :from, aliases: '-f', desc: 'Input format (docx/mhtml)', type: :string
540
- option :to, aliases: '-t', desc: 'Output format (docx/mhtml)', type: :string
541
- option :verbose, aliases: '-v', desc: 'Verbose output', type: :boolean, default: false
542
- def convert(input_path, output_path)
543
- from_format = options[:from]&.to_sym || :auto
544
- to_format = options[:to]&.to_sym || :auto
545
-
546
- say "Converting #{input_path} to #{output_path}...", :green if options[:verbose]
547
-
548
- # Load document
549
- doc = DocumentFactory.from_file(input_path, format: from_format)
550
-
551
- if options[:verbose]
552
- say ' Loaded document:', :cyan
553
- say " Paragraphs: #{doc.paragraphs.count}"
554
- say " Tables: #{doc.tables.count}"
555
- say " Styles: #{doc.styles_configuration&.styles&.count || 0}"
556
- end
557
-
558
- # Save document
559
- doc.save(output_path, format: to_format)
560
-
561
- say 'Conversion complete!', :green if options[:verbose]
562
- rescue Uniword::Error => e
563
- say "Error: #{e.message}", :red
564
- exit 1
565
- rescue StandardError => e
566
- say "Unexpected error: #{e.message}", :red
567
- say e.backtrace.join("\n"), :red if options[:verbose]
568
- exit 1
569
- end
570
-
571
- desc 'info FILE', 'Display document information'
572
- long_desc <<~DESC
573
- Display detailed information about a document including:
574
- - Detected format
575
- - Number of paragraphs and tables
576
- - Text content length
577
- - Styles used
578
- - Document structure
579
-
580
- Examples:
581
- $ uniword info document.docx
582
- $ uniword info report.mhtml --verbose
583
- DESC
584
- option :verbose, aliases: '-v', desc: 'Show detailed information', type: :boolean,
585
- default: false
586
- def info(path)
587
- say "Analyzing #{path}...", :green
588
-
589
- # Detect format
590
- detector = ::Uniword::FormatDetector.new
591
- format = detector.detect(path)
592
- say "\nFormat: #{format.to_s.upcase}", :cyan
593
-
594
- # Load document
595
- doc = DocumentFactory.from_file(path)
596
-
597
- # Basic statistics
598
- say "\nDocument Statistics:", :cyan
599
- say " Paragraphs: #{doc.paragraphs.count}"
600
- say " Tables: #{doc.tables.count}"
601
- say " Text length: #{doc.text.length} characters"
602
-
603
- # Styles information
604
- if doc.styles_configuration&.styles&.any?
605
- say " Styles: #{doc.styles_configuration.styles.count}"
606
- end
607
-
608
- # Detailed information
609
- if options[:verbose]
610
- say "\nDetailed Information:", :cyan
611
-
612
- # Show first few paragraphs
613
- if doc.paragraphs.any?
614
- say ' First paragraphs:'
615
- doc.paragraphs.first(3).each_with_index do |para, i|
616
- text = para.text[0..80]
617
- text += '...' if para.text.length > 80
618
- say " #{i + 1}. #{text}"
619
- end
620
- end
621
-
622
- # Show tables
623
- if doc.tables.any?
624
- say ' Tables:'
625
- doc.tables.each_with_index do |table, i|
626
- say " #{i + 1}. #{table.row_count} rows × #{table.column_count} columns"
627
- end
628
- end
629
- end
630
-
631
- say "\nAnalysis complete!", :green
632
- rescue Uniword::Error => e
633
- say "Error: #{e.message}", :red
634
- exit 1
635
- rescue StandardError => e
636
- say "Unexpected error: #{e.message}", :red
637
- exit 1
638
- end
639
-
640
- desc 'validate FILE', 'Validate document structure'
641
- long_desc <<~DESC
642
- Validate a document's structure and check for common issues.
643
-
644
- Checks include:
645
- - File format integrity
646
- - Document structure validity
647
- - Element validation
648
- - Content completeness
649
-
650
- Examples:
651
- $ uniword validate document.docx
652
- $ uniword validate report.mhtml --verbose
653
- DESC
654
- option :verbose, aliases: '-v', desc: 'Show detailed validation results', type: :boolean,
655
- default: false
656
- def validate(path)
657
- say "Validating #{path}...", :green
658
-
659
- # Check file exists
660
- unless File.exist?(path)
661
- say "✗ File not found: #{path}", :red
662
- exit 1
663
- end
664
-
665
- # Try to load document
666
- begin
667
- doc = DocumentFactory.from_file(path)
668
- say '✓ File format is valid', :green
669
- rescue Uniword::CorruptedFileError => e
670
- say "✗ File is corrupted: #{e.reason}", :red
671
- exit 1
672
- rescue Uniword::Error => e
673
- say "✗ Validation failed: #{e.message}", :red
674
- exit 1
675
- end
676
-
677
- # Validate document structure
678
- if doc.valid?
679
- say '✓ Document structure is valid', :green
680
- else
681
- say '✗ Document has structural issues', :yellow
682
- end
683
-
684
- # Check for content
685
- if doc.paragraphs.any? || doc.tables.any?
686
- say '✓ Document contains content', :green
687
- else
688
- say '⚠ Document appears to be empty', :yellow
689
- end
690
-
691
- # Detailed validation
692
- if options[:verbose]
693
- say "\nDetailed Validation:", :cyan
694
-
695
- # Check paragraphs
696
- empty_paras = doc.paragraphs.count(&:empty?)
697
- if empty_paras.positive?
698
- say " ⚠ #{empty_paras} empty paragraph(s) found", :yellow
699
- else
700
- say ' ✓ All paragraphs have content', :green
701
- end
702
-
703
- # Check tables
704
- if doc.tables.any?
705
- empty_tables = doc.tables.count(&:empty?)
706
- if empty_tables.positive?
707
- say " ⚠ #{empty_tables} empty table(s) found", :yellow
708
- else
709
- say ' ✓ All tables have content', :green
710
- end
711
- end
712
- end
713
-
714
- say "\nValidation complete!", :green
715
- rescue StandardError => e
716
- say "Unexpected error during validation: #{e.message}", :red
717
- exit 1
718
- end
719
-
720
- # Register theme subcommand
721
- desc 'theme SUBCOMMAND', 'Manage document themes'
722
- subcommand 'theme', ThemeCLI
723
-
724
- # Register styleset subcommand
725
- desc 'styleset SUBCOMMAND', 'Manage document StyleSets'
726
- subcommand 'styleset', StyleSetCLI
727
-
728
- # Register resources subcommand
729
- desc 'resources SUBCOMMAND', 'Manage Word resources (themes, stylesets, document elements)'
730
- subcommand 'resources', ResourcesCLI
731
-
732
- desc 'version', 'Show Uniword version'
733
- def version
734
- say "Uniword version #{Uniword::VERSION}", :green
735
- end
736
- end
737
- end
3
+ # CLI entry point — loads decomposed classes from lib/uniword/cli/.
4
+ # Uniword::CLI is the main Thor class. Subcommands are in separate files.
5
+
6
+ require_relative "cli/helpers"
7
+ require_relative "cli/styleset_cli"
8
+ require_relative "cli/resources_cli"
9
+ require_relative "cli/theme_cli"
10
+ require_relative "cli/generate_cli"
11
+ require_relative "cli/review_cli"
12
+ require_relative "cli/diff_cli"
13
+ require_relative "cli/toc_cli"
14
+ require_relative "cli/images_cli"
15
+ require_relative "cli/spellcheck_cli"
16
+ require_relative "cli/template_cli"
17
+ require_relative "cli/headers_cli"
18
+ require_relative "cli/watermark_cli"
19
+ require_relative "cli/protect_cli"
20
+ require_relative "cli/main"