Module: Charty::DashPatternGenerator
- Extended by:
- Enumerable
- Defined in:
- lib/charty/dash_pattern_generator.rb
Constant Summary collapse
- NAMED_PATTERNS =
{ solid: "", dash: [4, 1.5], dot: [1, 1], dashdot: [3, 1.25, 1.5, 1.25], longdashdot: [5, 1, 1, 1], }.freeze
Class Method Summary collapse
Class Method Details
.each ⇒ Object
28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 |
# File 'lib/charty/dash_pattern_generator.rb', line 28 def self.each return enum_for(__method__) unless block_given? NAMED_PATTERNS.each_value do |pattern| yield pattern end m = 3 while true # Long and short dash combinations a = [3, 1.25].repeated_combination(m).to_a[1..-2].reverse b = [4, 1].repeated_combination(m).to_a[1..-2] # Interleave these combinations segment_list = a.zip(b).flatten(1) # Insert the gaps segment_list.each do |segment| gap = segment.min pattern = segment.map {|seg| [seg, gap] }.flatten yield pattern end m += 1 end end |
.pattern_to_name(pattern) ⇒ Object
21 22 23 24 25 26 |
# File 'lib/charty/dash_pattern_generator.rb', line 21 def self.pattern_to_name(pattern) NAMED_PATTERNS.each do |key, val| return key if pattern == val end nil end |
.valid_name?(name) ⇒ Boolean
11 12 13 14 15 16 17 18 19 |
# File 'lib/charty/dash_pattern_generator.rb', line 11 def self.valid_name?(name) name = case name when Symbol, String name.to_sym else name.to_str.to_sym end NAMED_PATTERNS.key?(name) end |