Sha256: 7ad323ef7b2a23ead21eac0d51364e22fbc5f4a5ec6a2e63e7395bdd17e0f97c
Contents?: true
Size: 1022 Bytes
Versions: 3
Compression:
Stored size: 1022 Bytes
Contents
module PlantumlBuilder class Encode64 # Encoding alphabet # 0..9, # A..Z, # a..z, # -, # _ ALPHABET = ['0'..'9', 'A'..'Z', 'a'..'z', %w[- _ ?]].map(&:to_a).flatten.freeze def initialize(string) self.diagram = string self.query = '' end def encode align_diagram.map(&:ord).each_slice(3) do |slice| append3bytes(*slice) end query end private attr_accessor :diagram, :query def align_diagram chars = diagram.chars unaligned = chars.length % 3 left = unaligned.zero? ? 0 : 3 - unaligned chars + [0] * left end def append3bytes(b1, b2, b3) c1 = b1 >> 2 c2 = ((b1 & 0x3) << 4) | (b2 >> 4) c3 = ((b2 & 0xF) << 2) | (b3 >> 6) c4 = b3 & 0x3F [c1, c2, c3, c4].each do |c| self.query = query + encode6bit(c & 0x3F) end end def encode6bit(b) ALPHABET[b] || ALPHABET.last end end end
Version data entries
3 entries across 3 versions & 1 rubygems
Version | Path |
---|---|
plantuml_builder-0.3.0 | lib/plantuml_builder/encode64.rb |
plantuml_builder-0.2.0 | lib/plantuml_builder/encode64.rb |
plantuml_builder-0.1.1 | lib/plantuml_builder/encode64.rb |