# frozen_string_literal: true module Axlsx # A CatAxis object defines a chart category axis class CatAxis < Axis # Creates a new CatAxis object # @option options [Integer] tick_lbl_skip # @option options [Integer] tick_mark_skip def initialize(options = {}) @tick_lbl_skip = 1 @tick_mark_skip = 1 self.auto = 1 self.lbl_algn = :ctr self.lbl_offset = "100" super(options) end # From the docs: This element specifies that this axis is a date or text axis based on the data that is used for the axis labels, not a specific choice. # @return [Boolean] attr_reader :auto # specifies how the perpendicular axis is crossed # must be one of [:ctr, :l, :r] # @return [Symbol] attr_reader :lbl_algn alias :lblAlgn :lbl_algn # The offset of the labels # must be between a string between 0 and 1000 # @return [Integer] attr_reader :lbl_offset alias :lblOffset :lbl_offset # The number of tick lables to skip between labels # @return [Integer] attr_reader :tick_lbl_skip alias :tickLblSkip :tick_lbl_skip # The number of tickmarks to be skipped before the next one is rendered. # @return [Boolean] attr_reader :tick_mark_skip alias :tickMarkSkip :tick_mark_skip # regex for validating label offset LBL_OFFSET_REGEX = /0*(([0-9])|([1-9][0-9])|([1-9][0-9][0-9])|1000)/.freeze # @see tick_lbl_skip def tick_lbl_skip=(v) Axlsx.validate_unsigned_int(v) @tick_lbl_skip = v end alias :tickLblSkip= :tick_lbl_skip= # @see tick_mark_skip def tick_mark_skip=(v) Axlsx.validate_unsigned_int(v) @tick_mark_skip = v end alias :tickMarkSkip= :tick_mark_skip= # From the docs: This element specifies that this axis is a date or text axis based on the data that is used for the axis labels, not a specific choice. def auto=(v) Axlsx.validate_boolean(v) @auto = v end # specifies how the perpendicular axis is crossed # must be one of [:ctr, :l, :r] def lbl_algn=(v) RestrictionValidator.validate "#{self.class}.lbl_algn", [:ctr, :l, :r], v @lbl_algn = v end alias :lblAlgn= :lbl_algn= # The offset of the labels # must be between a string between 0 and 1000 def lbl_offset=(v) RegexValidator.validate "#{self.class}.lbl_offset", LBL_OFFSET_REGEX, v @lbl_offset = v end alias :lblOffset= :lbl_offset= # Serializes the object # @param [String] str # @return [String] def to_xml_string(str = +'') str << '' super(str) str << '' str << '' str << '' str << '' str << '' str << '' end end end