omml 0.1.0 → 0.2.1

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 (284) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/rake.yml +22 -0
  3. data/.github/workflows/release.yml +23 -0
  4. data/.gitignore +2 -0
  5. data/.rubocop.yml +25 -0
  6. data/.rubocop_todo.yml +19 -0
  7. data/CLAUDE.md +64 -0
  8. data/Gemfile +11 -7
  9. data/README.adoc +222 -4
  10. data/Rakefile +3 -3
  11. data/bin/console +3 -3
  12. data/lib/omml/configuration/adapter.rb +21 -0
  13. data/lib/omml/configuration/context_registry.rb +131 -0
  14. data/lib/omml/configuration/model_registry.rb +60 -0
  15. data/lib/omml/configuration/type_resolver.rb +47 -0
  16. data/lib/omml/configuration.rb +25 -0
  17. data/lib/omml/errors/base_error.rb +8 -0
  18. data/lib/omml/errors/invalid_xml_error.rb +8 -0
  19. data/lib/omml/errors/missing_context_error.rb +23 -0
  20. data/lib/omml/errors/root_element_not_found_error.rb +11 -0
  21. data/lib/omml/errors/unsupported_root_element_error.rb +11 -0
  22. data/lib/omml/errors/xml_adapter_not_configured_error.rb +11 -0
  23. data/lib/omml/errors.rb +15 -0
  24. data/lib/omml/models/ct_acc.rb +23 -0
  25. data/lib/omml/models/ct_acc_pr.rb +23 -0
  26. data/lib/omml/models/ct_anchor.rb +60 -0
  27. data/lib/omml/models/ct_attr.rb +23 -0
  28. data/lib/omml/models/ct_bar.rb +23 -0
  29. data/lib/omml/models/ct_bar_pr.rb +23 -0
  30. data/lib/omml/models/ct_bookmark.rb +19 -0
  31. data/lib/omml/models/ct_bookmark_range.rb +21 -0
  32. data/lib/omml/models/ct_border.rb +35 -0
  33. data/lib/omml/models/ct_border_box.rb +24 -0
  34. data/lib/omml/models/ct_border_box_pr.rb +37 -0
  35. data/lib/omml/models/ct_box.rb +23 -0
  36. data/lib/omml/models/ct_box_pr.rb +31 -0
  37. data/lib/omml/models/ct_br.rb +21 -0
  38. data/lib/omml/models/ct_break_bin.rb +19 -0
  39. data/lib/omml/models/ct_break_bin_sub.rb +19 -0
  40. data/lib/omml/models/ct_calendar_type.rb +19 -0
  41. data/lib/omml/models/ct_char.rb +19 -0
  42. data/lib/omml/models/ct_color.rb +25 -0
  43. data/lib/omml/models/ct_control.rb +23 -0
  44. data/lib/omml/models/ct_ctrl_pr.rb +21 -0
  45. data/lib/omml/models/ct_custom_xml_pr.rb +23 -0
  46. data/lib/omml/models/ct_custom_xml_run.rb +27 -0
  47. data/lib/omml/models/ct_d.rb +23 -0
  48. data/lib/omml/models/ct_d_pr.rb +34 -0
  49. data/lib/omml/models/ct_data_binding.rb +23 -0
  50. data/lib/omml/models/ct_decimal_number.rb +19 -0
  51. data/lib/omml/models/ct_drawing.rb +23 -0
  52. data/lib/omml/models/ct_east_asian_layout.rb +27 -0
  53. data/lib/omml/models/ct_effect_extent.rb +25 -0
  54. data/lib/omml/models/ct_em.rb +19 -0
  55. data/lib/omml/models/ct_empty.rb +15 -0
  56. data/lib/omml/models/ct_eq_arr.rb +23 -0
  57. data/lib/omml/models/ct_eq_arr_pr.rb +31 -0
  58. data/lib/omml/models/ct_f.rb +25 -0
  59. data/lib/omml/models/ct_f_pr.rb +23 -0
  60. data/lib/omml/models/ct_f_type.rb +19 -0
  61. data/lib/omml/models/ct_ff_check_box.rb +29 -0
  62. data/lib/omml/models/ct_ff_data.rb +41 -0
  63. data/lib/omml/models/ct_ff_help_text.rb +21 -0
  64. data/lib/omml/models/ct_ff_name.rb +19 -0
  65. data/lib/omml/models/ct_ff_status_text.rb +21 -0
  66. data/lib/omml/models/ct_ff_text_input.rb +27 -0
  67. data/lib/omml/models/ct_ff_text_type.rb +19 -0
  68. data/lib/omml/models/ct_ffdd_list.rb +25 -0
  69. data/lib/omml/models/ct_fit_text.rb +21 -0
  70. data/lib/omml/models/ct_fld_char.rb +32 -0
  71. data/lib/omml/models/ct_fonts.rb +35 -0
  72. data/lib/omml/models/ct_ftn_edn_ref.rb +21 -0
  73. data/lib/omml/models/ct_func.rb +26 -0
  74. data/lib/omml/models/ct_func_pr.rb +21 -0
  75. data/lib/omml/models/ct_graphical_object.rb +21 -0
  76. data/lib/omml/models/ct_graphical_object_data.rb +19 -0
  77. data/lib/omml/models/ct_graphical_object_frame_locking.rb +33 -0
  78. data/lib/omml/models/ct_group_chr.rb +23 -0
  79. data/lib/omml/models/ct_group_chr_pr.rb +27 -0
  80. data/lib/omml/models/ct_highlight.rb +19 -0
  81. data/lib/omml/models/ct_hps_measure.rb +19 -0
  82. data/lib/omml/models/ct_hyperlink.rb +31 -0
  83. data/lib/omml/models/ct_inline.rb +38 -0
  84. data/lib/omml/models/ct_integer2.rb +19 -0
  85. data/lib/omml/models/ct_integer255.rb +19 -0
  86. data/lib/omml/models/ct_lang.rb +19 -0
  87. data/lib/omml/models/ct_language.rb +23 -0
  88. data/lib/omml/models/ct_lim_loc.rb +19 -0
  89. data/lib/omml/models/ct_lim_low.rb +26 -0
  90. data/lib/omml/models/ct_lim_low_pr.rb +21 -0
  91. data/lib/omml/models/ct_lim_upp.rb +25 -0
  92. data/lib/omml/models/ct_lim_upp_pr.rb +21 -0
  93. data/lib/omml/models/ct_lock.rb +19 -0
  94. data/lib/omml/models/ct_m.rb +23 -0
  95. data/lib/omml/models/ct_m_pr.rb +37 -0
  96. data/lib/omml/models/ct_macro_name.rb +19 -0
  97. data/lib/omml/models/ct_manual_break.rb +19 -0
  98. data/lib/omml/models/ct_markup.rb +19 -0
  99. data/lib/omml/models/ct_markup_range.rb +19 -0
  100. data/lib/omml/models/ct_math_pr.rb +53 -0
  101. data/lib/omml/models/ct_mc.rb +21 -0
  102. data/lib/omml/models/ct_mc_pr.rb +23 -0
  103. data/lib/omml/models/ct_mcs.rb +21 -0
  104. data/lib/omml/models/ct_move_bookmark.rb +21 -0
  105. data/lib/omml/models/ct_mr.rb +21 -0
  106. data/lib/omml/models/ct_nary.rb +27 -0
  107. data/lib/omml/models/ct_nary_pr.rb +31 -0
  108. data/lib/omml/models/ct_non_visual_drawing_props.rb +33 -0
  109. data/lib/omml/models/ct_non_visual_graphic_frame_properties.rb +24 -0
  110. data/lib/omml/models/ct_o_math.rb +22 -0
  111. data/lib/omml/models/ct_o_math_arg.rb +28 -0
  112. data/lib/omml/models/ct_o_math_arg_pr.rb +21 -0
  113. data/lib/omml/models/ct_o_math_jc.rb +19 -0
  114. data/lib/omml/models/ct_o_math_para.rb +26 -0
  115. data/lib/omml/models/ct_o_math_para_pr.rb +21 -0
  116. data/lib/omml/models/ct_object.rb +25 -0
  117. data/lib/omml/models/ct_office_art_extension.rb +19 -0
  118. data/lib/omml/models/ct_office_art_extension_list.rb +21 -0
  119. data/lib/omml/models/ct_on_off.rb +19 -0
  120. data/lib/omml/models/ct_p_tab.rb +23 -0
  121. data/lib/omml/models/ct_perm.rb +21 -0
  122. data/lib/omml/models/ct_perm_start.rb +25 -0
  123. data/lib/omml/models/ct_phant.rb +23 -0
  124. data/lib/omml/models/ct_phant_pr.rb +31 -0
  125. data/lib/omml/models/ct_picture.rb +23 -0
  126. data/lib/omml/models/ct_picture_base.rb +15 -0
  127. data/lib/omml/models/ct_placeholder.rb +21 -0
  128. data/lib/omml/models/ct_point2_d.rb +21 -0
  129. data/lib/omml/models/ct_pos_h.rb +27 -0
  130. data/lib/omml/models/ct_pos_v.rb +27 -0
  131. data/lib/omml/models/ct_positive_size2_d.rb +21 -0
  132. data/lib/omml/models/ct_proof_err.rb +19 -0
  133. data/lib/omml/models/ct_r.rb +27 -0
  134. data/lib/omml/models/ct_r_pr.rb +21 -0
  135. data/lib/omml/models/ct_r_pr_change.rb +21 -0
  136. data/lib/omml/models/ct_r_pr_original.rb +21 -0
  137. data/lib/omml/models/ct_rad.rb +25 -0
  138. data/lib/omml/models/ct_rad_pr.rb +23 -0
  139. data/lib/omml/models/ct_rel.rb +19 -0
  140. data/lib/omml/models/ct_rpr.rb +33 -0
  141. data/lib/omml/models/ct_ruby.rb +25 -0
  142. data/lib/omml/models/ct_ruby_align.rb +19 -0
  143. data/lib/omml/models/ct_ruby_content.rb +19 -0
  144. data/lib/omml/models/ct_ruby_pr.rb +31 -0
  145. data/lib/omml/models/ct_run_track_change.rb +23 -0
  146. data/lib/omml/models/ct_s_pre.rb +28 -0
  147. data/lib/omml/models/ct_s_pre_pr.rb +21 -0
  148. data/lib/omml/models/ct_s_sub.rb +25 -0
  149. data/lib/omml/models/ct_s_sub_pr.rb +21 -0
  150. data/lib/omml/models/ct_s_sub_sup.rb +28 -0
  151. data/lib/omml/models/ct_s_sub_sup_pr.rb +23 -0
  152. data/lib/omml/models/ct_s_sup.rb +25 -0
  153. data/lib/omml/models/ct_s_sup_pr.rb +21 -0
  154. data/lib/omml/models/ct_script.rb +19 -0
  155. data/lib/omml/models/ct_sdt_combo_box.rb +23 -0
  156. data/lib/omml/models/ct_sdt_content_run.rb +19 -0
  157. data/lib/omml/models/ct_sdt_date.rb +30 -0
  158. data/lib/omml/models/ct_sdt_date_mapping_type.rb +19 -0
  159. data/lib/omml/models/ct_sdt_doc_part.rb +25 -0
  160. data/lib/omml/models/ct_sdt_drop_down_list.rb +23 -0
  161. data/lib/omml/models/ct_sdt_end_pr.rb +21 -0
  162. data/lib/omml/models/ct_sdt_list_item.rb +21 -0
  163. data/lib/omml/models/ct_sdt_pr.rb +63 -0
  164. data/lib/omml/models/ct_sdt_run.rb +25 -0
  165. data/lib/omml/models/ct_sdt_text.rb +19 -0
  166. data/lib/omml/models/ct_shd.rb +35 -0
  167. data/lib/omml/models/ct_shp.rb +19 -0
  168. data/lib/omml/models/ct_signed_hps_measure.rb +19 -0
  169. data/lib/omml/models/ct_signed_twips_measure.rb +19 -0
  170. data/lib/omml/models/ct_simple_field.rb +29 -0
  171. data/lib/omml/models/ct_smart_tag_pr.rb +21 -0
  172. data/lib/omml/models/ct_smart_tag_run.rb +27 -0
  173. data/lib/omml/models/ct_spacing_rule.rb +19 -0
  174. data/lib/omml/models/ct_string.rb +19 -0
  175. data/lib/omml/models/ct_style.rb +19 -0
  176. data/lib/omml/models/ct_sym.rb +21 -0
  177. data/lib/omml/models/ct_text.rb +19 -0
  178. data/lib/omml/models/ct_text_effect.rb +19 -0
  179. data/lib/omml/models/ct_text_scale.rb +19 -0
  180. data/lib/omml/models/ct_top_bot.rb +19 -0
  181. data/lib/omml/models/ct_track_change.rb +21 -0
  182. data/lib/omml/models/ct_track_change_numbering.rb +19 -0
  183. data/lib/omml/models/ct_twips_measure.rb +19 -0
  184. data/lib/omml/models/ct_un_signed_integer.rb +19 -0
  185. data/lib/omml/models/ct_underline.rb +27 -0
  186. data/lib/omml/models/ct_vertical_align_run.rb +19 -0
  187. data/lib/omml/models/ct_wordprocessing_on_off.rb +19 -0
  188. data/lib/omml/models/ct_wrap_none.rb +15 -0
  189. data/lib/omml/models/ct_wrap_path.rb +25 -0
  190. data/lib/omml/models/ct_wrap_square.rb +31 -0
  191. data/lib/omml/models/ct_wrap_through.rb +27 -0
  192. data/lib/omml/models/ct_wrap_tight.rb +27 -0
  193. data/lib/omml/models/ct_wrap_top_bottom.rb +25 -0
  194. data/lib/omml/models/ct_x_align.rb +19 -0
  195. data/lib/omml/models/ct_y_align.rb +19 -0
  196. data/lib/omml/models/groups/eg_content_run_content.rb +26 -0
  197. data/lib/omml/models/groups/eg_math_content.rb +20 -0
  198. data/lib/omml/models/groups/eg_o_math_elements.rb +20 -0
  199. data/lib/omml/models/groups/eg_o_math_math_elements.rb +56 -0
  200. data/lib/omml/models/groups/eg_office_art_extension_list.rb +16 -0
  201. data/lib/omml/models/groups/eg_p_content.rb +24 -0
  202. data/lib/omml/models/groups/eg_r_pr.rb +17 -0
  203. data/lib/omml/models/groups/eg_r_pr_base.rb +93 -0
  204. data/lib/omml/models/groups/eg_r_pr_content.rb +19 -0
  205. data/lib/omml/models/groups/eg_r_pr_math.rb +23 -0
  206. data/lib/omml/models/groups/eg_range_markup_elements.rb +60 -0
  207. data/lib/omml/models/groups/eg_ruby_content.rb +20 -0
  208. data/lib/omml/models/groups/eg_run_inner_content.rb +83 -0
  209. data/lib/omml/models/groups/eg_run_level_elts.rb +34 -0
  210. data/lib/omml/models/groups/eg_script_style.rb +18 -0
  211. data/lib/omml/models/groups/eg_word_r_pr.rb +17 -0
  212. data/lib/omml/models/groups/eg_wrap_type.rb +27 -0
  213. data/lib/omml/models/groups.rb +19 -0
  214. data/lib/omml/models/o_math.rb +21 -0
  215. data/lib/omml/models/o_math_para.rb +25 -0
  216. data/lib/omml/models/simple_types/enum_string.rb +42 -0
  217. data/lib/omml/models/simple_types/hex_binary.rb +15 -0
  218. data/lib/omml/models/simple_types/st_adj_coordinate.rb +24 -0
  219. data/lib/omml/models/simple_types/st_align_h.rb +17 -0
  220. data/lib/omml/models/simple_types/st_align_v.rb +17 -0
  221. data/lib/omml/models/simple_types/st_border.rb +203 -0
  222. data/lib/omml/models/simple_types/st_br_clear.rb +16 -0
  223. data/lib/omml/models/simple_types/st_br_type.rb +15 -0
  224. data/lib/omml/models/simple_types/st_break_bin.rb +15 -0
  225. data/lib/omml/models/simple_types/st_break_bin_sub.rb +15 -0
  226. data/lib/omml/models/simple_types/st_calendar_type.rb +22 -0
  227. data/lib/omml/models/simple_types/st_combine_brackets.rb +17 -0
  228. data/lib/omml/models/simple_types/st_coordinate.rb +16 -0
  229. data/lib/omml/models/simple_types/st_displaced_by_custom_xml.rb +14 -0
  230. data/lib/omml/models/simple_types/st_ed_grp.rb +19 -0
  231. data/lib/omml/models/simple_types/st_em.rb +17 -0
  232. data/lib/omml/models/simple_types/st_f_type.rb +16 -0
  233. data/lib/omml/models/simple_types/st_ff_text_type.rb +18 -0
  234. data/lib/omml/models/simple_types/st_fld_char_type.rb +15 -0
  235. data/lib/omml/models/simple_types/st_geom_guide_name.rb +10 -0
  236. data/lib/omml/models/simple_types/st_hex_color.rb +24 -0
  237. data/lib/omml/models/simple_types/st_highlight_color.rb +29 -0
  238. data/lib/omml/models/simple_types/st_hint.rb +15 -0
  239. data/lib/omml/models/simple_types/st_info_text_type.rb +14 -0
  240. data/lib/omml/models/simple_types/st_integer2.rb +15 -0
  241. data/lib/omml/models/simple_types/st_integer255.rb +15 -0
  242. data/lib/omml/models/simple_types/st_jc.rb +16 -0
  243. data/lib/omml/models/simple_types/st_lang.rb +24 -0
  244. data/lib/omml/models/simple_types/st_lim_loc.rb +14 -0
  245. data/lib/omml/models/simple_types/st_lock.rb +16 -0
  246. data/lib/omml/models/simple_types/st_on_off.rb +18 -0
  247. data/lib/omml/models/simple_types/st_p_tab_alignment.rb +15 -0
  248. data/lib/omml/models/simple_types/st_p_tab_leader.rb +17 -0
  249. data/lib/omml/models/simple_types/st_p_tab_relative_to.rb +14 -0
  250. data/lib/omml/models/simple_types/st_positive_coordinate.rb +15 -0
  251. data/lib/omml/models/simple_types/st_proof_err.rb +16 -0
  252. data/lib/omml/models/simple_types/st_rel_from_h.rb +20 -0
  253. data/lib/omml/models/simple_types/st_rel_from_v.rb +20 -0
  254. data/lib/omml/models/simple_types/st_ruby_align.rb +18 -0
  255. data/lib/omml/models/simple_types/st_script.rb +18 -0
  256. data/lib/omml/models/simple_types/st_sdt_date_mapping_type.rb +15 -0
  257. data/lib/omml/models/simple_types/st_shd.rb +50 -0
  258. data/lib/omml/models/simple_types/st_shp.rb +14 -0
  259. data/lib/omml/models/simple_types/st_spacing_rule.rb +15 -0
  260. data/lib/omml/models/simple_types/st_style.rb +16 -0
  261. data/lib/omml/models/simple_types/st_text_effect.rb +19 -0
  262. data/lib/omml/models/simple_types/st_text_scale.rb +15 -0
  263. data/lib/omml/models/simple_types/st_theme.rb +20 -0
  264. data/lib/omml/models/simple_types/st_theme_color.rb +29 -0
  265. data/lib/omml/models/simple_types/st_top_bot.rb +14 -0
  266. data/lib/omml/models/simple_types/st_underline.rb +30 -0
  267. data/lib/omml/models/simple_types/st_vertical_align_run.rb +15 -0
  268. data/lib/omml/models/simple_types/st_wrap_text.rb +16 -0
  269. data/lib/omml/models/simple_types/st_x_align.rb +15 -0
  270. data/lib/omml/models/simple_types/st_y_align.rb +15 -0
  271. data/lib/omml/models/simple_types/token.rb +35 -0
  272. data/lib/omml/models/simple_types/unsigned_int.rb +15 -0
  273. data/lib/omml/models/simple_types/unsigned_long.rb +15 -0
  274. data/lib/omml/models/simple_types.rb +60 -0
  275. data/lib/omml/models.rb +183 -0
  276. data/lib/omml/namespace.rb +9 -0
  277. data/lib/omml/parser.rb +39 -0
  278. data/lib/omml/type_substitutions.rb +89 -0
  279. data/lib/omml/version.rb +2 -2
  280. data/lib/omml/wordprocessing_namespace.rb +9 -0
  281. data/lib/omml.rb +31 -3
  282. data/omml.gemspec +18 -14
  283. data/sig/omml.rbs +1 -1
  284. metadata +335 -6
