openxml-pptx 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (104) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +9 -0
  3. data/.travis.yml +6 -0
  4. data/Gemfile +8 -0
  5. data/Gemfile.lock +92 -0
  6. data/Guardfile +16 -0
  7. data/LICENSE.txt +21 -0
  8. data/README.md +46 -0
  9. data/Rakefile +6 -0
  10. data/bin/build_fixtures +10 -0
  11. data/bin/console +14 -0
  12. data/bin/setup +8 -0
  13. data/bin/zipflip +56 -0
  14. data/lib/openxml/pptx.rb +52 -0
  15. data/lib/openxml/pptx/elements.rb +12 -0
  16. data/lib/openxml/pptx/package.rb +33 -0
  17. data/lib/openxml/pptx/parts.rb +12 -0
  18. data/lib/openxml/pptx/parts/image.rb +32 -0
  19. data/lib/openxml/pptx/parts/presentation.rb +142 -0
  20. data/lib/openxml/pptx/parts/presentation_properties.rb +38 -0
  21. data/lib/openxml/pptx/parts/slide.rb +87 -0
  22. data/lib/openxml/pptx/parts/slide_layout.rb +88 -0
  23. data/lib/openxml/pptx/parts/slide_master.rb +132 -0
  24. data/lib/openxml/pptx/parts/theme.rb +61 -0
  25. data/lib/openxml/pptx/properties.rb +21 -0
  26. data/lib/openxml/pptx/properties/background.rb +19 -0
  27. data/lib/openxml/pptx/properties/background_properties.rb +30 -0
  28. data/lib/openxml/pptx/properties/background_reference.rb +23 -0
  29. data/lib/openxml/pptx/properties/blip_fill.rb +11 -0
  30. data/lib/openxml/pptx/properties/color_mapping.rb +11 -0
  31. data/lib/openxml/pptx/properties/color_mapping_override.rb +11 -0
  32. data/lib/openxml/pptx/properties/common_slide_data.rb +21 -0
  33. data/lib/openxml/pptx/properties/connection_shape.rb +16 -0
  34. data/lib/openxml/pptx/properties/content_part.rb +13 -0
  35. data/lib/openxml/pptx/properties/control.rb +36 -0
  36. data/lib/openxml/pptx/properties/control_list.rb +14 -0
  37. data/lib/openxml/pptx/properties/custom_show.rb +18 -0
  38. data/lib/openxml/pptx/properties/custom_show_list.rb +14 -0
  39. data/lib/openxml/pptx/properties/customer_data.rb +13 -0
  40. data/lib/openxml/pptx/properties/customer_data_container.rb +12 -0
  41. data/lib/openxml/pptx/properties/customer_data_list.rb +14 -0
  42. data/lib/openxml/pptx/properties/data_tags.rb +13 -0
  43. data/lib/openxml/pptx/properties/default_text_style.rb +24 -0
  44. data/lib/openxml/pptx/properties/embedded_font.rb +18 -0
  45. data/lib/openxml/pptx/properties/embedded_font_list.rb +14 -0
  46. data/lib/openxml/pptx/properties/extension.rb +14 -0
  47. data/lib/openxml/pptx/properties/extension_list.rb +14 -0
  48. data/lib/openxml/pptx/properties/font.rb +32 -0
  49. data/lib/openxml/pptx/properties/font_reference.rb +12 -0
  50. data/lib/openxml/pptx/properties/font_reference_bold.rb +13 -0
  51. data/lib/openxml/pptx/properties/font_reference_bold_italic.rb +13 -0
  52. data/lib/openxml/pptx/properties/font_reference_italic.rb +13 -0
  53. data/lib/openxml/pptx/properties/font_reference_regular.rb +13 -0
  54. data/lib/openxml/pptx/properties/graphic_frame.rb +20 -0
  55. data/lib/openxml/pptx/properties/group_shape_properties.rb +34 -0
  56. data/lib/openxml/pptx/properties/handout_master_id.rb +18 -0
  57. data/lib/openxml/pptx/properties/handout_master_id_list.rb +14 -0
  58. data/lib/openxml/pptx/properties/non_visual_connection_shape_drawing_properties.rb +18 -0
  59. data/lib/openxml/pptx/properties/non_visual_connection_shape_properties.rb +16 -0
  60. data/lib/openxml/pptx/properties/non_visual_drawing_properties.rb +30 -0
  61. data/lib/openxml/pptx/properties/non_visual_graphic_frame_drawing_properties.rb +15 -0
  62. data/lib/openxml/pptx/properties/non_visual_graphic_frame_properties.rb +16 -0
  63. data/lib/openxml/pptx/properties/non_visual_group_shape_drawing_properties.rb +15 -0
  64. data/lib/openxml/pptx/properties/non_visual_group_shape_properties.rb +16 -0
  65. data/lib/openxml/pptx/properties/non_visual_picture_properties.rb +16 -0
  66. data/lib/openxml/pptx/properties/non_visual_picutre_drawing_properties.rb +18 -0
  67. data/lib/openxml/pptx/properties/non_visual_properties.rb +29 -0
  68. data/lib/openxml/pptx/properties/non_visual_shape_drawing_properties.rb +18 -0
  69. data/lib/openxml/pptx/properties/non_visual_shape_properties.rb +16 -0
  70. data/lib/openxml/pptx/properties/notes_master_id.rb +18 -0
  71. data/lib/openxml/pptx/properties/notes_master_id_list.rb +14 -0
  72. data/lib/openxml/pptx/properties/notes_size.rb +14 -0
  73. data/lib/openxml/pptx/properties/photo_album.rb +19 -0
  74. data/lib/openxml/pptx/properties/picture.rb +30 -0
  75. data/lib/openxml/pptx/properties/placeholder.rb +20 -0
  76. data/lib/openxml/pptx/properties/shape.rb +34 -0
  77. data/lib/openxml/pptx/properties/shape_group.rb +18 -0
  78. data/lib/openxml/pptx/properties/shape_properties.rb +11 -0
  79. data/lib/openxml/pptx/properties/shape_style.rb +11 -0
  80. data/lib/openxml/pptx/properties/shape_tree.rb +13 -0
  81. data/lib/openxml/pptx/properties/shapes_container.rb +18 -0
  82. data/lib/openxml/pptx/properties/simple_boolean_property.rb +16 -0
  83. data/lib/openxml/pptx/properties/simple_property_container_property.rb +14 -0
  84. data/lib/openxml/pptx/properties/slide_id.rb +29 -0
  85. data/lib/openxml/pptx/properties/slide_id_list.rb +14 -0
  86. data/lib/openxml/pptx/properties/slide_layout_id.rb +26 -0
  87. data/lib/openxml/pptx/properties/slide_layout_id_list.rb +14 -0
  88. data/lib/openxml/pptx/properties/slide_list.rb +14 -0
  89. data/lib/openxml/pptx/properties/slide_master_id.rb +29 -0
  90. data/lib/openxml/pptx/properties/slide_master_id_list.rb +14 -0
  91. data/lib/openxml/pptx/properties/slide_reference.rb +15 -0
  92. data/lib/openxml/pptx/properties/slide_size.rb +16 -0
  93. data/lib/openxml/pptx/properties/smart_tags.rb +15 -0
  94. data/lib/openxml/pptx/properties/text_body.rb +11 -0
  95. data/lib/openxml/pptx/properties/text_style_body.rb +11 -0
  96. data/lib/openxml/pptx/properties/text_style_other.rb +11 -0
  97. data/lib/openxml/pptx/properties/text_style_title.rb +11 -0
  98. data/lib/openxml/pptx/properties/text_styles.rb +17 -0
  99. data/lib/openxml/pptx/properties/transform.rb +11 -0
  100. data/lib/openxml/pptx/properties/transparent_container_property.rb +14 -0
  101. data/lib/openxml/pptx/relatable_part.rb +100 -0
  102. data/lib/openxml/pptx/version.rb +5 -0
  103. data/openxml-pptx.gemspec +33 -0
  104. metadata +258 -0
