# frozen_string_literal: true module Vedeu module Borders # Provides a mechanism to help configure borders in Vedeu. # class DSL include Vedeu::DSL include Vedeu::DSL::Border include Vedeu::DSL::Presentation include Vedeu::DSL::Use # {include:file:docs/dsl/by_method/border.md} # @macro param_name # @param block [Proc] # @macro raise_requires_block # @macro raise_missing_required # @return [Vedeu::Borders::Border] def self.border(name, &block) raise Vedeu::Error::MissingRequired unless name raise Vedeu::Error::RequiresBlock unless block_given? Vedeu::Borders::Border.build(enabled: true, name: name, &block).store end # {include:file:docs/dsl/by_method/bottom_left.md} # @param char [String] Character to be used as the bottom left # border character. # @param options [Hash Hash String>|String| # Symbol] # @option options colour [Hash String>] # @option options style [String|Symbol] # @return [String] def bottom_left(char, options = {}) model.bottom_left = Vedeu::Cells::BottomLeft.new(attrs(char, options)) end alias bottom_left= bottom_left # {include:file:docs/dsl/by_method/bottom_right.md} # @param char [String] Character to be used as the bottom right # border character. # @param options [Hash Hash String>|String| # Symbol] # @option options colour [Hash String>] # @option options style [String|Symbol] # @return [String] def bottom_right(char, options = {}) model.bottom_right = Vedeu::Cells::BottomRight.new(attrs(char, options)) end alias bottom_right= bottom_right # {include:file:docs/dsl/by_method/disable.md} # @return [Boolean] def disable! model.enabled = false hide_bottom! hide_left! hide_right! hide_top! model.enabled end alias disabled! disable! # {include:file:docs/dsl/by_method/enable.md} # @return [Boolean] def enable! model.enabled = true show_bottom! show_left! show_right! show_top! model.enabled end alias enabled! enable! # {include:file:docs/dsl/by_method/top_horizontal.md} # @param char [String] Character to be used as the top # horizontal border character. # @param options [Hash Hash String>|String| # Symbol] # @option options colour [Hash String>] # @option options style [String|Symbol] # @return [String] def top_horizontal(char, options = {}) model.top_horizontal = Vedeu::Cells::TopHorizontal .new(attrs(char, options)) end alias top_horizontal= top_horizontal # {include:file:docs/dsl/by_method/bottom_horizontal.md} # @param char [String] Character to be used as the bottom # horizontal border character. # @param options [Hash Hash String>|String| # Symbol] # @option options colour [Hash String>] # @option options style [String|Symbol] # @return [String] def bottom_horizontal(char, options = {}) model.bottom_horizontal = Vedeu::Cells::BottomHorizontal .new(attrs(char, options)) end alias bottom_horizontal= bottom_horizontal # {include:file:docs/dsl/by_method/horizontal.md} # @param char [String] Character to be used as the horizontal # border character. # @param options [Hash Hash String>|String| # Symbol] # @option options colour [Hash String>] # @option options style [String|Symbol] # @return [String] def horizontal(char, options = {}) model.horizontal = Vedeu::Cells::Horizontal.new(attrs(char, options)) end alias horizontal= horizontal # {include:file:docs/dsl/by_method/bottom.md} # @param value [Boolean] All values evaluate as true except nil # and false. # @return [Boolean] def bottom(value) boolean = value ? true : false model.show_bottom = boolean end alias show_bottom bottom alias bottom= bottom # Disable the bottom border. # # @see Vedeu::Borders::DSL#bottom def hide_bottom! bottom(false) end # Enable the bottom border. # # @see Vedeu::Borders::DSL#bottom def show_bottom! bottom(true) end # {include:file:docs/dsl/by_method/left.md} # @param value [Boolean] All values evaluate as true except nil # and false. # @return [Boolean] def left(value) boolean = value ? true : false model.show_left = boolean end alias show_left left alias left= left # Disable the left border. # # @see Vedeu::Borders::DSL#left def hide_left! left(false) end # Enable the left border. # # @see Vedeu::Borders::DSL#left def show_left! left(true) end # {include:file:docs/dsl/by_method/right.md} # @param value [Boolean] All values evaluate as true except nil # and false. # @return [Boolean] def right(value) boolean = value ? true : false model.show_right = boolean end alias show_right right alias right= right # Disable the right border. # # @see Vedeu::Borders::DSL#right def hide_right! right(false) end # Enable the right border. # # @see Vedeu::Borders::DSL#right def show_right! right(true) end # {include:file:docs/dsl/by_method/title.md} # @param value [String] The title. # @return [String] def title(value) model.title = value model.title end alias title= title # {include:file:docs/dsl/by_method/caption.md} # @param value [String] The caption. # @return [String] def caption(value) model.caption = value model.caption end alias caption= caption # {include:file:docs/dsl/by_method/top.md} # @param value [Boolean] All values evaluate as true except nil # and false. # @return [Boolean] def top(value) boolean = value ? true : false model.show_top = boolean end alias show_top top alias top= top # Disable the top border. # # @see Vedeu::Borders::DSL#top def hide_top! top(false) end # Enable the top border. # # @see Vedeu::Borders::DSL#top def show_top! top(true) end # {include:file:docs/dsl/by_method/top_left.md} # @param char [String] Character to be used as the top left # border character. # @param options [Hash Hash String>|String| # Symbol] # @option options colour [Hash String>] # @option options style [String|Symbol] # @return [String] def top_left(char, options = {}) model.top_left = Vedeu::Cells::TopLeft.new(attrs(char, options)) end alias top_left= top_left # {include:file:docs/dsl/by_method/top_right.md} # @param char [String] Character to be used as the top right # border character. # @param options [Hash Hash String>|String| # Symbol] # @option options colour [Hash String>] # @option options style [String|Symbol] # @return [String] def top_right(char, options = {}) model.top_right = Vedeu::Cells::TopRight.new(attrs(char, options)) end alias top_right= top_right # {include:file:docs/dsl/by_method/left_vertical.md} # @param char [String] Character to be used as the left vertical # border character. # @param options [Hash Hash String>|String| # Symbol] # @option options colour [Hash String>] # @option options style [String|Symbol] # @return [String] def left_vertical(char, options = {}) model.left_vertical = Vedeu::Cells::LeftVertical .new(attrs(char, options)) end alias left_vertical= left_vertical # {include:file:docs/dsl/by_method/right_vertical.md} # @param char [String] Character to be used as the right # vertical border character. # @param options [Hash Hash String>|String| # Symbol] # @option options colour [Hash String>] # @option options style [String|Symbol] # @return [String] def right_vertical(char, options = {}) model.right_vertical = Vedeu::Cells::RightVertical .new(attrs(char, options)) end alias right_vertical= right_vertical # {include:file:docs/dsl/by_method/vertical.md} # @param char [String] Character to be used as the vertical # border character. # @param options [Hash Hash String>|String| # Symbol] # @option options colour [Hash String>] # @option options style [String|Symbol] # @return [String] def vertical(char, options = {}) model.vertical = Vedeu::Cells::Vertical.new(attrs(char, options)) end alias vertical= vertical private # @return [Hash void>] def attrs(value, options) default_options.merge!(value: value).merge!(options) end # @return [Hash NilClass|String|Symbol>] def default_options { colour: model.colour, name: model.name, style: model.style, value: nil, } end end # Border end # DSL # @api public # @!method border # @see Vedeu::Borders::DSL.border def_delegators Vedeu::Borders::DSL, :border end # Vedeu