@@ -0,0 +1,183 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Omml
4
+ module Models
5
+ end
6
+ end
7
+
8
+ require_relative "models/simple_types"
9
+ require_relative "models/ct_acc"
10
+ require_relative "models/ct_acc_pr"
11
+ require_relative "models/ct_anchor"
12
+ require_relative "models/ct_attr"
13
+ require_relative "models/ct_picture_base"
14
+ require_relative "models/ct_bar"
15
+ require_relative "models/ct_bar_pr"
16
+ require_relative "models/ct_markup"
17
+ require_relative "models/ct_markup_range"
18
+ require_relative "models/ct_bookmark_range"
19
+ require_relative "models/ct_bookmark"
20
+ require_relative "models/ct_border"
21
+ require_relative "models/ct_border_box"
22
+ require_relative "models/ct_border_box_pr"
23
+ require_relative "models/ct_box"
24
+ require_relative "models/ct_box_pr"
25
+ require_relative "models/ct_br"
26
+ require_relative "models/ct_break_bin"
27
+ require_relative "models/ct_break_bin_sub"
28
+ require_relative "models/ct_calendar_type"
29
+ require_relative "models/ct_track_change"
30
+ require_relative "models/ct_char"
31
+ require_relative "models/ct_color"
32
+ require_relative "models/ct_control"
33
+ require_relative "models/ct_ctrl_pr"
34
+ require_relative "models/ct_custom_xml_pr"
35
+ require_relative "models/ct_custom_xml_run"
36
+ require_relative "models/ct_d"
37
+ require_relative "models/ct_d_pr"
38
+ require_relative "models/ct_data_binding"
39
+ require_relative "models/ct_decimal_number"
40
+ require_relative "models/ct_drawing"
41
+ require_relative "models/ct_east_asian_layout"
42
+ require_relative "models/ct_effect_extent"
43
+ require_relative "models/ct_em"
44
+ require_relative "models/ct_empty"
45
+ require_relative "models/ct_eq_arr"
46
+ require_relative "models/ct_eq_arr_pr"
47
+ require_relative "models/ct_f"
48
+ require_relative "models/ct_f_pr"
49
+ require_relative "models/ct_f_type"
50
+ require_relative "models/ct_ff_check_box"
51
+ require_relative "models/ct_ff_data"
52
+ require_relative "models/ct_ff_help_text"
53
+ require_relative "models/ct_ff_name"
54
+ require_relative "models/ct_ff_status_text"
55
+ require_relative "models/ct_ff_text_input"
56
+ require_relative "models/ct_ff_text_type"
57
+ require_relative "models/ct_ffdd_list"
58
+ require_relative "models/ct_fit_text"
59
+ require_relative "models/ct_fld_char"
60
+ require_relative "models/ct_rel"
61
+ require_relative "models/ct_fonts"
62
+ require_relative "models/ct_ftn_edn_ref"
63
+ require_relative "models/ct_func"
64
+ require_relative "models/ct_func_pr"
65
+ require_relative "models/ct_graphical_object"
66
+ require_relative "models/ct_graphical_object_data"
67
+ require_relative "models/ct_graphical_object_frame_locking"
68
+ require_relative "models/ct_group_chr"
69
+ require_relative "models/ct_group_chr_pr"
70
+ require_relative "models/ct_highlight"
71
+ require_relative "models/ct_hps_measure"
72
+ require_relative "models/ct_hyperlink"
73
+ require_relative "models/ct_inline"
74
+ require_relative "models/ct_integer2"
75
+ require_relative "models/ct_integer255"
76
+ require_relative "models/ct_lang"
77
+ require_relative "models/ct_language"
78
+ require_relative "models/ct_lim_loc"
79
+ require_relative "models/ct_lim_low"
80
+ require_relative "models/ct_lim_low_pr"
81
+ require_relative "models/ct_lim_upp"
82
+ require_relative "models/ct_lim_upp_pr"
83
+ require_relative "models/ct_lock"
84
+ require_relative "models/ct_m"
85
+ require_relative "models/ct_m_pr"
86
+ require_relative "models/ct_macro_name"
87
+ require_relative "models/ct_manual_break"
88
+ require_relative "models/ct_math_pr"
89
+ require_relative "models/ct_mc"
90
+ require_relative "models/ct_mc_pr"
91
+ require_relative "models/ct_mcs"
92
+ require_relative "models/ct_move_bookmark"
93
+ require_relative "models/ct_mr"
94
+ require_relative "models/ct_nary"
95
+ require_relative "models/ct_nary_pr"
96
+ require_relative "models/ct_non_visual_drawing_props"
97
+ require_relative "models/ct_non_visual_graphic_frame_properties"
98
+ require_relative "models/ct_o_math"
99
+ require_relative "models/ct_o_math_arg"
100
+ require_relative "models/ct_o_math_arg_pr"
101
+ require_relative "models/ct_o_math_jc"
102
+ require_relative "models/ct_o_math_para"
103
+ require_relative "models/ct_o_math_para_pr"
104
+ require_relative "models/ct_object"
105
+ require_relative "models/ct_office_art_extension"
106
+ require_relative "models/ct_office_art_extension_list"
107
+ require_relative "models/ct_on_off"
108
+ require_relative "models/ct_wordprocessing_on_off"
109
+ require_relative "models/ct_p_tab"
110
+ require_relative "models/ct_perm"
111
+ require_relative "models/ct_perm_start"
112
+ require_relative "models/ct_phant"
113
+ require_relative "models/ct_phant_pr"
114
+ require_relative "models/ct_picture"
115
+ require_relative "models/ct_placeholder"
116
+ require_relative "models/ct_point2_d"
117
+ require_relative "models/ct_pos_h"
118
+ require_relative "models/ct_pos_v"
119
+ require_relative "models/ct_positive_size2_d"
120
+ require_relative "models/ct_proof_err"
121
+ require_relative "models/ct_r"
122
+ require_relative "models/ct_r_pr"
123
+ require_relative "models/ct_r_pr_change"
124
+ require_relative "models/ct_r_pr_original"
125
+ require_relative "models/ct_rad"
126
+ require_relative "models/ct_rad_pr"
127
+ require_relative "models/ct_rpr"
128
+ require_relative "models/ct_ruby"
129
+ require_relative "models/ct_ruby_align"
130
+ require_relative "models/ct_ruby_content"
131
+ require_relative "models/ct_ruby_pr"
132
+ require_relative "models/ct_run_track_change"
133
+ require_relative "models/ct_s_pre"
134
+ require_relative "models/ct_s_pre_pr"
135
+ require_relative "models/ct_s_sub"
136
+ require_relative "models/ct_s_sub_pr"
137
+ require_relative "models/ct_s_sub_sup"
138
+ require_relative "models/ct_s_sub_sup_pr"
139
+ require_relative "models/ct_s_sup"
140
+ require_relative "models/ct_s_sup_pr"
141
+ require_relative "models/ct_script"
142
+ require_relative "models/ct_sdt_combo_box"
143
+ require_relative "models/ct_sdt_content_run"
144
+ require_relative "models/ct_sdt_date"
145
+ require_relative "models/ct_sdt_date_mapping_type"
146
+ require_relative "models/ct_sdt_doc_part"
147
+ require_relative "models/ct_sdt_drop_down_list"
148
+ require_relative "models/ct_sdt_end_pr"
149
+ require_relative "models/ct_sdt_list_item"
150
+ require_relative "models/ct_sdt_pr"
151
+ require_relative "models/ct_sdt_run"
152
+ require_relative "models/ct_sdt_text"
153
+ require_relative "models/ct_shd"
154
+ require_relative "models/ct_shp"
155
+ require_relative "models/ct_signed_hps_measure"
156
+ require_relative "models/ct_signed_twips_measure"
157
+ require_relative "models/ct_simple_field"
158
+ require_relative "models/ct_smart_tag_pr"
159
+ require_relative "models/ct_smart_tag_run"
160
+ require_relative "models/ct_spacing_rule"
161
+ require_relative "models/ct_string"
162
+ require_relative "models/ct_style"
163
+ require_relative "models/ct_sym"
164
+ require_relative "models/ct_text"
165
+ require_relative "models/ct_text_effect"
166
+ require_relative "models/ct_text_scale"
167
+ require_relative "models/ct_top_bot"
168
+ require_relative "models/ct_track_change_numbering"
169
+ require_relative "models/ct_twips_measure"
170
+ require_relative "models/ct_un_signed_integer"
171
+ require_relative "models/ct_underline"
172
+ require_relative "models/ct_vertical_align_run"
173
+ require_relative "models/ct_wrap_none"
174
+ require_relative "models/ct_wrap_path"
175
+ require_relative "models/ct_wrap_square"
176
+ require_relative "models/ct_wrap_through"
177
+ require_relative "models/ct_wrap_tight"
178
+ require_relative "models/ct_wrap_top_bottom"
179
+ require_relative "models/ct_x_align"
180
+ require_relative "models/ct_y_align"
181
+ require_relative "models/groups"
182
+ require_relative "models/o_math"
183
+ require_relative "models/o_math_para"
@@ -0,0 +1,9 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Omml
4
+ class Namespace < Lutaml::Xml::W3c::XmlNamespace
5
+ uri "http://schemas.openxmlformats.org/officeDocument/2006/math"
6
+ prefix_default "m"
7
+ attribute_form_default :qualified
8
+ end
9
+ end
@@ -0,0 +1,39 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Omml
4
+ module Parser
5
+ extend self
6
+
7
+ def parse(input, context: Omml::Configuration.context_id)
8
+ context_id = prepare_context(context)
9
+ document = parse_document(input)
10
+ root_class = Omml::Configuration.resolve_root_class(document,
11
+ context: context_id)
12
+ root_class.of_xml(document, register: context_id)
13
+ end
14
+
15
+ def root_name(input)
16
+ Omml::Configuration.root_name_from_document(parse_document(input))
17
+ end
18
+
19
+ private
20
+
21
+ def prepare_context(context)
22
+ context_id = context.to_sym
23
+
24
+ if context_id == Omml::Configuration.context_id
25
+ Omml::Configuration.populate_context! unless Omml::Configuration.context(context_id)
26
+ else
27
+ Omml::Configuration.require_context!(context_id)
28
+ end
29
+
30
+ context_id
31
+ end
32
+
33
+ def parse_document(input)
34
+ Omml::Configuration.xml_adapter.parse(input)
35
+ rescue Lutaml::Model::InvalidFormatError => e
36
+ raise Omml::Errors::InvalidXmlError, e.message
37
+ end
38
+ end
39
+ end
@@ -0,0 +1,89 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Omml
4
+ module TypeSubstitutions
5
+ # This module is the small translation table between OOXML schema names and
6
+ # the Ruby types OMML actually uses at runtime.
7
+ #
8
+ # Generated model classes register themselves with Omml::Configuration, but
9
+ # OOXML also has simple-type names that are schema ids rather than concrete
10
+ # generated model classes. Lutaml resolves attributes through the active
11
+ # type context by those schema ids. Without these aliases, parsing can fail
12
+ # on a known schema name such as `st_string` or
13
+ # `st_unsigned_decimal_number` even though the correct Ruby type exists.
14
+ #
15
+ # Keeping those aliases in this small module preserves the class-owned
16
+ # registration flow for real models, avoids no-op wrapper classes for every
17
+ # redundant simple type, and keeps the schema-id compatibility layer visible
18
+ # in one place. The targets are lambdas so loading this file does not force
19
+ # the model manifest to load before context population asks for the aliases.
20
+ GROUPED_ALIASES = [
21
+ {
22
+ aliases: %i[long],
23
+ target: -> { Lutaml::Model::Type::Decimal },
24
+ },
25
+ {
26
+ aliases: %i[st_date_time],
27
+ target: -> { Lutaml::Model::Type::DateTime },
28
+ },
29
+ {
30
+ aliases: %i[
31
+ st_decimal_number
32
+ st_position_offset
33
+ st_signed_hps_measure
34
+ st_signed_twips_measure
35
+ ],
36
+ target: -> { Lutaml::Model::Type::Integer },
37
+ },
38
+ {
39
+ aliases: %i[
40
+ st_char
41
+ st_ff_help_text_val
42
+ st_ff_name
43
+ st_ff_status_text_val
44
+ st_macro_name
45
+ st_relationship_id
46
+ st_string
47
+ ],
48
+ target: -> { Lutaml::Model::Type::String },
49
+ },
50
+ {
51
+ aliases: %i[
52
+ st_drawing_element_id
53
+ st_twips_measure
54
+ st_un_signed_integer
55
+ st_wrap_distance
56
+ ],
57
+ target: -> { Omml::Models::UnsignedInt },
58
+ },
59
+ {
60
+ aliases: %i[
61
+ st_eighth_point_measure
62
+ st_hps_measure
63
+ st_point_measure
64
+ st_unsigned_decimal_number
65
+ ],
66
+ target: -> { Omml::Models::UnsignedLong },
67
+ },
68
+ {
69
+ aliases: %i[
70
+ st_short_hex_number
71
+ st_uchar_hex_number
72
+ ],
73
+ target: -> { Omml::Models::HexBinary },
74
+ },
75
+ ].freeze
76
+
77
+ module_function
78
+
79
+ def each_alias
80
+ GROUPED_ALIASES.each do |entry|
81
+ target = entry.fetch(:target).call
82
+
83
+ entry.fetch(:aliases).each do |type_name|
84
+ yield type_name, target
85
+ end
86
+ end
87
+ end
88
+ end
89
+ end
data/lib/omml/version.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- module Oomml
4
- VERSION = '0.1.0'
3
+ module Omml
4
+ VERSION = "0.2.1"
5
5
  end
