omml 0.1.0 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.github/workflows/rake.yml +22 -0
- data/.github/workflows/release.yml +23 -0
- data/.gitignore +1 -0
- data/.rubocop.yml +25 -0
- data/.rubocop_todo.yml +19 -0
- data/CLAUDE.md +64 -0
- data/Gemfile +11 -7
- data/README.adoc +222 -4
- data/Rakefile +3 -3
- data/bin/console +3 -3
- data/lib/omml/configuration/adapter.rb +22 -0
- data/lib/omml/configuration/context_registry.rb +131 -0
- data/lib/omml/configuration/model_registry.rb +60 -0
- data/lib/omml/configuration/type_resolver.rb +47 -0
- data/lib/omml/configuration.rb +25 -0
- data/lib/omml/errors/base_error.rb +8 -0
- data/lib/omml/errors/invalid_xml_error.rb +8 -0
- data/lib/omml/errors/missing_context_error.rb +23 -0
- data/lib/omml/errors/root_element_not_found_error.rb +11 -0
- data/lib/omml/errors/unsupported_root_element_error.rb +11 -0
- data/lib/omml/errors/xml_adapter_not_configured_error.rb +11 -0
- data/lib/omml/errors.rb +15 -0
- data/lib/omml/models/ct_acc.rb +23 -0
- data/lib/omml/models/ct_acc_pr.rb +23 -0
- data/lib/omml/models/ct_anchor.rb +60 -0
- data/lib/omml/models/ct_attr.rb +23 -0
- data/lib/omml/models/ct_bar.rb +23 -0
- data/lib/omml/models/ct_bar_pr.rb +23 -0
- data/lib/omml/models/ct_bookmark.rb +19 -0
- data/lib/omml/models/ct_bookmark_range.rb +21 -0
- data/lib/omml/models/ct_border.rb +35 -0
- data/lib/omml/models/ct_border_box.rb +24 -0
- data/lib/omml/models/ct_border_box_pr.rb +37 -0
- data/lib/omml/models/ct_box.rb +23 -0
- data/lib/omml/models/ct_box_pr.rb +31 -0
- data/lib/omml/models/ct_br.rb +21 -0
- data/lib/omml/models/ct_break_bin.rb +19 -0
- data/lib/omml/models/ct_break_bin_sub.rb +19 -0
- data/lib/omml/models/ct_calendar_type.rb +19 -0
- data/lib/omml/models/ct_char.rb +19 -0
- data/lib/omml/models/ct_color.rb +25 -0
- data/lib/omml/models/ct_control.rb +23 -0
- data/lib/omml/models/ct_ctrl_pr.rb +21 -0
- data/lib/omml/models/ct_custom_xml_pr.rb +23 -0
- data/lib/omml/models/ct_custom_xml_run.rb +27 -0
- data/lib/omml/models/ct_d.rb +23 -0
- data/lib/omml/models/ct_d_pr.rb +34 -0
- data/lib/omml/models/ct_data_binding.rb +23 -0
- data/lib/omml/models/ct_decimal_number.rb +19 -0
- data/lib/omml/models/ct_drawing.rb +23 -0
- data/lib/omml/models/ct_east_asian_layout.rb +27 -0
- data/lib/omml/models/ct_effect_extent.rb +25 -0
- data/lib/omml/models/ct_em.rb +19 -0
- data/lib/omml/models/ct_empty.rb +15 -0
- data/lib/omml/models/ct_eq_arr.rb +23 -0
- data/lib/omml/models/ct_eq_arr_pr.rb +31 -0
- data/lib/omml/models/ct_f.rb +25 -0
- data/lib/omml/models/ct_f_pr.rb +23 -0
- data/lib/omml/models/ct_f_type.rb +19 -0
- data/lib/omml/models/ct_ff_check_box.rb +29 -0
- data/lib/omml/models/ct_ff_data.rb +41 -0
- data/lib/omml/models/ct_ff_help_text.rb +21 -0
- data/lib/omml/models/ct_ff_name.rb +19 -0
- data/lib/omml/models/ct_ff_status_text.rb +21 -0
- data/lib/omml/models/ct_ff_text_input.rb +27 -0
- data/lib/omml/models/ct_ff_text_type.rb +19 -0
- data/lib/omml/models/ct_ffdd_list.rb +25 -0
- data/lib/omml/models/ct_fit_text.rb +21 -0
- data/lib/omml/models/ct_fld_char.rb +32 -0
- data/lib/omml/models/ct_fonts.rb +35 -0
- data/lib/omml/models/ct_ftn_edn_ref.rb +21 -0
- data/lib/omml/models/ct_func.rb +26 -0
- data/lib/omml/models/ct_func_pr.rb +21 -0
- data/lib/omml/models/ct_graphical_object.rb +21 -0
- data/lib/omml/models/ct_graphical_object_data.rb +19 -0
- data/lib/omml/models/ct_graphical_object_frame_locking.rb +33 -0
- data/lib/omml/models/ct_group_chr.rb +23 -0
- data/lib/omml/models/ct_group_chr_pr.rb +27 -0
- data/lib/omml/models/ct_highlight.rb +19 -0
- data/lib/omml/models/ct_hps_measure.rb +19 -0
- data/lib/omml/models/ct_hyperlink.rb +31 -0
- data/lib/omml/models/ct_inline.rb +38 -0
- data/lib/omml/models/ct_integer2.rb +19 -0
- data/lib/omml/models/ct_integer255.rb +19 -0
- data/lib/omml/models/ct_lang.rb +19 -0
- data/lib/omml/models/ct_language.rb +23 -0
- data/lib/omml/models/ct_lim_loc.rb +19 -0
- data/lib/omml/models/ct_lim_low.rb +26 -0
- data/lib/omml/models/ct_lim_low_pr.rb +21 -0
- data/lib/omml/models/ct_lim_upp.rb +25 -0
- data/lib/omml/models/ct_lim_upp_pr.rb +21 -0
- data/lib/omml/models/ct_lock.rb +19 -0
- data/lib/omml/models/ct_m.rb +23 -0
- data/lib/omml/models/ct_m_pr.rb +37 -0
- data/lib/omml/models/ct_macro_name.rb +19 -0
- data/lib/omml/models/ct_manual_break.rb +19 -0
- data/lib/omml/models/ct_markup.rb +19 -0
- data/lib/omml/models/ct_markup_range.rb +19 -0
- data/lib/omml/models/ct_math_pr.rb +53 -0
- data/lib/omml/models/ct_mc.rb +21 -0
- data/lib/omml/models/ct_mc_pr.rb +23 -0
- data/lib/omml/models/ct_mcs.rb +21 -0
- data/lib/omml/models/ct_move_bookmark.rb +21 -0
- data/lib/omml/models/ct_mr.rb +21 -0
- data/lib/omml/models/ct_nary.rb +27 -0
- data/lib/omml/models/ct_nary_pr.rb +31 -0
- data/lib/omml/models/ct_non_visual_drawing_props.rb +33 -0
- data/lib/omml/models/ct_non_visual_graphic_frame_properties.rb +24 -0
- data/lib/omml/models/ct_o_math.rb +22 -0
- data/lib/omml/models/ct_o_math_arg.rb +28 -0
- data/lib/omml/models/ct_o_math_arg_pr.rb +21 -0
- data/lib/omml/models/ct_o_math_jc.rb +19 -0
- data/lib/omml/models/ct_o_math_para.rb +26 -0
- data/lib/omml/models/ct_o_math_para_pr.rb +21 -0
- data/lib/omml/models/ct_object.rb +25 -0
- data/lib/omml/models/ct_office_art_extension.rb +19 -0
- data/lib/omml/models/ct_office_art_extension_list.rb +21 -0
- data/lib/omml/models/ct_on_off.rb +19 -0
- data/lib/omml/models/ct_p_tab.rb +23 -0
- data/lib/omml/models/ct_perm.rb +21 -0
- data/lib/omml/models/ct_perm_start.rb +25 -0
- data/lib/omml/models/ct_phant.rb +23 -0
- data/lib/omml/models/ct_phant_pr.rb +31 -0
- data/lib/omml/models/ct_picture.rb +23 -0
- data/lib/omml/models/ct_picture_base.rb +15 -0
- data/lib/omml/models/ct_placeholder.rb +21 -0
- data/lib/omml/models/ct_point2_d.rb +21 -0
- data/lib/omml/models/ct_pos_h.rb +27 -0
- data/lib/omml/models/ct_pos_v.rb +27 -0
- data/lib/omml/models/ct_positive_size2_d.rb +21 -0
- data/lib/omml/models/ct_proof_err.rb +19 -0
- data/lib/omml/models/ct_r.rb +27 -0
- data/lib/omml/models/ct_r_pr.rb +21 -0
- data/lib/omml/models/ct_r_pr_change.rb +21 -0
- data/lib/omml/models/ct_r_pr_original.rb +21 -0
- data/lib/omml/models/ct_rad.rb +25 -0
- data/lib/omml/models/ct_rad_pr.rb +23 -0
- data/lib/omml/models/ct_rel.rb +19 -0
- data/lib/omml/models/ct_rpr.rb +33 -0
- data/lib/omml/models/ct_ruby.rb +25 -0
- data/lib/omml/models/ct_ruby_align.rb +19 -0
- data/lib/omml/models/ct_ruby_content.rb +19 -0
- data/lib/omml/models/ct_ruby_pr.rb +31 -0
- data/lib/omml/models/ct_run_track_change.rb +23 -0
- data/lib/omml/models/ct_s_pre.rb +28 -0
- data/lib/omml/models/ct_s_pre_pr.rb +21 -0
- data/lib/omml/models/ct_s_sub.rb +25 -0
- data/lib/omml/models/ct_s_sub_pr.rb +21 -0
- data/lib/omml/models/ct_s_sub_sup.rb +28 -0
- data/lib/omml/models/ct_s_sub_sup_pr.rb +23 -0
- data/lib/omml/models/ct_s_sup.rb +25 -0
- data/lib/omml/models/ct_s_sup_pr.rb +21 -0
- data/lib/omml/models/ct_script.rb +19 -0
- data/lib/omml/models/ct_sdt_combo_box.rb +23 -0
- data/lib/omml/models/ct_sdt_content_run.rb +19 -0
- data/lib/omml/models/ct_sdt_date.rb +30 -0
- data/lib/omml/models/ct_sdt_date_mapping_type.rb +19 -0
- data/lib/omml/models/ct_sdt_doc_part.rb +25 -0
- data/lib/omml/models/ct_sdt_drop_down_list.rb +23 -0
- data/lib/omml/models/ct_sdt_end_pr.rb +21 -0
- data/lib/omml/models/ct_sdt_list_item.rb +21 -0
- data/lib/omml/models/ct_sdt_pr.rb +63 -0
- data/lib/omml/models/ct_sdt_run.rb +25 -0
- data/lib/omml/models/ct_sdt_text.rb +19 -0
- data/lib/omml/models/ct_shd.rb +35 -0
- data/lib/omml/models/ct_shp.rb +19 -0
- data/lib/omml/models/ct_signed_hps_measure.rb +19 -0
- data/lib/omml/models/ct_signed_twips_measure.rb +19 -0
- data/lib/omml/models/ct_simple_field.rb +29 -0
- data/lib/omml/models/ct_smart_tag_pr.rb +21 -0
- data/lib/omml/models/ct_smart_tag_run.rb +27 -0
- data/lib/omml/models/ct_spacing_rule.rb +19 -0
- data/lib/omml/models/ct_string.rb +19 -0
- data/lib/omml/models/ct_style.rb +19 -0
- data/lib/omml/models/ct_sym.rb +21 -0
- data/lib/omml/models/ct_text.rb +19 -0
- data/lib/omml/models/ct_text_effect.rb +19 -0
- data/lib/omml/models/ct_text_scale.rb +19 -0
- data/lib/omml/models/ct_top_bot.rb +19 -0
- data/lib/omml/models/ct_track_change.rb +21 -0
- data/lib/omml/models/ct_track_change_numbering.rb +19 -0
- data/lib/omml/models/ct_twips_measure.rb +19 -0
- data/lib/omml/models/ct_un_signed_integer.rb +19 -0
- data/lib/omml/models/ct_underline.rb +27 -0
- data/lib/omml/models/ct_vertical_align_run.rb +19 -0
- data/lib/omml/models/ct_wordprocessing_on_off.rb +19 -0
- data/lib/omml/models/ct_wrap_none.rb +15 -0
- data/lib/omml/models/ct_wrap_path.rb +25 -0
- data/lib/omml/models/ct_wrap_square.rb +31 -0
- data/lib/omml/models/ct_wrap_through.rb +27 -0
- data/lib/omml/models/ct_wrap_tight.rb +27 -0
- data/lib/omml/models/ct_wrap_top_bottom.rb +25 -0
- data/lib/omml/models/ct_x_align.rb +19 -0
- data/lib/omml/models/ct_y_align.rb +19 -0
- data/lib/omml/models/groups/eg_content_run_content.rb +26 -0
- data/lib/omml/models/groups/eg_math_content.rb +20 -0
- data/lib/omml/models/groups/eg_o_math_elements.rb +20 -0
- data/lib/omml/models/groups/eg_o_math_math_elements.rb +56 -0
- data/lib/omml/models/groups/eg_office_art_extension_list.rb +16 -0
- data/lib/omml/models/groups/eg_p_content.rb +24 -0
- data/lib/omml/models/groups/eg_r_pr.rb +17 -0
- data/lib/omml/models/groups/eg_r_pr_base.rb +93 -0
- data/lib/omml/models/groups/eg_r_pr_content.rb +19 -0
- data/lib/omml/models/groups/eg_r_pr_math.rb +23 -0
- data/lib/omml/models/groups/eg_range_markup_elements.rb +60 -0
- data/lib/omml/models/groups/eg_ruby_content.rb +20 -0
- data/lib/omml/models/groups/eg_run_inner_content.rb +83 -0
- data/lib/omml/models/groups/eg_run_level_elts.rb +34 -0
- data/lib/omml/models/groups/eg_script_style.rb +18 -0
- data/lib/omml/models/groups/eg_word_r_pr.rb +17 -0
- data/lib/omml/models/groups/eg_wrap_type.rb +27 -0
- data/lib/omml/models/groups.rb +19 -0
- data/lib/omml/models/o_math.rb +21 -0
- data/lib/omml/models/o_math_para.rb +25 -0
- data/lib/omml/models/simple_types/enum_string.rb +42 -0
- data/lib/omml/models/simple_types/hex_binary.rb +15 -0
- data/lib/omml/models/simple_types/st_adj_coordinate.rb +24 -0
- data/lib/omml/models/simple_types/st_align_h.rb +17 -0
- data/lib/omml/models/simple_types/st_align_v.rb +17 -0
- data/lib/omml/models/simple_types/st_border.rb +203 -0
- data/lib/omml/models/simple_types/st_br_clear.rb +16 -0
- data/lib/omml/models/simple_types/st_br_type.rb +15 -0
- data/lib/omml/models/simple_types/st_break_bin.rb +15 -0
- data/lib/omml/models/simple_types/st_break_bin_sub.rb +15 -0
- data/lib/omml/models/simple_types/st_calendar_type.rb +22 -0
- data/lib/omml/models/simple_types/st_combine_brackets.rb +17 -0
- data/lib/omml/models/simple_types/st_coordinate.rb +16 -0
- data/lib/omml/models/simple_types/st_displaced_by_custom_xml.rb +14 -0
- data/lib/omml/models/simple_types/st_ed_grp.rb +19 -0
- data/lib/omml/models/simple_types/st_em.rb +17 -0
- data/lib/omml/models/simple_types/st_f_type.rb +16 -0
- data/lib/omml/models/simple_types/st_ff_text_type.rb +18 -0
- data/lib/omml/models/simple_types/st_fld_char_type.rb +15 -0
- data/lib/omml/models/simple_types/st_geom_guide_name.rb +10 -0
- data/lib/omml/models/simple_types/st_hex_color.rb +24 -0
- data/lib/omml/models/simple_types/st_highlight_color.rb +29 -0
- data/lib/omml/models/simple_types/st_hint.rb +15 -0
- data/lib/omml/models/simple_types/st_info_text_type.rb +14 -0
- data/lib/omml/models/simple_types/st_integer2.rb +15 -0
- data/lib/omml/models/simple_types/st_integer255.rb +15 -0
- data/lib/omml/models/simple_types/st_jc.rb +16 -0
- data/lib/omml/models/simple_types/st_lang.rb +24 -0
- data/lib/omml/models/simple_types/st_lim_loc.rb +14 -0
- data/lib/omml/models/simple_types/st_lock.rb +16 -0
- data/lib/omml/models/simple_types/st_on_off.rb +18 -0
- data/lib/omml/models/simple_types/st_p_tab_alignment.rb +15 -0
- data/lib/omml/models/simple_types/st_p_tab_leader.rb +17 -0
- data/lib/omml/models/simple_types/st_p_tab_relative_to.rb +14 -0
- data/lib/omml/models/simple_types/st_positive_coordinate.rb +15 -0
- data/lib/omml/models/simple_types/st_proof_err.rb +16 -0
- data/lib/omml/models/simple_types/st_rel_from_h.rb +20 -0
- data/lib/omml/models/simple_types/st_rel_from_v.rb +20 -0
- data/lib/omml/models/simple_types/st_ruby_align.rb +18 -0
- data/lib/omml/models/simple_types/st_script.rb +18 -0
- data/lib/omml/models/simple_types/st_sdt_date_mapping_type.rb +15 -0
- data/lib/omml/models/simple_types/st_shd.rb +50 -0
- data/lib/omml/models/simple_types/st_shp.rb +14 -0
- data/lib/omml/models/simple_types/st_spacing_rule.rb +15 -0
- data/lib/omml/models/simple_types/st_style.rb +16 -0
- data/lib/omml/models/simple_types/st_text_effect.rb +19 -0
- data/lib/omml/models/simple_types/st_text_scale.rb +15 -0
- data/lib/omml/models/simple_types/st_theme.rb +20 -0
- data/lib/omml/models/simple_types/st_theme_color.rb +29 -0
- data/lib/omml/models/simple_types/st_top_bot.rb +14 -0
- data/lib/omml/models/simple_types/st_underline.rb +30 -0
- data/lib/omml/models/simple_types/st_vertical_align_run.rb +15 -0
- data/lib/omml/models/simple_types/st_wrap_text.rb +16 -0
- data/lib/omml/models/simple_types/st_x_align.rb +15 -0
- data/lib/omml/models/simple_types/st_y_align.rb +15 -0
- data/lib/omml/models/simple_types/token.rb +35 -0
- data/lib/omml/models/simple_types/unsigned_int.rb +15 -0
- data/lib/omml/models/simple_types/unsigned_long.rb +15 -0
- data/lib/omml/models/simple_types.rb +60 -0
- data/lib/omml/models.rb +183 -0
- data/lib/omml/namespace.rb +9 -0
- data/lib/omml/parser.rb +39 -0
- data/lib/omml/type_substitutions.rb +89 -0
- data/lib/omml/version.rb +2 -2
- data/lib/omml/wordprocessing_namespace.rb +9 -0
- data/lib/omml.rb +39 -3
- data/omml.gemspec +18 -14
- data/sig/omml.rbs +1 -1
- metadata +335 -6
data/lib/omml/models.rb
ADDED
|
@@ -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"
|
data/lib/omml/parser.rb
ADDED
|
@@ -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
data/lib/omml.rb
CHANGED
|
@@ -1,9 +1,45 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
require "lutaml/model"
|
|
4
4
|
|
|
5
|
-
module
|
|
5
|
+
module Omml
|
|
6
6
|
class Error < StandardError; end
|
|
7
7
|
|
|
8
|
-
|
|
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 default_adapter
|
|
20
|
+
RUBY_ENGINE == "opal" ? :oga : :ox
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
def configure_adapter!(adapter = default_adapter)
|
|
24
|
+
Configuration.adapter = adapter
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
def parse(input, context: nil)
|
|
28
|
+
Parser.parse(
|
|
29
|
+
string_input(input),
|
|
30
|
+
context: context || Configuration.context_id,
|
|
31
|
+
)
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
def root_name(input)
|
|
35
|
+
Parser.root_name(string_input(input))
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
def string_input(input)
|
|
39
|
+
return input if input.is_a?(String)
|
|
40
|
+
|
|
41
|
+
raise ArgumentError, "Input must be a String"
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
private_class_method :string_input
|
|
9
45
|
end
|
data/omml.gemspec
CHANGED
|
@@ -1,34 +1,38 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
|
-
require_relative
|
|
3
|
+
require_relative "lib/omml/version"
|
|
4
4
|
|
|
5
5
|
Gem::Specification.new do |spec|
|
|
6
|
-
spec.name =
|
|
7
|
-
spec.version =
|
|
8
|
-
spec.authors = [
|
|
9
|
-
spec.email = [
|
|
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 =
|
|
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 =
|
|
17
|
-
spec.license =
|
|
16
|
+
spec.homepage = "https://github.com/plurimath/omml"
|
|
17
|
+
spec.license = "BSD-2-Clause"
|
|
18
18
|
|
|
19
|
-
spec.
|
|
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
|
-
#
|
|
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 =
|
|
28
|
+
spec.bindir = "exe"
|
|
30
29
|
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
|
31
|
-
spec.require_paths = [
|
|
30
|
+
spec.require_paths = ["lib"]
|
|
32
31
|
|
|
33
|
-
spec.
|
|
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