ruby_pptx 0.1.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.
Files changed (101) hide show
  1. checksums.yaml +7 -0
  2. data/CHANGELOG.md +83 -0
  3. data/LICENSE +21 -0
  4. data/NOTICE +48 -0
  5. data/README.md +272 -0
  6. data/lib/ruby_pptx/action.rb +120 -0
  7. data/lib/ruby_pptx/autoshape_spec.rb +337 -0
  8. data/lib/ruby_pptx/builder.rb +228 -0
  9. data/lib/ruby_pptx/chart/categories.rb +208 -0
  10. data/lib/ruby_pptx/chart/chart.rb +443 -0
  11. data/lib/ruby_pptx/chart/combo.rb +230 -0
  12. data/lib/ruby_pptx/chart/data.rb +147 -0
  13. data/lib/ruby_pptx/chart/format.rb +647 -0
  14. data/lib/ruby_pptx/chart/workbook_writer.rb +212 -0
  15. data/lib/ruby_pptx/chart/xml_writer.rb +953 -0
  16. data/lib/ruby_pptx/chart/xy_data.rb +182 -0
  17. data/lib/ruby_pptx/core_ext.rb +12 -0
  18. data/lib/ruby_pptx/dml/color.rb +155 -0
  19. data/lib/ruby_pptx/dml/effect.rb +33 -0
  20. data/lib/ruby_pptx/dml/fill.rb +234 -0
  21. data/lib/ruby_pptx/element_proxy.rb +53 -0
  22. data/lib/ruby_pptx/enum/action.rb +46 -0
  23. data/lib/ruby_pptx/enum/base.rb +139 -0
  24. data/lib/ruby_pptx/enum/chart.rb +278 -0
  25. data/lib/ruby_pptx/enum/dml.rb +237 -0
  26. data/lib/ruby_pptx/enum/lang.rb +441 -0
  27. data/lib/ruby_pptx/enum/prog_id.rb +38 -0
  28. data/lib/ruby_pptx/enum/shapes.rb +514 -0
  29. data/lib/ruby_pptx/enum/text.rb +108 -0
  30. data/lib/ruby_pptx/errors.rb +15 -0
  31. data/lib/ruby_pptx/geometry.rb +89 -0
  32. data/lib/ruby_pptx/image.rb +347 -0
  33. data/lib/ruby_pptx/length.rb +120 -0
  34. data/lib/ruby_pptx/media.rb +64 -0
  35. data/lib/ruby_pptx/numeric_lengths.rb +30 -0
  36. data/lib/ruby_pptx/opc/constants.rb +205 -0
  37. data/lib/ruby_pptx/opc/oxml.rb +99 -0
  38. data/lib/ruby_pptx/opc/pack_uri.rb +146 -0
  39. data/lib/ruby_pptx/opc/package.rb +482 -0
  40. data/lib/ruby_pptx/opc/serialized.rb +229 -0
  41. data/lib/ruby_pptx/opc/spec.rb +37 -0
  42. data/lib/ruby_pptx/oxml/action.rb +43 -0
  43. data/lib/ruby_pptx/oxml/chart.rb +785 -0
  44. data/lib/ruby_pptx/oxml/content_model.rb +186 -0
  45. data/lib/ruby_pptx/oxml/core_properties.rb +145 -0
  46. data/lib/ruby_pptx/oxml/dml/color.rb +115 -0
  47. data/lib/ruby_pptx/oxml/dml/fill.rb +137 -0
  48. data/lib/ruby_pptx/oxml/element.rb +329 -0
  49. data/lib/ruby_pptx/oxml/ns.rb +115 -0
  50. data/lib/ruby_pptx/oxml/presentation.rb +110 -0
  51. data/lib/ruby_pptx/oxml/section.rb +65 -0
  52. data/lib/ruby_pptx/oxml/shapes/autoshape.rb +310 -0
  53. data/lib/ruby_pptx/oxml/shapes/groupshape.rb +217 -0
  54. data/lib/ruby_pptx/oxml/shapes/other.rb +405 -0
  55. data/lib/ruby_pptx/oxml/shapes/shared.rb +292 -0
  56. data/lib/ruby_pptx/oxml/simple_types.rb +563 -0
  57. data/lib/ruby_pptx/oxml/slide.rb +290 -0
  58. data/lib/ruby_pptx/oxml/table.rb +253 -0
  59. data/lib/ruby_pptx/oxml/text.rb +324 -0
  60. data/lib/ruby_pptx/oxml/theme.rb +93 -0
  61. data/lib/ruby_pptx/package.rb +139 -0
  62. data/lib/ruby_pptx/parts/chart.rb +75 -0
  63. data/lib/ruby_pptx/parts/core_properties.rb +40 -0
  64. data/lib/ruby_pptx/parts/embedded_package.rb +43 -0
  65. data/lib/ruby_pptx/parts/image.rb +55 -0
  66. data/lib/ruby_pptx/parts/media.rb +17 -0
  67. data/lib/ruby_pptx/parts/presentation.rb +79 -0
  68. data/lib/ruby_pptx/parts/slide.rb +221 -0
  69. data/lib/ruby_pptx/parts/theme.rb +26 -0
  70. data/lib/ruby_pptx/pattern_matching.rb +50 -0
  71. data/lib/ruby_pptx/presentation.rb +128 -0
  72. data/lib/ruby_pptx/refinements.rb +21 -0
  73. data/lib/ruby_pptx/section.rb +130 -0
  74. data/lib/ruby_pptx/shapes/adjustments.rb +83 -0
  75. data/lib/ruby_pptx/shapes/authoring.rb +110 -0
  76. data/lib/ruby_pptx/shapes/base.rb +138 -0
  77. data/lib/ruby_pptx/shapes/freeform.rb +141 -0
  78. data/lib/ruby_pptx/shapes/placeholder.rb +184 -0
  79. data/lib/ruby_pptx/shapes/shape.rb +337 -0
  80. data/lib/ruby_pptx/shapes/shape_tree.rb +634 -0
  81. data/lib/ruby_pptx/sliceable.rb +34 -0
  82. data/lib/ruby_pptx/slide.rb +430 -0
  83. data/lib/ruby_pptx/table.rb +316 -0
  84. data/lib/ruby_pptx/table_paging.rb +91 -0
  85. data/lib/ruby_pptx/templates/default.pptx +0 -0
  86. data/lib/ruby_pptx/templates/docx-icon.emf +0 -0
  87. data/lib/ruby_pptx/templates/generic-icon.emf +0 -0
  88. data/lib/ruby_pptx/templates/media-speaker.png +0 -0
  89. data/lib/ruby_pptx/templates/notes.xml +23 -0
  90. data/lib/ruby_pptx/templates/notesMaster.xml +352 -0
  91. data/lib/ruby_pptx/templates/pptx-icon.emf +0 -0
  92. data/lib/ruby_pptx/templates/slideMaster.xml +277 -0
  93. data/lib/ruby_pptx/templates/theme.xml +321 -0
  94. data/lib/ruby_pptx/templates/xlsx-icon.emf +0 -0
  95. data/lib/ruby_pptx/text/fitter.rb +72 -0
  96. data/lib/ruby_pptx/text/font_metrics.rb +221 -0
  97. data/lib/ruby_pptx/text/text.rb +393 -0
  98. data/lib/ruby_pptx/theme.rb +98 -0
  99. data/lib/ruby_pptx/version.rb +5 -0
  100. data/lib/ruby_pptx.rb +90 -0
  101. metadata +174 -0
