Sha256: 37f63fec4ceafb9496faa04a026c4317e88df5b580080a46cd7d1f4d2b76e096

Contents?: true

Size: 677 Bytes

Versions: 10

Compression:

Stored size: 677 Bytes

Contents

module Writefully
  Taxon = Struct.new(:incoming, :existing, :type) do 
    def non_existing
      get_difference.map { |token| Tag.new(build_attributes(token)) }
    end

    def selector
      @selector ||= type.underscore.to_sym
    end

    def get_difference
      (parameterized(incoming) - parameterized(existing)).map { |t| t.titleize }
    end

    def type_attribute 
      selector == :'writefully/tag' ? { type: nil } : { type: selector.to_s.classify }
    end

    def build_attributes token
      type_attribute
        .merge({ name: token, slug: token.parameterize })
    end

    def parameterized items
      items.map { |t| t.parameterize }
    end
  end
end

Version data entries

10 entries across 10 versions & 1 rubygems

Version Path
writefully-0.4.10 lib/writefully/taxon.rb
writefully-0.4.8 lib/writefully/taxon.rb
writefully-0.4.7 lib/writefully/taxon.rb
writefully-0.4.6 lib/writefully/taxon.rb
writefully-0.4.5 lib/writefully/taxon.rb
writefully-0.4.4 lib/writefully/taxon.rb
writefully-0.4.2 lib/writefully/taxon.rb
writefully-0.4.1 lib/writefully/taxon.rb
writefully-0.4.0 lib/writefully/taxon.rb
writefully-0.3.6 lib/writefully/taxon.rb