<commit_before><?php
use Closure as F;
use Magento\Config\Model\Config\Structure\AbstractElement as AE;
use Magento\Framework\DataObject as _DO;
use Traversable as T;

/**
 * 2015-02-11
 * Аналог @see array_column() для коллекций.
 * Ещё один аналог: @see \Magento\Framework\Data\Collection::getColumnValues(),
 * но его результат — не ассоциативный.
 * 2016-07-31 При вызове с 2-мя параметрами эта функция идентична функции @see df_each()
 * 2017-07-09
 * Now the function accepts an array as $object.
 * Even in this case it differs from @see array_column():
 * array_column() misses the keys: https://3v4l.org/llMrL
 * df_column() preserves the keys.
 * @used-by df_index()
 * @used-by df_product_images_additional()
 * @used-by \Wolf\Filter\Block\Navigation::hDropdowns()
 * @param \Traversable|array(int|string => _DO|array(string => mixed)) $c
 * @param string|Closure $fv
 * @param string|null $fk [optional]
 * @return array(int|string => mixed)
 */
function df_column($c, $fv, $fk = null):array {return df_map_kr($c, function($k, $v) use($fv, $fk) {return [
	!$fk ? $k : df_call($v, $fk), df_call($v, $fv)
];});}

/**
 * Раньше функция @see dfa() была универсальной:
 * она принимала в качестве аргумента $entity как массивы, так и объекты.
 * В 99.9% случаев в качестве параметра передавался массив.
 * Поэтому ради ускорения работы системы вынес обработку объектов в отдельную функцию @see dfo().
 * 2020-01-29
 * If $k is an array, then the function returns a subset of $a with $k keys in the same order as in $k.
 * We heavily rely on it, e.g., in some payment methods: @see \Dfe\Dragonpay\Signer\Request::values()
 * @see dfac()
 * @see dfad()
 * @see dfaoc()
 * @see dfo()
 * @used-by df_bt_has()
 * @used-by df_ci_get()
 * @used-by df_cli_argv()
 * @used-by df_countries_options()
 * @used-by df_currencies_options()
 * @used-by df_db_name()
 * @used-by df_deployment_cfg()
 * @used-by df_fe_attrs()
 * @used-by df_fe_fc()<commit_msg>refactoring<commit_after><?php
use Closure as F;
use Magento\Config\Model\Config\Structure\AbstractElement as AE;
use Magento\Framework\DataObject as _DO;
use Traversable as T;

/**
 * 2015-02-11
 * Аналог @see array_column() для коллекций.
 * Ещё один аналог: @see \Magento\Framework\Data\Collection::getColumnValues(),
 * но его результат — не ассоциативный.
 * 2016-07-31 При вызове с 2-мя параметрами эта функция идентична функции @see df_each()
 * 2017-07-09
 * Now the function accepts an array as $object.
 * Even in this case it differs from @see array_column():
 * array_column() misses the keys: https://3v4l.org/llMrL
 * df_column() preserves the keys.
 * @used-by df_index()
 * @used-by df_product_images_additional()
 * @used-by \Wolf\Filter\Block\Navigation::hDropdowns()
 * @param Traversable|array(int|string => _DO|array(string => mixed)) $c
 * @param string|Closure $fv
 * @param string|null $fk [optional]
 * @return array(int|string => mixed)
 */
function df_column($c, $fv, $fk = null):array {return df_map_kr($c, function($k, $v) use($fv, $fk) {return [
	!$fk ? $k : df_call($v, $fk), df_call($v, $fv)
];});}

/**
 * Раньше функция @see dfa() была универсальной:
 * она принимала в качестве аргумента $entity как массивы, так и объекты.
 * В 99.9% случаев в качестве параметра передавался массив.
 * Поэтому ради ускорения работы системы вынес обработку объектов в отдельную функцию @see dfo().
 * 2020-01-29
 * If $k is an array, then the function returns a subset of $a with $k keys in the same order as in $k.
 * We heavily rely on it, e.g., in some payment methods: @see \Dfe\Dragonpay\Signer\Request::values()
 * @see dfac()
 * @see dfad()
 * @see dfaoc()
 * @see dfo()
 * @used-by df_bt_has()
 * @used-by df_ci_get()
 * @used-by df_cli_argv()
 * @used-by df_countries_options()
 * @used-by df_currencies_options()
 * @used-by df_db_name()
 * @used-by df_deployment_cfg()
 * @used-by df_fe_attrs()
 * @used-by df_fe_fc()
{'fraction_non_alphanumeric': 0.14447010520913522, 'fraction_numerical': 0.019502181164998716, 'mean_word_length': 4.428969359331476, 'pattern_counts': {'":': 0, '<': 5, '<?xml version=': 0, '>': 9, 'https://': 2, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '3187022', 'n_tokens_mistral': 1552, 'n_tokens_neox': 1567, 'n_words': 423}