class Alfred::Handler::Help

Public Class Methods

new(alfred, opts = {}) click to toggle source
Calls superclass method Alfred::Handler::Base::new
# File lib/alfred/handler/help.rb, line 30
def initialize(alfred, opts = {})
  super
  @settings = {
    :handler           => 'Help'                     ,
    :exclusive?        => true                       ,
    :with_handler_help => true                       ,
    :items             => []                         ,
    :handler_order     => ( Base_Invoke_Order / 10 )
  }.update(opts)

  @order = @settings[:handler_order]

  if @settings[:items].empty?
    @load_from_workflow_setting = true
  else
    @load_from_workflow_setting = false
  end

end

Public Instance Methods

feedback?() click to toggle source
# File lib/alfred/handler/help.rb, line 68
def feedback?
  options.help
end
on_action(arg) click to toggle source
# File lib/alfred/handler/help.rb, line 149
def on_action(arg)
  return unless action?(arg)

  case arg[:kind]
  when 'url'
    ::Alfred::Util.open_url(arg[:url])
  when 'file'
    %x{open "#{arg[:path]}"}
  end
end
on_feedback() click to toggle source
# File lib/alfred/handler/help.rb, line 72
def on_feedback
  return unless feedback?

  if @settings[:with_handler_help]
    @settings[:items].push @core.on_help
    @core.handler_controller.each do |h|
      @settings[:items].push h.on_help
    end
  end

  if @load_from_workflow_setting
    if @core.workflow_setting.has_key?(:help)
      @settings[:items].push @core.workflow_setting[:help]
    end
  end

  @settings[:items].flatten!.compact!
  @settings[:items].map! { |i| HelpItem.new(i) }.sort!

  @settings[:items].each do |item|

    case item[:kind]
    when 'file'
      item[:path] = File.expand_path(item[:path])
      # action is handled by fallback action in the main loop
      feedback.add_file_item(item[:path], item)
    when 'url'
      item[:arg] = xml_builder(
        :handler => @settings[:handler] ,
        :kind    => item[:kind]         ,
        :url     => item[:url]
      )

      feedback.add_item(
        {
          :icon => ::Alfred::Feedback.CoreServicesIcon('BookmarkIcon')
        }.merge(item)
      )

    when 'text', 'message'
      item[:arg] = xml_builder(
        {
          :handler      => @settings[:handler] ,
          :kind         => item[:kind]         ,
        }
      )

      feedback.add_item(
        {
          :valid        => 'no' ,
          :autocomplete => ''   ,
          :icon         => ::Alfred::Feedback.CoreServicesIcon('ClippingText') ,
        }.merge(item)
      )

    else
      if item.has_key? :title
        item[:arg] = xml_builder(
          {
            :handler => @settings[:handler] ,
            :kind    => item[:kind]         ,
          }.merge(item)
        )

        feedback.add_item(
          {
            :icon => ::Alfred::Feedback.CoreServicesIcon('HelpIcon'),
          }.merge(item)
        )
      end
    end
  end

  @status = :exclusive if @settings[:exclusive?]
end
on_help() click to toggle source
# File lib/alfred/handler/help.rb, line 56
def on_help
  {
    :kind         => 'text'                      ,
    :valid        => 'no'                        ,
    :autocomplete => '-h'                        ,
    :match?       => :always_match?              ,
    :order        => (HelpItem::Base_Order * 12) ,
    :title        => '-?, -h, --help [Show Workflow Usage Help]' ,
    :subtitle     => 'Other feedbacks are blocked.'              ,
  }
end
on_parser() click to toggle source
# File lib/alfred/handler/help.rb, line 50
def on_parser
  parser.on_tail('-?', '-h', '--help', 'Workflow Helper') do
    options.help = true
  end
end