<?php

namespace Atom\runtime_7456b800;

/**
 * 通用的工具函数集
 *
 * @package Atom\runtime_7456b800
 * @auther lvsheng
 */
class Atom_Util_Options {

    /**
     * 获取组件实例相关信息
     * @param $options array
     * @param $type string {'components'} 目前只支持'components'
     * @param $id string
     * @param $warnMissing bool
     * @return string|void
     */
    public static function resolveAsset($options, $type, $id, $warnMissing = false) {
        // 尝试从options中找
        $optionsResult = self::resolveAssetFrom($options[$type], $id);
        if (isset($optionsResult)) {
            return $optionsResult;
        } else {
            // 尝试从全局中找
            return self::resolveAssetFrom(\Atom_Global_Config::$globalAsset[$type], $id);
        }
    }

    /**
     * @param $assets
     * @param $id
     * @return string|void
     */
    private static function resolveAssetFrom($assets, $id) {
        if (isset($assets)) {
            if (isset($assets[$id])) {
                return $assets[$id];
            }

            $camelizedId = Atom_Util_Shared::camelize($id);
            if (isset($assets[$camelizedId])) {
                return $assets[$camelizedId];
            }

            $PascalCaseId = Atom_Util_Shared::capitalize($camelizedId);
            if (isset($assets[$PascalCaseId])) {
                return $assets[$PascalCaseId];
            }
        }
    }

    /**
     * @param $id
     * @return callable|null
     */
    public static function getFilter($id) {
        return \Atom_Global_Config::$globalFilterMap[$id];
    }
}
