module Pult::Panel::App::Injector

Constants

SYS_KEYS

Public Class Methods

inject!(hash, panel, app) click to toggle source
# File lib/pult/panel/app/injector.rb, line 5
  def self.inject! hash, panel, app
    hash.instance_eval <<-STR
      def _app
        "#{app}"
      end

      def _panel
        ->{ ObjectSpace._id2ref(#{panel.object_id}) }.call
      end
    STR
  
    hash.instance_eval do
      def app?
        true
      end

      def _to_flat param=self, prefix=nil
        hash = param.each_pair.reduce({}) do |a, (k, v)|
          v.is_a?(Hash) && ! SYS_KEYS.include?(k) ?
            a.merge(_to_flat(v, "#{prefix}#{k}."))
            : a.merge("#{prefix}#{k}" => v)
        end

        Pult::Panel::App.to_app! hash, _panel, _app
      end

      def _config
        _panel[_app].config
      end

      def _actions
        keys - SYS_KEYS
      end

      def _translated_actions
        _actions.map{ |action| _action_title(action) }
      end

      #
      # TODO order param like :ui => :az, :orig => :config, etc..
      #
      def _ui_actions order: :az_ui
        resproc = proc { |action| [action, _action_title(action)] }
        tacts = _translated_actions

        case order
        when :config
          _actions.map(&resproc)
        when :config_ui
          _actions.map(&resproc).sort_by{|arr| tacts.index(arr[1]) }
        when :az
          _actions.sort.map(&resproc)
        when :az_ui
          _actions.map(&resproc).sort_by{|arr| arr[1] }
        end
      end

      def _action_title action
         _action_translate(action) || action
      end

      def _action_translate action
        self&.config&.ui&.ru&.action&.send(:[], action)
      end
    end
  end

Public Instance Methods

_action_title(action) click to toggle source
# File lib/pult/panel/app/injector.rb, line 62
def _action_title action
   _action_translate(action) || action
end
_action_translate(action) click to toggle source
# File lib/pult/panel/app/injector.rb, line 66
def _action_translate action
  self&.config&.ui&.ru&.action&.send(:[], action)
end
_actions() click to toggle source
# File lib/pult/panel/app/injector.rb, line 35
def _actions
  keys - SYS_KEYS
end
_config() click to toggle source
# File lib/pult/panel/app/injector.rb, line 31
def _config
  _panel[_app].config
end
_to_flat(param=self, prefix=nil) click to toggle source
# File lib/pult/panel/app/injector.rb, line 21
def _to_flat param=self, prefix=nil
  hash = param.each_pair.reduce({}) do |a, (k, v)|
    v.is_a?(Hash) && ! SYS_KEYS.include?(k) ?
      a.merge(_to_flat(v, "#{prefix}#{k}."))
      : a.merge("#{prefix}#{k}" => v)
  end

  Pult::Panel::App.to_app! hash, _panel, _app
end
_translated_actions() click to toggle source
# File lib/pult/panel/app/injector.rb, line 39
def _translated_actions
  _actions.map{ |action| _action_title(action) }
end
_ui_actions(order: :az_ui) click to toggle source

TODO order param like :ui => :az, :orig => :config, etc..

# File lib/pult/panel/app/injector.rb, line 46
def _ui_actions order: :az_ui
  resproc = proc { |action| [action, _action_title(action)] }
  tacts = _translated_actions

  case order
  when :config
    _actions.map(&resproc)
  when :config_ui
    _actions.map(&resproc).sort_by{|arr| tacts.index(arr[1]) }
  when :az
    _actions.sort.map(&resproc)
  when :az_ui
    _actions.map(&resproc).sort_by{|arr| arr[1] }
  end
end
app?() click to toggle source
# File lib/pult/panel/app/injector.rb, line 17
def app?
  true
end