@@ -0,0 +1,9 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Omml
4
+ class WordprocessingNamespace < Lutaml::Xml::W3c::XmlNamespace
5
+ uri "http://schemas.openxmlformats.org/wordprocessingml/2006/main"
6
+ prefix_default "w"
7
+ attribute_form_default :qualified
8
+ end
9
+ end
data/lib/omml.rb CHANGED
@@ -1,9 +1,37 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require_relative 'omml/version'
3
+ require "lutaml/model"
4
4
 
5
- module Oomml
5
+ module Omml
6
6
  class Error < StandardError; end
7
7
 
8
- # Your code goes here...
8
+ autoload :VERSION, "omml/version"
9
+ autoload :Configuration, "omml/configuration"
10
+ autoload :Errors, "omml/errors"
11
+ autoload :Models, "omml/models"
12
+ autoload :Namespace, "omml/namespace"
13
+ autoload :Parser, "omml/parser"
14
+ autoload :TypeSubstitutions, "omml/type_substitutions"
15
+ autoload :WordprocessingNamespace, "omml/wordprocessing_namespace"
16
+
17
+ module_function
18
+
19
+ def parse(input, context: nil)
20
+ Parser.parse(
21
+ string_input(input),
22
+ context: context || Configuration.context_id,
23
+ )
24
+ end
25
+
26
+ def root_name(input)
27
+ Parser.root_name(string_input(input))
28
+ end
29
+
30
+ def string_input(input)
31
+ return input if input.is_a?(String)
32
+
33
+ raise ArgumentError, "Input must be a String"
34
+ end
35
+
36
+ private_class_method :string_input
9
37
  end
