Skip to content

Commit

Permalink
[util-core, inject-utils]: Move c.t.inject.conversions.seq to util-core
Browse files Browse the repository at this point in the history
Problem

Finatra's inject-utils/conversions contains useful seq conversion methods that
would fit better in util-core/conversions.

Solution

Deprecate everything in `c.t.inject.conversions.seq`, and move the
functionality to util-core, along with the corresponding tests.

JIRA Issues: CSL-10371

Differential Revision: https://phabricator.twitter.biz/D578605
  • Loading branch information
dotordogh authored and jenkins committed Nov 19, 2020
1 parent 7c0d173 commit 0ad0d11
Show file tree
Hide file tree
Showing 3 changed files with 15 additions and 66 deletions.
3 changes: 3 additions & 0 deletions CHANGELOG.rst
Expand Up @@ -15,6 +15,9 @@ Added
Changed
~~~~~~~

* inject-utils: Deprecate all methods in `c.t.inject.conversions.seq`, and move functionality
to `c.t.conversions.SeqOps` in the util/util-core project.. ``PHAB_ID=D578605``

* inject-utils: Remove deprecated `camelify`, `pascalify`, and `snakify` from
`c.t.inject.conversions.string.RichString`. Additionally, deprecate `toOption` and
`getOrElse` in `c.t.inject.conversions.string.RichString`, and move functionality to
Expand Down
@@ -1,47 +1,31 @@
package com.twitter.inject.conversions

import scala.annotation.tailrec
import com.twitter.conversions.SeqOps

@deprecated("Use com.twitter.conversions.SeqOps instead", "2020-11-16")
object seq {

implicit class RichSeq[A](val self: Seq[A]) extends AnyVal {

def createMap[K, V](keys: A => K, values: A => V): Map[K, V] = {
self.iterator.map { elem =>
keys(elem) -> values(elem)
}.toMap
}
@deprecated("Use com.twitter.conversions.SeqOps#createMap instead", "2020-11-16")
def createMap[K, V](keys: A => K, values: A => V): Map[K, V] =
SeqOps.createMap(self, keys, values)

def createMap[K, V](values: A => V): Map[A, V] = {
self.iterator.map { elem =>
elem -> values(elem)
}.toMap
}
@deprecated("Use com.twitter.conversions.SeqOps#createMap instead", "2020-11-16")
def createMap[K, V](values: A => V): Map[A, V] = SeqOps.createMap(self, values)

def foreachPartial(pf: PartialFunction[A, Unit]): Unit = {

self.foreach { elem =>
if (pf.isDefinedAt(elem)) {
pf(elem)
}
}
}
@deprecated("Use com.twitter.conversions.SeqOps#foreachPartial instead", "2020-11-16")
def foreachPartial(pf: PartialFunction[A, Unit]): Unit = SeqOps.foreachPartial(self, pf)

/**
* Chooses last element in seq when key collision occurs
*/
@deprecated("Use com.twitter.conversions.SeqOps#groupBySingleValue instead", "2020-11-16")
def groupBySingleValue[B](keys: A => B): Map[B, A] = {
createMap(keys, identity)
}

def findItemAfter(itemToFind: A): Option[A] = {
@tailrec
def recurse(itemToFind: A, seq: Seq[A]): Option[A] = seq match {
case Seq(x, xs @ _*) if x == itemToFind => xs.headOption
case Seq(x, xs @ _*) => recurse(itemToFind, xs)
case Seq() => None
}
recurse(itemToFind, self)
}
@deprecated("Use com.twitter.conversions.SeqOps#findItemAfter instead", "2020-11-16")
def findItemAfter(itemToFind: A): Option[A] = SeqOps.findItemAfter(self, itemToFind)
}
}

This file was deleted.

0 comments on commit 0ad0d11

Please sign in to comment.