@@ -0,0 +1,37 @@
1
+ # frozen_string_literal: true
2
+
3
+ # Generated by tools/generate_opc_constants.py from python-pptx. Do not edit by hand.
4
+
5
+ require "ruby_pptx/opc/constants"
6
+
7
+ module Pptx
8
+ module Opc
9
+ # (extension, content-type) pairs that may be expressed as a
10
+ # <Default> element in [Content_Types].xml rather than an <Override>.
11
+ DEFAULT_CONTENT_TYPES = [
12
+ ["bin", CONTENT_TYPE::PML_PRINTER_SETTINGS],
13
+ ["bin", CONTENT_TYPE::SML_PRINTER_SETTINGS],
14
+ ["bin", CONTENT_TYPE::WML_PRINTER_SETTINGS],
15
+ ["bmp", CONTENT_TYPE::BMP],
16
+ ["emf", CONTENT_TYPE::X_EMF],
17
+ ["fntdata", CONTENT_TYPE::X_FONTDATA],
18
+ ["gif", CONTENT_TYPE::GIF],
19
+ ["jpe", CONTENT_TYPE::JPEG],
20
+ ["jpeg", CONTENT_TYPE::JPEG],
21
+ ["jpg", CONTENT_TYPE::JPEG],
22
+ ["mov", CONTENT_TYPE::MOV],
23
+ ["mp4", CONTENT_TYPE::MP4],
24
+ ["mpg", CONTENT_TYPE::MPG],
25
+ ["png", CONTENT_TYPE::PNG],
26
+ ["rels", CONTENT_TYPE::OPC_RELATIONSHIPS],
27
+ ["tif", CONTENT_TYPE::TIFF],
28
+ ["tiff", CONTENT_TYPE::TIFF],
29
+ ["vid", CONTENT_TYPE::VIDEO],
30
+ ["wdp", CONTENT_TYPE::MS_PHOTO],
31
+ ["wmf", CONTENT_TYPE::X_WMF],
32
+ ["wmv", CONTENT_TYPE::WMV],
33
+ ["xlsx", CONTENT_TYPE::SML_SHEET],
34
+ ["xml", CONTENT_TYPE::XML]
35
+ ].freeze
36
+ end
37
+ end
@@ -0,0 +1,43 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "ruby_pptx/oxml/element"
4
+ require "ruby_pptx/oxml/content_model"
5
+ require "ruby_pptx/oxml/simple_types"
6
+
7
+ module Pptx
8
+ module Oxml
9
+ # `a:hlinkClick` and `a:hlinkHover`: what happens when a shape or run is
10
+ # clicked, or the pointer rests on it.
11
+ #
12
+ # An ordinary web link carries only `r:id`. Everything else PowerPoint can
13
+ # do on click -- jump to a slide, run a macro, open a file -- is encoded in
14
+ # an `action` attribute holding a `ppaction://` URL.
15
+ class CT_Hyperlink < Element
16
+ tag "a:hlinkClick", "a:hlinkHover"
17
+ optional_attr "r:id", type: SimpleTypes::XsdString, as: :rId
18
+ optional_attr "action", type: SimpleTypes::XsdString
19
+
20
+ ACTION_SCHEME = "ppaction://"
21
+
22
+ # The host part of the action URL, e.g. "hlinksldjump" in
23
+ # "ppaction://hlinksldjump". nil when this is a plain hyperlink.
24
+ def action_verb
25
+ url = action
26
+ return nil if url.nil?
27
+
28
+ url.split("?").first.delete_prefix(ACTION_SCHEME)
29
+ end
30
+
31
+ # The query of the action URL as a hash, e.g. {"jump" => "nextslide"}.
32
+ def action_fields
33
+ url = action
34
+ return {} if url.nil?
35
+
36
+ _host, query = url.split("?", 2)
37
+ return {} if query.nil? || query.empty?
38
+
39
+ query.split("&").to_h { |pair| pair.split("=", 2) }
40
+ end
41
+ end
42
+ end
43
+ end