class Reline::KeyStroke

def expand(input)

def expand(input)
  lhs = key_mapping.keys.select { |item| start_with?(input, item) }.sort_by(&:size).last
  unless lhs
    status, size = match_unknown_escape_sequence(input)
    case status
    when :matched
      return [:ed_unassigned] + expand(input.drop(size))
    when :matching
      return [:ed_unassigned]
    else
      return input
    end
  end
  rhs = key_mapping[lhs]
  case rhs
  when String
    rhs_bytes = rhs.bytes
    expand(expand(rhs_bytes) + expand(input.drop(lhs.size)))
  when Symbol
    [rhs] + expand(input.drop(lhs.size))
  when Array
    rhs
  end
end