data/omml.gemspec CHANGED
@@ -1,34 +1,38 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require_relative 'lib/omml/version'
3
+ require_relative "lib/omml/version"
4
4
 
5
5
  Gem::Specification.new do |spec|
6
- spec.name = 'omml'
7
- spec.version = Oomml::VERSION
8
- spec.authors = ['Ribose Inc.']
9
- spec.email = ['open.source@ribose.com']
6
+ spec.name = "omml"
7
+ spec.version = Omml::VERSION
8
+ spec.authors = ["Ribose Inc."]
9
+ spec.email = ["open.source@ribose.com"]
10
10
 
11
- spec.summary = 'OMML (Office Math Markup Language) parser by Plurimath.'
11
+ spec.summary = "OMML (Office Math Markup Language) parser by Plurimath."
12
12
  spec.description = <<~DESCRIPTION
13
13
  OMML (Office Math Markup Language) parser and builder used in Plurimath.
14
14
  DESCRIPTION
15
15
 
16
- spec.homepage = 'https://github.com/plurimath/omml'
17
- spec.license = 'BSD-2-Clause'
16
+ spec.homepage = "https://github.com/plurimath/omml"
17
+ spec.license = "BSD-2-Clause"
18
18
 
19
- spec.test_files = `git ls-files -- {spec}/*`.split("\n")
20
- spec.required_ruby_version = Gem::Requirement.new('>= 3.0.0')
19
+ spec.required_ruby_version = Gem::Requirement.new(">= 3.0.0")
21
20
 
