Sha256: 9cf4e90a13393188a46bfabae8569989a958fff8806a5ffd9c613a44870d6277
Contents?: true
Size: 714 Bytes
Versions: 5
Compression:
Stored size: 714 Bytes
Contents
# frozen_string_literal: true module Roadie class StyleAttributeBuilder def initialize @styles = [] end def <<(style) @styles << style end def attribute_string Deduplicator.apply(stable_sort(@styles).map(&:to_s)).join(";") end private def stable_sort(list) # Ruby's sort is unstable for performance reasons. We need it to be # stable, e.g. to preserve order of elements that are compared equal in # the sorting. # We can accomplish this by using the original array index as a second # comparator for when the first one is equal. list.each_with_index.sort_by { |item, index| [item, index] }.map(&:first) end end end
Version data entries
5 entries across 5 versions & 1 rubygems