module ThemeDoodle
ThemeDoodle — rainbow mIRC colouring and fserve-style ASCII frame art. Public: COLOUR_CYCLE, colour_at, rainbow_decorate, rainbow_line, ibis_rainbow_line, fserver_banner, fserver_separators, fserver_footer Depends: IrcFormat, IrcAscii Tests: test/lib/theme_doodle_test.rb
Constants
- FSERVE_WIDTH
- SEPARATOR_CHARS
Public Instance Methods
Source
# File lib/theme_doodle.rb, line 27 def colour_at(index) cycle = colour_cycle cycle[index % cycle.length] end
Source
# File lib/theme_doodle.rb, line 18 def colour_cycle @colour_cycle ||= begin require_relative "irc_extended_colors" vivid = IrcExtendedColors.codes_for_group(:vivid) pastel = IrcExtendedColors.codes_for_group(:pastel) (vivid + pastel).freeze end end
Source
# File lib/theme_doodle.rb, line 61 def fserver_separators(width: FSERVE_WIDTH, count: 3) lines = [] count.times do |index| char = SEPARATOR_CHARS[index % SEPARATOR_CHARS.length] lines << char * width lines << ("+" + char * (width - 2) + "+") end lines end
Source
# File lib/theme_doodle.rb, line 46 def ibis_rainbow_line(text, line_index: 0, seed: 0) rainbow_line(text, line_index: line_index, seed: seed + 7) end
Source
# File lib/theme_doodle.rb, line 32 def rainbow_decorate(text, offset: 0) text.to_s.chars.map.with_index do |ch, index| next ch if ch == " " fg = colour_at(offset + index) "#{IrcFormat.color(fg)}#{ch}#{IrcFormat::RESET}" end.join end
Source
# File lib/theme_doodle.rb, line 41 def rainbow_line(text, line_index: 0, seed: 0) offset = (seed.to_s.bytes.sum + (line_index * 11)) % colour_cycle.length rainbow_decorate(text, offset: offset) end