Module: ActiveDoc
- Defined in:
- lib/active_doc.rb,
lib/active_doc/rake/task.rb,
lib/active_doc/rdoc_generator.rb,
lib/active_doc/described_method.rb,
lib/active_doc/descriptions/method_argument_description.rb
Defined Under Namespace
Modules: ClassMethods, Descriptions, Dsl, Rake
Classes: DescribedMethod, RdocGenerator
Constant Summary
collapse
- VERSION =
"0.1.0"
Class Method Summary
collapse
Class Method Details
.before_method(base, method_name) ⇒ Object
54
55
56
57
58
59
60
61
62
63
64
|
# File 'lib/active_doc.rb', line 54
def before_method(base, method_name)
method = base.instance_method(method_name)
base.class_eval do
self.send(:define_method, "#{method_name}_with_validation") do |*args|
yield method, args
self.send("#{method_name}_without_validation", *args)
end
self.send(:alias_method, :"#{method_name}_without_validation", method_name)
self.send(:alias_method, method_name, :"#{method_name}_with_validation")
end
end
|
.describe(base, method_name, origin) ⇒ Object
34
35
36
37
38
39
40
41
42
43
44
|
# File 'lib/active_doc.rb', line 34
def describe(base, method_name, origin)
if current_descriptions = pop_current_descriptions
@descriptions ||= {}
@descriptions[[base, method_name]] = ActiveDoc::DescribedMethod.new(base, method_name, current_descriptions, origin)
before_method(base, method_name) do |method, args|
args_with_vals = {}
method.parameters.each_with_index { |(arg, name), i| args_with_vals[name] = {:val => args[i], :required => (arg != :opt), :defined => (i < args.size)} }
current_descriptions.each { |description| description.validate(args_with_vals) }
end
end
end
|
.documented_method(base, method_name) ⇒ Object
46
47
48
|
# File 'lib/active_doc.rb', line 46
def documented_method(base, method_name)
@descriptions && @descriptions[[base,method_name]]
end
|
.documented_methods ⇒ Object
50
51
52
|
# File 'lib/active_doc.rb', line 50
def documented_methods
@descriptions.values
end
|
.included(base) ⇒ Object
4
5
6
7
8
9
10
11
12
|
# File 'lib/active_doc.rb', line 4
def self.included(base)
base.extend(ClassMethods)
base.extend(Dsl)
base.class_eval do
class << self
extend(Dsl)
end
end
end
|
.nested_descriptions ⇒ Object
26
27
28
29
30
31
32
|
# File 'lib/active_doc.rb', line 26
def nested_descriptions
before_nesting_descriptions = self.pop_current_descriptions
yield
after_nesting_descriptions = self.pop_current_descriptions
@current_descriptions = before_nesting_descriptions
return after_nesting_descriptions
end
|
.pop_current_descriptions ⇒ Object
20
21
22
23
24
|
# File 'lib/active_doc.rb', line 20
def pop_current_descriptions
current_descriptions = @current_descriptions
@current_descriptions = nil
return current_descriptions
end
|
.register_description(description) ⇒ Object
15
16
17
18
|
# File 'lib/active_doc.rb', line 15
def register_description(description)
@current_descriptions ||= []
@current_descriptions << description
end
|