Class: Linen::Plugin

Inherits:
Object
  • Object
show all
Defined in:
lib/linen/plugin.rb

Overview

Copyright 2007, LAIKA, Inc. #

#

Authors: #

* Ben Bleything <[email protected]>                    #

Defined Under Namespace

Classes: Argument, ArgumentError, Command, PluginError

Class Attribute Summary collapse

Class Method Summary collapse

Class Attribute Details

.commandsObject (readonly)

Returns the value of attribute commands.



12
13
14
# File 'lib/linen/plugin.rb', line 12

def commands
  @commands
end

Class Method Details

.argument(name, opts = {}) ⇒ Object



48
49
50
51
52
53
54
55
56
# File 'lib/linen/plugin.rb', line 48

def self::argument( name, opts = {} )
	@defined_arguments ||= IndifferentHash.new

	if opts[:error_message].nil? and opts['error_message'].nil?
		opts[ :error_message ] = "The value for #{name} is invalid."
	end

	@defined_arguments[ name ] = Argument.new( self, name, opts )
end

.arguments(*args) ⇒ Object

If args is empty, assume it was called like Plugin.arguments, so return the hash.



61
62
63
64
65
66
67
68
69
# File 'lib/linen/plugin.rb', line 61

def self::arguments( *args )
	@defined_arguments ||= IndifferentHash.new

	return @defined_arguments if args.empty?

	args.each do |arg|
		argument arg
	end
end

.cleanup(&block) ⇒ Object

multi-purpose method!

if passed a block, set this plugin’s cleanup proc to the block. if called without a block, execute the proc.

this is meant to allow plugins to clean up after themselves.



85
86
87
88
89
90
91
92
# File 'lib/linen/plugin.rb', line 85

def self::cleanup( &block )
	if block_given?
		@cleanup_proc = block
	else
		# if we didn't define a proc, don't try to call it
		@cleanup_proc.call if @cleanup_proc
	end
end

.command(name, &block) ⇒ Object



72
73
74
75
76
# File 'lib/linen/plugin.rb', line 72

def self::command( name, &block )
	@commands ||= IndifferentHash.new

	@commands[ name ] = Command.new( self, name, &block )
end

.description(input = nil) ⇒ Object

define the plugin’s description, or fetch it if nothing passed



96
97
98
99
100
# File 'lib/linen/plugin.rb', line 96

def self::description( input = nil )
	return @description unless input

	@description = input
end

.helpObject



27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
# File 'lib/linen/plugin.rb', line 27

def self::help
	output = []

	desc = description || "No help for #{short_name}"

	output << desc
	output << nil #blank line
	output << "Available commands:"
	output << nil #blank line

	commands.each do |name, command|
		output << "- #{name}"
	end

	output << nil #blank line
	output << "For detailed help on a command, enter \"help #{short_name} <command>\"".wrap

	return output.join( "\n" )
end

.inherited(plugin) ⇒ Object



16
17
18
# File 'lib/linen/plugin.rb', line 16

def self::inherited( plugin )
	Linen::PluginRegistry.instance.register plugin
end

.short_name(short_name = nil) ⇒ Object



21
22
23
24
# File 'lib/linen/plugin.rb', line 21

def self::short_name( short_name = nil )
	@short_name = short_name if short_name
	return @short_name || self.to_s.downcase.gsub( /plugin$/, '' )
end