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,47 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Omml
4
+ module Configuration
5
+ # Extended only by Omml::Configuration together with the sibling modules.
6
+ module TypeResolver
7
+ def resolve_type(type_name, context: context_id)
8
+ require_context!(context)
9
+
10
+ Lutaml::Model::GlobalContext.resolve_type(type_name, context)
11
+ end
12
+
13
+ def root_name_from_document(document)
14
+ root = root_element_from(document)
15
+ root_name = root.name.split(":").last
16
+ return root_name if root_namespace_uri(root) == Omml::Namespace.uri
17
+
18
+ raise Omml::Errors::UnsupportedRootElementError, root_name
19
+ end
20
+
21
+ def resolve_root_class(document, context: context_id)
22
+ resolve_type(
23
+ resolve_root_type(root_name_from_document(document)),
24
+ context: context,
25
+ )
26
+ end
27
+
28
+ private
29
+
30
+ def root_element_from(document)
31
+ document.root || raise(Omml::Errors::RootElementNotFoundError)
32
+ end
33
+
34
+ def root_namespace_uri(root)
35
+ return unless root.respond_to?(:namespace)
36
+
37
+ root.namespace&.uri
38
+ end
39
+
40
+ def resolve_root_type(root_name)
41
+ ROOT_TYPES.fetch(root_name) do
42
+ raise Omml::Errors::UnsupportedRootElementError, root_name
43
+ end
44
+ end
45
+ end
46
+ end
47
+ end
@@ -0,0 +1,25 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative "configuration/adapter"
4
+ require_relative "configuration/context_registry"
5
+ require_relative "configuration/model_registry"
6
+ require_relative "configuration/type_resolver"
7
+
8
+ module Omml
9
+ module Configuration
10
+ extend Adapter
11
+ extend ContextRegistry
12
+ extend ModelRegistry
13
+ extend TypeResolver
14
+
15
+ SCHEMA_MODEL_PREFIXES = %w[CT EG ST].freeze
16
+ ROOT_TYPES = {
17
+ "oMath" => :o_math,
18
+ "oMathPara" => :o_math_para,
19
+ }.freeze
20
+
21
+ def self.context_id
22
+ :omml
23
+ end
24
+ end
25
+ end
@@ -0,0 +1,8 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Omml
4
+ module Errors
5
+ class BaseError < Omml::Error
6
+ end
7
+ end
8
+ end
@@ -0,0 +1,8 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Omml
4
+ module Errors
5
+ class InvalidXmlError < BaseError
6
+ end
7
+ end
8
+ end
@@ -0,0 +1,23 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Omml
4
+ module Errors
5
+ class MissingContextError < BaseError
6
+ def initialize(id)
7
+ super(build_message(id.to_sym))
8
+ end
9
+
10
+ private
11
+
12
+ def build_message(id)
13
+ if id == :omml
14
+ "OMML context :omml is not populated. " \
15
+ "Call Omml::Configuration.populate_context! first."
16
+ else
17
+ "OMML context :#{id} is not available. " \
18
+ "Create or populate it explicitly before use."
19
+ end
20
+ end
21
+ end
22
+ end
23
+ end
@@ -0,0 +1,11 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Omml
4
+ module Errors
5
+ class RootElementNotFoundError < BaseError
6
+ def initialize
7
+ super("Unable to determine OMML root element")
8
+ end
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,11 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Omml
4
+ module Errors
5
+ class UnsupportedRootElementError < BaseError
6
+ def initialize(root_name)
7
+ super("Unsupported OMML root element: #{root_name}")
8
+ end
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,11 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Omml
4
+ module Errors
5
+ class XmlAdapterNotConfiguredError < BaseError
6
+ def initialize
7
+ super("XML adapter is not configured")
8
+ end
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,15 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Omml
4
+ module Errors
5
+ autoload :BaseError, "omml/errors/base_error"
6
+ autoload :InvalidXmlError, "omml/errors/invalid_xml_error"
7
+ autoload :MissingContextError, "omml/errors/missing_context_error"
8
+ autoload :RootElementNotFoundError,
9
+ "omml/errors/root_element_not_found_error"
10
+ autoload :UnsupportedRootElementError,
11
+ "omml/errors/unsupported_root_element_error"
12
+ autoload :XmlAdapterNotConfiguredError,
13
+ "omml/errors/xml_adapter_not_configured_error"
14
+ end
15
+ end
@@ -0,0 +1,23 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Omml
4
+ module Models
5
+ class CTAcc < Lutaml::Model::Serializable
6
+ attribute :acc_pr, :ct_acc_pr, collection: 0..1
7
+ attribute :e, :ct_o_math_arg
8
+
9
+ xml do
10
+ element "CT_Acc"
11
+
12
+ namespace Omml::Namespace
13
+
14
+ sequence do
15
+ map_element :accPr, to: :acc_pr
16
+ map_element :e, to: :e, render_empty: true
17
+ end
18
+ end
19
+ end
20
+
21
+ Omml::Configuration.register_model(CTAcc)
22
+ end
23
+ end
@@ -0,0 +1,23 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Omml
4
+ module Models
5
+ class CTAccPr < Lutaml::Model::Serializable
6
+ attribute :chr, :ct_char, collection: 0..1
7
+ attribute :ctrl_pr, :ct_ctrl_pr, collection: 0..1
8
+
9
+ xml do
10
+ element "CT_AccPr"
11
+
12
+ namespace Omml::Namespace
13
+
14
+ sequence do
15
+ map_element :chr, to: :chr
16
+ map_element :ctrlPr, to: :ctrl_pr
17
+ end
18
+ end
19
+ end
20
+
21
+ Omml::Configuration.register_model(CTAccPr)
22
+ end
23
+ end
@@ -0,0 +1,60 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Omml
4
+ module Models
5
+ class CTAnchor < Lutaml::Model::Serializable
6
+ attribute :simple_pos, :ct_point2_d
7
+ attribute :position_h, :ct_pos_h
8
+ attribute :position_v, :ct_pos_v
9
+ attribute :extent, :ct_positive_size2_d
10
+ attribute :effect_extent, :ct_effect_extent, collection: 0..1
11
+ import_model_attributes :eg_wrap_type
12
+ attribute :doc_pr, :ct_non_visual_drawing_props, collection: 1..1
13
+ attribute :c_nv_graphic_frame_pr,
14
+ :ct_non_visual_graphic_frame_properties, collection: 0..1
15
+ attribute :graphic, :ct_graphical_object, collection: 1..1
16
+ attribute :dist_t, :st_wrap_distance
17
+ attribute :dist_b, :st_wrap_distance
18
+ attribute :dist_l, :st_wrap_distance
19
+ attribute :dist_r, :st_wrap_distance
20
+ attribute :simple_pos, :boolean
21
+ attribute :relative_height, :unsigned_int
22
+ attribute :behind_doc, :boolean
23
+ attribute :locked, :boolean
24
+ attribute :layout_in_cell, :boolean
25
+ attribute :hidden, :boolean
26
+ attribute :allow_overlap, :boolean
27
+
28
+ xml do
29
+ element "CT_Anchor"
30
+
31
+ namespace Omml::Namespace
32
+
33
+ sequence do
34
+ map_element :simplePos, to: :simple_pos, render_empty: true
35
+ map_element :positionH, to: :position_h, render_empty: true
36
+ map_element :positionV, to: :position_v, render_empty: true
37
+ map_element :extent, to: :extent, render_empty: true
38
+ map_element :effectExtent, to: :effect_extent
39
+ import_model_mappings :eg_wrap_type
40
+ map_element :docPr, to: :doc_pr, render_empty: true
41
+ map_element :cNvGraphicFramePr, to: :c_nv_graphic_frame_pr
42
+ map_element :graphic, to: :graphic, render_empty: true
43
+ end
44
+ map_attribute :distT, to: :dist_t
45
+ map_attribute :distB, to: :dist_b
46
+ map_attribute :distL, to: :dist_l
47
+ map_attribute :distR, to: :dist_r
48
+ map_attribute :simplePos, to: :simple_pos
49
+ map_attribute :relativeHeight, to: :relative_height
50
+ map_attribute :behindDoc, to: :behind_doc
51
+ map_attribute :locked, to: :locked
52
+ map_attribute :layoutInCell, to: :layout_in_cell
53
+ map_attribute :hidden, to: :hidden
54
+ map_attribute :allowOverlap, to: :allow_overlap
55
+ end
56
+ end
57
+
58
+ Omml::Configuration.register_model(CTAnchor)
59
+ end
60
+ end
@@ -0,0 +1,23 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Omml
4
+ module Models
5
+ class CTAttr < Lutaml::Model::Serializable
6
+ attribute :uri, :st_string
7
+ attribute :name, :st_string
8
+ attribute :val, :st_string
9
+
10
+ xml do
11
+ element "CT_Attr"
12
+
13
+ namespace Omml::Namespace
14
+
15
+ map_attribute :uri, to: :uri
16
+ map_attribute :name, to: :name
17
+ map_attribute :val, to: :val
18
+ end
19
+ end
20
+
21
+ Omml::Configuration.register_model(CTAttr)
22
+ end
23
+ end
@@ -0,0 +1,23 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Omml
4
+ module Models
5
+ class CTBar < Lutaml::Model::Serializable
6
+ attribute :bar_pr, :ct_bar_pr, collection: 0..1
7
+ attribute :e, :ct_o_math_arg
8
+
9
+ xml do
10
+ element "CT_Bar"
11
+
12
+ namespace Omml::Namespace
13
+
14
+ sequence do
15
+ map_element :barPr, to: :bar_pr
16
+ map_element :e, to: :e, render_empty: true
17
+ end
18
+ end
19
+ end
20
+
21
+ Omml::Configuration.register_model(CTBar)
22
+ end
23
+ end
@@ -0,0 +1,23 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Omml
4
+ module Models
5
+ class CTBarPr < Lutaml::Model::Serializable
6
+ attribute :pos, :ct_top_bot, collection: 0..1
7
+ attribute :ctrl_pr, :ct_ctrl_pr, collection: 0..1
8
+
9
+ xml do
10
+ element "CT_BarPr"
11
+
12
+ namespace Omml::Namespace
13
+
14
+ sequence do
15
+ map_element :pos, to: :pos
16
+ map_element :ctrlPr, to: :ctrl_pr
17
+ end
18
+ end
19
+ end
20
+
21
+ Omml::Configuration.register_model(CTBarPr)
22
+ end
23
+ end
@@ -0,0 +1,19 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Omml
4
+ module Models
5
+ class CTBookmark < CTBookmarkRange
6
+ attribute :name, :st_string
7
+
8
+ xml do
9
+ element "CT_Bookmark"
10
+
11
+ namespace Omml::Namespace
12
+
13
+ map_attribute :name, to: :name
14
+ end
15
+ end
16
+
17
+ Omml::Configuration.register_model(CTBookmark)
18
+ end
19
+ end
@@ -0,0 +1,21 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Omml
4
+ module Models
5
+ class CTBookmarkRange < CTMarkupRange
6
+ attribute :col_first, :st_decimal_number
7
+ attribute :col_last, :st_decimal_number
8
+
9
+ xml do
10
+ element "CT_BookmarkRange"
11
+
12
+ namespace Omml::Namespace
13
+
14
+ map_attribute :colFirst, to: :col_first
15
+ map_attribute :colLast, to: :col_last
16
+ end
17
+ end
18
+
19
+ Omml::Configuration.register_model(CTBookmarkRange)
20
+ end
21
+ end
@@ -0,0 +1,35 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Omml
4
+ module Models
5
+ class CTBorder < Lutaml::Model::Serializable
6
+ attribute :val, :st_border
7
+ attribute :color, :st_hex_color
8
+ attribute :theme_color, :st_theme_color
9
+ attribute :theme_tint, :st_uchar_hex_number
10
+ attribute :theme_shade, :st_uchar_hex_number
11
+ attribute :sz, :st_eighth_point_measure
12
+ attribute :space, :st_point_measure
13
+ attribute :shadow, :st_on_off
14
+ attribute :frame, :st_on_off
15
+
16
+ xml do
17
+ element "CT_Border"
18
+
19
+ namespace Omml::Namespace
20
+
21
+ map_attribute :val, to: :val
22
+ map_attribute :color, to: :color
23
+ map_attribute :themeColor, to: :theme_color
24
+ map_attribute :themeTint, to: :theme_tint
25
+ map_attribute :themeShade, to: :theme_shade
26
+ map_attribute :sz, to: :sz
27
+ map_attribute :space, to: :space
28
+ map_attribute :shadow, to: :shadow
29
+ map_attribute :frame, to: :frame
30
+ end
31
+ end
32
+
33
+ Omml::Configuration.register_model(CTBorder)
34
+ end
35
+ end
@@ -0,0 +1,24 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Omml
4
+ module Models
5
+ class CTBorderBox < Lutaml::Model::Serializable
6
+ attribute :border_box_pr, :ct_border_box_pr, collection: 0..1
7
+ attribute :e, :ct_o_math_arg
8
+
9
+ xml do
10
+ element "CT_BorderBox"
11
+
12
+ namespace Omml::Namespace
13
+ ordered
14
+
15
+ sequence do
16
+ map_element :borderBoxPr, to: :border_box_pr
17
+ map_element :e, to: :e, render_empty: true
18
+ end
19
+ end
20
+ end
21
+
22
+ Omml::Configuration.register_model(CTBorderBox)
23
+ end
24
+ end
@@ -0,0 +1,37 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Omml
4
+ module Models
5
+ class CTBorderBoxPr < Lutaml::Model::Serializable
6
+ attribute :hide_top, :ct_on_off, collection: 0..1
7
+ attribute :hide_bot, :ct_on_off, collection: 0..1
8
+ attribute :hide_left, :ct_on_off, collection: 0..1
9
+ attribute :hide_right, :ct_on_off, collection: 0..1
10
+ attribute :strike_h, :ct_on_off, collection: 0..1
11
+ attribute :strike_v, :ct_on_off, collection: 0..1
12
+ attribute :strike_bltr, :ct_on_off, collection: 0..1
13
+ attribute :strike_tlbr, :ct_on_off, collection: 0..1
14
+ attribute :ctrl_pr, :ct_ctrl_pr, collection: 0..1
15
+
16
+ xml do
17
+ element "CT_BorderBoxPr"
18
+
19
+ namespace Omml::Namespace
20
+
21
+ sequence do
22
+ map_element :hideTop, to: :hide_top
23
+ map_element :hideBot, to: :hide_bot
24
+ map_element :hideLeft, to: :hide_left
25
+ map_element :hideRight, to: :hide_right
26
+ map_element :strikeH, to: :strike_h
27
+ map_element :strikeV, to: :strike_v
28
+ map_element :strikeBLTR, to: :strike_bltr
29
+ map_element :strikeTLBR, to: :strike_tlbr
30
+ map_element :ctrlPr, to: :ctrl_pr
31
+ end
32
+ end
33
+ end
34
+
35
+ Omml::Configuration.register_model(CTBorderBoxPr)
36
+ end
37
+ end
@@ -0,0 +1,23 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Omml
4
+ module Models
5
+ class CTBox < Lutaml::Model::Serializable
6
+ attribute :box_pr, :ct_box_pr, collection: 0..1
7
+ attribute :e, :ct_o_math_arg
8
+
9
+ xml do
10
+ element "CT_Box"
11
+
12
+ namespace Omml::Namespace
13
+
14
+ sequence do
15
+ map_element :boxPr, to: :box_pr
16
+ map_element :e, to: :e, render_empty: true
17
+ end
18
+ end
19
+ end
20
+
21
+ Omml::Configuration.register_model(CTBox)
22
+ end
23
+ end
@@ -0,0 +1,31 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Omml
4
+ module Models
5
+ class CTBoxPr < Lutaml::Model::Serializable
6
+ attribute :op_emu, :ct_on_off, collection: 0..1
7
+ attribute :no_break, :ct_on_off, collection: 0..1
8
+ attribute :diff, :ct_on_off, collection: 0..1
9
+ attribute :brk, :ct_manual_break, collection: 0..1
10
+ attribute :aln, :ct_on_off, collection: 0..1
11
+ attribute :ctrl_pr, :ct_ctrl_pr, collection: 0..1
12
+
13
+ xml do
14
+ element "CT_BoxPr"
15
+
16
+ namespace Omml::Namespace
17
+
18
+ sequence do
19
+ map_element :opEmu, to: :op_emu
20
+ map_element :noBreak, to: :no_break
21
+ map_element :diff, to: :diff
22
+ map_element :brk, to: :brk
23
+ map_element :aln, to: :aln
24
+ map_element :ctrlPr, to: :ctrl_pr
25
+ end
26
+ end
27
+ end
28
+
29
+ Omml::Configuration.register_model(CTBoxPr)
30
+ end
31
+ end
@@ -0,0 +1,21 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Omml
4
+ module Models
5
+ class CTBr < Lutaml::Model::Serializable
6
+ attribute :type, :st_br_type
7
+ attribute :clear, :st_br_clear
8
+
9
+ xml do
10
+ element "CT_Br"
11
+
12
+ namespace Omml::Namespace
13
+
14
+ map_attribute :type, to: :type
15
+ map_attribute :clear, to: :clear
16
+ end
17
+ end
18
+
19
+ Omml::Configuration.register_model(CTBr)
20
+ end
21
+ end
@@ -0,0 +1,19 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Omml
4
+ module Models
5
+ class CTBreakBin < Lutaml::Model::Serializable
6
+ attribute :val, :st_break_bin
7
+
8
+ xml do
9
+ element "CT_BreakBin"
10
+
11
+ namespace Omml::Namespace
12
+
13
+ map_attribute :val, to: :val
14
+ end
15
+ end
16
+
17
+ Omml::Configuration.register_model(CTBreakBin)
18
+ end
19
+ end
@@ -0,0 +1,19 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Omml
4
+ module Models
5
+ class CTBreakBinSub < Lutaml::Model::Serializable
6
+ attribute :val, :st_break_bin_sub
7
+
8
+ xml do
9
+ element "CT_BreakBinSub"
10
+
11
+ namespace Omml::Namespace
12
+
13
+ map_attribute :val, to: :val
14
+ end
15
+ end
16
+
17
+ Omml::Configuration.register_model(CTBreakBinSub)
18
+ end
19
+ end
@@ -0,0 +1,19 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Omml
4
+ module Models
5
+ class CTCalendarType < Lutaml::Model::Serializable
6
+ attribute :val, :st_calendar_type
7
+
8
+ xml do
9
+ element "CT_CalendarType"
10
+
11
+ namespace Omml::Namespace
12
+
13
+ map_attribute :val, to: :val
14
+ end
15
+ end
16
+
17
+ Omml::Configuration.register_model(CTCalendarType)
18
+ end
19
+ end
@@ -0,0 +1,19 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Omml
4
+ module Models
5
+ class CTChar < Lutaml::Model::Serializable
6
+ attribute :val, :st_char
7
+
8
+ xml do
9
+ element "CT_Char"
10
+
11
+ namespace Omml::Namespace
12
+
13
+ map_attribute :val, to: :val, render_empty: true
14
+ end
15
+ end
16
+
17
+ Omml::Configuration.register_model(CTChar)
18
+ end
19
+ end
@@ -0,0 +1,25 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Omml
4
+ module Models
5
+ class CTColor < Lutaml::Model::Serializable
6
+ attribute :val, :st_hex_color
7
+ attribute :theme_color, :st_theme_color
8
+ attribute :theme_tint, :st_uchar_hex_number
9
+ attribute :theme_shade, :st_uchar_hex_number
10
+
11
+ xml do
12
+ element "CT_Color"
13
+
14
+ namespace Omml::Namespace
15
+
16
+ map_attribute :val, to: :val
17
+ map_attribute :themeColor, to: :theme_color
18
+ map_attribute :themeTint, to: :theme_tint
19
+ map_attribute :themeShade, to: :theme_shade
20
+ end
21
+ end
22
+
23
+ Omml::Configuration.register_model(CTColor)
24
+ end
25
+ end