22
21
  # Specify which files should be added to the gem when it is released.
23
- # The `git ls-files -z` loads the files in the RubyGem that have been added into git.
22
+ # `git ls-files -z` loads files that have been added to git.
24
23
  spec.files = Dir.chdir(File.expand_path(__dir__)) do
25
24
  `git ls-files -z`.split("\x0").reject do |f|
26
25
  f.match(%r{^(test|spec|features)/})
27
26
  end
28
27
  end
29
- spec.bindir = 'exe'
28
+ spec.bindir = "exe"
30
29
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
31
- spec.require_paths = ['lib']
30
+ spec.require_paths = ["lib"]
32
31
 
33
- spec.add_runtime_dependency 'lutaml-model'
32
+ spec.add_dependency "lutaml-model", ">= 0.8.0", "< 1.0"
33
+ spec.add_dependency "moxml", ">= 0.1.18", "< 0.2"
34
+ spec.add_dependency "oga", "~> 3.4"
35
+ spec.add_dependency "ox", "~> 2.14"
36
+
37
+ spec.metadata["rubygems_mfa_required"] = "true"
34
38
  end
data/sig/omml.rbs CHANGED
@@ -1,4 +1,4 @@
1
- module Oomml
1
+ module Omml
2
2
  VERSION: String
3
3
  # See the writing guide of rbs: https://github.com/ruby/rbs#guides
4
4
  end