module Dieses::Application::Mixins::Lines::InstanceMethods
Public Instance Methods
lines(unit: Undefined, multiple: Undefined)
click to toggle source
# File lib/dieses/application/mixins/lines.rb, line 26 def lines(unit: Undefined, multiple: Undefined) step_lines(param) unit = Undefined.default(unit, param.unit) multiple = Undefined.default(multiple, param.multiple || param.hlines&.map(&:step)&.sum) draw_hlines unit: unit, multiple: multiple draw_vlines unit: unit, multiple: multiple draw_clines unit: unit, multiple: multiple end
Private Instance Methods
draw_clines(unit:, multiple:)
click to toggle source
# File lib/dieses/application/mixins/lines.rb, line 80 def draw_clines(unit:, multiple:) # rubocop:disable Metrics/MethodLength return unless param.clines param = self.param draw unit: unit, multiple: multiple do repeat do param.clines.each do |slant| repeat do cline(*slant.tags, angle: slant.angle, style: slant.style) cross end end end end end
draw_hlines(unit:, multiple:)
click to toggle source
# File lib/dieses/application/mixins/lines.rb, line 50 def draw_hlines(unit:, multiple:) return unless param.hlines param = self.param draw unit: unit, multiple: multiple do repeat do param.hlines.each do |line| hline(*line.tags, style: line.style) down line.step end end end end
draw_vlines(unit:, multiple:)
click to toggle source
# File lib/dieses/application/mixins/lines.rb, line 65 def draw_vlines(unit:, multiple:) return unless param.vlines param = self.param draw unit: unit, multiple: multiple do repeat do param.vlines.each do |line| vline(*line.tags, style: line.style) right line.step end end end end
step_lines(param)
click to toggle source
# File lib/dieses/application/mixins/lines.rb, line 39 def step_lines(param) [*param.hlines, *param.vlines].compact.each do |line| line.step = case line.after when Proc then param.instance_exec(&line.after) when Numeric then line.after when Undefined, NilClass then 1 else raise ArgumentError, "Wrong type for after: #{line.after.class}" end end end