@@ -0,0 +1,142 @@
1
+ # frozen_string_literals: true
2
+
3
+ module OpenXml
4
+ module Pptx
5
+ module Parts
6
+ class Presentation < OpenXml::Part
7
+ include OpenXml::RelatablePart
8
+ include OpenXml::HasAttributes
9
+ include OpenXml::ContainsProperties
10
+ attr_reader :slides, :slide_masters, :themes, :presentation_properties
11
+
12
+ relationship_type "http://schemas.openxmlformats.org/officeDocument/2006/relationships/officeDocument"
13
+ content_type "application/vnd.openxmlformats-officedocument.presentationml.presentation.main+xml"
14
+ default_path "ppt/presentation.xml"
15
+
16
+ attribute :auto_compress_pictures, displays_as: :autoCompressPict, expects: :boolean
17
+ attribute :bookmark_id_seed, displays_as: :bookmarkIdSeed, expects: :integer, in_range: (1..2_147_483_648)
18
+ attribute :compatibility_mode, displays_as: :compatMode, expects: :boolean
19
+ attribute :conformance, one_of: %i{ strict transitional }
20
+ attribute :embed_fonts, displays_as: :embedTrueTypeFonts, expects: :boolean
21
+ attribute :first_slide_number, displays_as: :firstSlideNum, expects: :integer
22
+ attribute :remove_personal_information_on_save, displays_as: :removePersonalInfoOnSave, expects: :boolean
23
+ attribute :right_to_left, displays_as: :rtl, expects: :boolean
24
+ attribute :save_subset_fonts, displays_as: :saveSubsetFonts, expects: :boolean
25
+ attribute :server_zoom, displays_as: :serverZoom, expects: :percentage
26
+ attribute :show_special_placeholders_on_title_slide, displays_as: :showSpecialPlsOnTitleSld, expects: :boolean
27
+ attribute :strict_first_and_last_characters, displays_as: :strictFirstAndLastChars, expects: :boolean
28
+
29
+ property :slide_master_id_list
30
+ property :notes_master_id_list
31
+ property :handout_master_id_list
32
+ property :slide_id_list
33
+ property :slide_size
34
+ property :notes_size, required: true
35
+ property :smart_tags
36
+ property :embedded_font_list
37
+ property :custom_show_list
38
+ property :photo_album
39
+ # property :customer_data_list # tag :custDataLst
40
+ # property :kinsoku
41
+ property :default_text_style
42
+ # property :modification_verifier # tag :modifyVerifier
43
+
44
+ property :extension_list
45
+
46
+ # For proper interaction with HasAttributes
47
+ def self.tag
48
+ :presentation
49
+ end
50
+
51
+ def self.namespace
52
+ :p
53
+ end
54
+
55
+ def name
56
+ "presentation"
57
+ end
58
+
59
+ def initialize(*_args)
60
+ super
61
+ @slides = []
62
+ @slide_masters = []
63
+ @themes = []
64
+ @presentation_properties = OpenXml::Pptx::Parts::PresentationProperties.new
65
+ add_child_part(presentation_properties)
66
+
67
+ # Set defaults
68
+ slide_size.length = 12_192_000
69
+ slide_size.width = 6_858_000
70
+ notes_size.length = 6_858_000
71
+ notes_size.width = 9_144_000
72
+ end
73
+
74
+ def add_slide(slide)
75
+ slides.push(slide)
76
+ add_child_part(slide, with_index: slides.count)
77
+ slide_id_list << OpenXml::Pptx::Properties::SlideId.new.tap do |slide_id|
78
+ slide_id.rid = relationships_by_path[slide.path].id
79
+ end
80
+ end
81
+
82
+ def build_slide(named: nil, slide_layout: nil)
83
+ OpenXml::Pptx::Parts::Slide.new.tap do |slide|
84
+ slide.common_slide_data.slide_name = named unless named.nil?
85
+ slide.set_slide_layout(slide_layout) unless slide_layout.nil?
86
+ add_slide(slide)
87
+ end
88
+ end
89
+
90
+ def add_slide_master(slide_master)
91
+ slide_masters.push(slide_master)
92
+ add_child_part(slide_master, with_index: slide_masters.count)
93
+ slide_master_id_list << OpenXml::Pptx::Properties::SlideMasterId.new.tap do |master_id|
94
+ master_id.rid = relationships_by_path[slide_master.path].id
95
+ end
96
+ end
97
+
98
+ def build_slide_master(named: nil, theme: nil)
99
+ OpenXml::Pptx::Parts::SlideMaster.new.tap do |slide_master|
100
+ slide_master.common_slide_data.slide_name = named unless named.nil?
101
+ slide_master.set_theme(theme) unless theme.nil?
102
+ add_slide_master(slide_master)
103
+ end
104
+ end
105
+
106
+ def add_theme(theme)
107
+ themes.push(theme)
108
+ add_child_part(theme, with_index: themes.count)
109
+ end
110
+
111
+ def build_theme
112
+ OpenXml::Pptx::Parts::Theme.new.tap do |theme|
113
+ add_theme(theme)
114
+ end
115
+ end
116
+
117
+ def next_image_index
118
+ @image_index = (@image_index || 0) + 1
119
+ end
120
+
121
+ def to_xml
122
+ build_standalone_xml do |xml|
123
+ xml[:p].presentation(namespaces.merge(xml_attributes)) do
124
+ property_xml(xml)
125
+ end
126
+ end
127
+ end
128
+
129
+ private
130
+
131
+ def namespaces
132
+ {
133
+ "xmlns:a": "http://schemas.openxmlformats.org/drawingml/2006/main",
134
+ "xmlns:r": "http://schemas.openxmlformats.org/officeDocument/2006/relationships",
135
+ "xmlns:p": "http://schemas.openxmlformats.org/presentationml/2006/main"
136
+ }
137
+ end
138
+
139
+ end
140
+ end
141
+ end
142
+ end
@@ -0,0 +1,38 @@
1
+ # frozen_string_literals: true
2
+
3
+ module OpenXml
4
+ module Pptx
5
+ module Parts
6
+ class PresentationProperties < OpenXml::Part
7
+ include OpenXml::RelatablePart
8
+ include OpenXml::ContainsProperties
9
+
10
+ relationship_type "http://schemas.openxmlformats.org/officeDocument/2006/relationships/presProps"
11
+ content_type "application/vnd.openxmlformats-officedocument.presentationml.presProps+xml"
12
+ default_path "ppt/presProps.xml"
13
+
14
+ # property :print_properties # tag: :prnPr
15
+ # property :show_properties # tag: :showPr
16
+ # property :color_mru # tag: :clrMru, DrawingML type, pptx namespace
17
+ property :extension_list
18
+
19
+ def to_xml
20
+ build_standalone_xml do |xml|
21
+ xml[:p].presentationPr(namespaces) do
22
+ property_xml(xml)
23
+ end
24
+ end
25
+ end
26
+
27
+ private
28
+
29
+ def namespaces
30
+ {
31
+ "xmlns:p": "http://schemas.openxmlformats.org/presentationml/2006/main"
32
+ }
33
+ end
34
+
35
+ end
36
+ end
37
+ end
38
+ end
@@ -0,0 +1,87 @@
1
+ module OpenXml
2
+ module Pptx
3
+ module Parts
4
+ class Slide < OpenXml::Part
5
+ include OpenXml::RelatablePart
6
+ include OpenXml::HasAttributes
7
+ include OpenXml::ContainsProperties
8
+ attr_reader :images
9
+
10
+ relationship_type "http://schemas.openxmlformats.org/officeDocument/2006/relationships/slide"
11
+ content_type "application/vnd.openxmlformats-officedocument.presentationml.slide+xml"
12
+ default_path "ppt/slides/slide.xml"
13
+
14
+ attribute :show_master_shapes, displays_as: :showMasterSp, expects: :boolean
15
+ attribute :show_master_placeholder_animations, displays_as: :showMasterPhAnim, expects: :boolean
16
+ attribute :show_slide, displays_as: :show, expects: :boolean
17
+
18
+ property :common_slide_data, required: true
19
+ property :color_mapping_override
20
+
21
+ # = TODO ================
22
+ # property :transition
23
+ # property :timing
24
+
25
+ property :extension_list
26
+
27
+ LAYOUT_SCHEMA =
28
+ "http://schemas.openxmlformats.org/officeDocument/2006/relationships/slideLayout".freeze
29
+
30
+ def initialize(*_args)
31
+ super
32
+ @images = []
33
+ end
34
+
35
+ # Necessary for HasAttributes
36
+ def name
37
+ "slide"
38
+ end
39
+
40
+ def add_image(image_part)
41
+ images.push(image_part)
42
+ index = (parent && parent.next_image_index) || images.count
43
+ add_child_part(image_part, with_index: index)
44
+ end
45
+
46
+ def build_image_part(path)
47
+ path = Pathname.new(path)
48
+ OpenXml::Pptx::Parts::Image.new(path.read, extension: path.extname).tap do |image|
49
+ add_image(image)
50
+ end
51
+ end
52
+
53
+ def set_slide_layout(layout)
54
+ add_relationship layout.relationship_type, layout.path
55
+ end
56
+
57
+ def to_xml
58
+ build_standalone_xml do |xml|
59
+ xml[:p].sld(namespaces.merge(xml_attributes)) do
60
+ property_xml(xml)
61
+ end
62
+ end
63
+ end
64
+
65
+ # Convenience accessors
66
+ def shapes
67
+ common_slide_data.shape_tree.shapes
68
+ end
69
+
70
+ def background_properties
71
+ common_slide_data.background.background_properties
72
+ end
73
+
74
+ private
75
+
76
+ def namespaces
77
+ {
78
+ "xmlns:a": "http://schemas.openxmlformats.org/drawingml/2006/main",
79
+ "xmlns:r": "http://schemas.openxmlformats.org/officeDocument/2006/relationships",
80
+ "xmlns:p": "http://schemas.openxmlformats.org/presentationml/2006/main"
81
+ }
82
+ end
83
+
84
+ end
85
+ end
86
+ end
87
+ end
@@ -0,0 +1,88 @@
1
+ # frozen_string_literals: true
2
+
3
+ module OpenXml
4
+ module Pptx
5
+ module Parts
6
+ class SlideLayout < OpenXml::Part
7
+ include OpenXml::RelatablePart
8
+ include OpenXml::HasAttributes
9
+ include OpenXml::ContainsProperties
10
+ attr_reader :images
11
+
12
+ relationship_type "http://schemas.openxmlformats.org/officeDocument/2006/relationships/slideLayout"
13
+ content_type "application/vnd.openxmlformats-officedocument.presentationml.slideLayout+xml"
14
+ default_path "ppt/slideLayouts/slideLayout.xml"
15
+
16
+ attribute :show_master_shapes, displays_as: :showMasterSp, expects: :boolean
17
+ attribute :show_master_placeholder_animations, displays_as: :showMasterPhAnim, expects: :boolean
18
+ attribute :matching_name, displays_as: :matchingName, expects: :string
19
+ attribute :type, one_of: OpenXml::Pptx::ST_SlideLayoutType
20
+ attribute :preserve, expects: :boolean
21
+ attribute :drawn_by_user, displays_as: :userDrawn, expects: :boolean
22
+
23
+ property :common_slide_data, required: true
24
+ property :color_mapping_override
25
+
26
+ # = TODO ================
27
+ # property :transition
28
+ # property :timing
29
+ # property :header_footer
30
+
31
+ property :extension_list
32
+
33
+ def initialize(*_args)
34
+ super
35
+ @images = []
36
+ end
37
+
38
+ # Necessary for HasAttributes
39
+ def name
40
+ "slide_layout"
41
+ end
42
+
43
+ def set_slide_master(master)
44
+ add_relationship master.relationship_type, master.path
45
+ end
46
+
47
+ def add_image(image_part)
48
+ images.push(image_part)
49
+ index = (parent && parent.next_image_index) || images.count
50
+ add_child_part(image_part, with_index: index)
51
+ end
52
+
53
+ def build_image_part(path)
54
+ path = Pathname.new(path)
55
+ OpenXml::Pptx::Parts::Image.new(path.read, extension: path.extname).tap do |image|
56
+ add_image(image)
57
+ end
58
+ end
59
+
60
+ def to_xml
61
+ build_standalone_xml do |xml|
62
+ xml[:p].sldLayout(namespaces.merge(xml_attributes)) do
63
+ property_xml(xml)
64
+ end
65
+ end
66
+ end
67
+
68
+ # Convenience accessors
69
+ def shapes
70
+ common_slide_data.shape_tree.shapes
71
+ end
72
+
73
+ def background_properties
74
+ common_slide_data.background.background_properties
75
+ end
76
+
77
+ private def namespaces
78
+ {
79
+ "xmlns:a": "http://schemas.openxmlformats.org/drawingml/2006/main",
80
+ "xmlns:r": "http://schemas.openxmlformats.org/officeDocument/2006/relationships",
81
+ "xmlns:p": "http://schemas.openxmlformats.org/presentationml/2006/main"
82
+ }
83
+ end
84
+
85
+ end
86
+ end
87
+ end
88
+ end
@@ -0,0 +1,132 @@
1
+ # frozen_string_literals: true
2
+
3
+ module OpenXml
4
+ module Pptx
5
+ module Parts
6
+ class SlideMaster < OpenXml::Part
7
+ include OpenXml::RelatablePart
8
+ include OpenXml::HasAttributes
9
+ include OpenXml::ContainsProperties
10
+ attr_reader :theme, :layouts, :images
11
+
12
+ relationship_type "http://schemas.openxmlformats.org/officeDocument/2006/relationships/slideMaster"
13
+ content_type "application/vnd.openxmlformats-officedocument.presentationml.slideMaster+xml"
14
+ default_path "ppt/slideMasters/slideMaster.xml"
15
+
16
+ attribute :should_preserve, displays_as: :preserve, expects: :boolean
17
+
18
+ property :common_slide_data, required: true
19
+ property :color_mapping, required: true
20
+ property :slide_layout_id_list
21
+
22
+ # = TODO ================
23
+ # property :transition
24
+ # property :timing
25
+ # property :header_footer
26
+
27
+ property :text_styles
28
+
29
+ property :extension_list
30
+
31
+ def initialize(*_args)
32
+ super
33
+ @layouts = []
34
+ @images = []
35
+ end
36
+
37
+ # Necessary for HasAttributes
38
+ def name
39
+ "slide_master"
40
+ end
41
+
42
+ def set_theme(theme)
43
+ @theme = theme
44
+ add_relationship theme.relationship_type, theme.path
45
+ end
46
+
47
+ def add_slide_layout(layout)
48
+ layouts.push(layout)
49
+ add_child_part(layout, with_index: layouts.count)
50
+ slide_layout_id_list << OpenXml::Pptx::Properties::SlideLayoutId.new.tap do |layout_id|
51
+ layout_id.rid = relationships_by_path[layout.path].id
52
+ end
53
+ end
54
+
55
+ def build_slide_layout(named: nil)
56
+ OpenXml::Pptx::Parts::SlideLayout.new.tap do |layout|
57
+ layout.set_slide_master(self)
58
+ layout.common_slide_data.slide_name = named unless named.nil?
59
+ add_slide_layout(layout)
60
+ end
61
+ end
62
+
63
+ def add_image(image_part)
64
+ images.push(image_part)
65
+ index = (parent && parent.next_image_index) || images.count
66
+ add_child_part(image_part, with_index: index)
67
+ end
68
+
69
+ def build_image_part(path)
70
+ path = Pathname.new(path)
71
+ OpenXml::Pptx::Parts::Image.new(path.read, extension: path.extname).tap do |image|
72
+ add_image(image)
73
+ end
74
+ end
75
+
76
+ def next_image_index
77
+ @image_index = (parent && parent.next_image_index) || @image_index + 1
78
+ end
79
+
80
+ def to_xml
81
+ build_standalone_xml do |xml|
82
+ xml[:p].sldMaster(namespaces.merge(xml_attributes)) do
83
+ property_xml(xml)
84
+ end
85
+ end
86
+ end
87
+
88
+ def build_required_properties
89
+ super
90
+ DEFAULT_COLOR_MAPPING.each do |key, value|
91
+ color_mapping.public_send(:"#{key}=", value)
92
+ end
93
+ end
94
+
95
+ # Convenience accessors
96
+ def shapes
97
+ common_slide_data.shape_tree.shapes
98
+ end
99
+
100
+ def background_properties
101
+ common_slide_data.background.background_properties
102
+ end
103
+
104
+ private
105
+
106
+ def namespaces
107
+ {
108
+ "xmlns:a": "http://schemas.openxmlformats.org/drawingml/2006/main",
109
+ "xmlns:r": "http://schemas.openxmlformats.org/officeDocument/2006/relationships",
110
+ "xmlns:p": "http://schemas.openxmlformats.org/presentationml/2006/main"
111
+ }
112
+ end
113
+
114
+ DEFAULT_COLOR_MAPPING = {
115
+ bg1: :lt1,
116
+ tx1: :dk1,
117
+ bg2: :lt2,
118
+ tx2: :dk2,
119
+ accent1: :accent1,
120
+ accent2: :accent2,
121
+ accent3: :accent3,
122
+ accent4: :accent4,
123
+ accent5: :accent5,
124
+ accent6: :accent6,
125
+ hlink: :hlink,
126
+ folHlink: :folHlink
127
+ }.freeze
128
+
129
+ end
130
+ end
131
+ end
132
+ end