Implement many more nodes
All checks were successful
CI Pipeline / build (pull_request) Successful in 12s
All checks were successful
CI Pipeline / build (pull_request) Successful in 12s
Adds these new styling and formatting nodes * strike * highlight * linebreaks * pagebreaks * Hyperlinks
This commit is contained in:
@@ -2,18 +2,24 @@
|
||||
|
||||
module Notare
|
||||
class Style
|
||||
attr_reader :name, :bold, :italic, :underline, :color, :size, :font,
|
||||
attr_reader :name, :bold, :italic, :underline, :strike, :highlight, :color, :size, :font,
|
||||
:align, :indent, :spacing_before, :spacing_after
|
||||
|
||||
ALIGNMENTS = %i[left center right justify].freeze
|
||||
HIGHLIGHT_COLORS = %w[
|
||||
black blue cyan darkBlue darkCyan darkGray darkGreen darkMagenta
|
||||
darkRed darkYellow green lightGray magenta red white yellow
|
||||
].freeze
|
||||
|
||||
def initialize(name, bold: nil, italic: nil, underline: nil, color: nil,
|
||||
size: nil, font: nil, align: nil, indent: nil,
|
||||
spacing_before: nil, spacing_after: nil)
|
||||
def initialize(name, bold: nil, italic: nil, underline: nil, strike: nil,
|
||||
highlight: nil, color: nil, size: nil, font: nil, align: nil,
|
||||
indent: nil, spacing_before: nil, spacing_after: nil)
|
||||
@name = name
|
||||
@bold = bold
|
||||
@italic = italic
|
||||
@underline = underline
|
||||
@strike = strike
|
||||
@highlight = validate_highlight(highlight)
|
||||
@color = normalize_color(color)
|
||||
@size = size
|
||||
@font = font
|
||||
@@ -36,7 +42,7 @@ module Notare
|
||||
end
|
||||
|
||||
def text_properties?
|
||||
!!(bold || italic || underline || color || size || font)
|
||||
!!(bold || italic || underline || strike || highlight || color || size || font)
|
||||
end
|
||||
|
||||
# Size in half-points for OOXML (14pt = 28 half-points)
|
||||
@@ -61,5 +67,14 @@ module Notare
|
||||
|
||||
raise ArgumentError, "Invalid alignment: #{align}. Use #{ALIGNMENTS.join(", ")}"
|
||||
end
|
||||
|
||||
def validate_highlight(highlight)
|
||||
return nil if highlight.nil?
|
||||
|
||||
color = highlight.to_s
|
||||
return color if HIGHLIGHT_COLORS.include?(color)
|
||||
|
||||
raise ArgumentError, "Invalid highlight color: #{highlight}. Use one of: #{HIGHLIGHT_COLORS.join(", ")}"
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
Reference in New Issue
Block a user