Sha256: eeff73c2fb142525f55c6067e2908fb7b7398ab9d01fa9d967261fa8e2009c21
Contents?: true
Size: 693 Bytes
Versions: 1
Compression:
Stored size: 693 Bytes
Contents
# frozen_string_literal: true module Hearken class RangeExpander def expand(text) text.split(/[^0-9a-z-]/).inject([]) { |acc, term| acc + expand_term(term) } end def expand_to_ids(text) expand(text).map { |number| from_number number } end private def expand_term(term) words = term.split "-" words.empty? ? [] : range(words.first, words.last) end def range(from, to) f = to_number(from) t = to_number(to) t = to_number(from.slice(0...from.size - to.size) + to) if t < f (f..t).to_a end def from_number(term) term.to_s 36 end def to_number(term) term.to_i 36 end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
hearken-0.1.3 | lib/hearken/range_expander.rb |