class SequenceBase # Format: # codepoints ; # (sequence) description SEQUENCE_REGEXP = %r{ (?.+) \# \s{1} \( (?.+) \) \s{1} (?.+) }x.freeze attr_reader :raw, :codepoints, :sequence, :description def initialize(raw) @raw = raw matched = raw.match(SEQUENCE_REGEXP) @codepoints = matched[:codepoints].rstrip @sequence = matched[:sequence] @description = matched[:description] end def to_h Hash( codepoints: codepoints, sequence: sequence, description: description ) end end