summaryrefslogtreecommitdiff
path: root/lib/oxidized/model
diff options
context:
space:
mode:
Diffstat (limited to 'lib/oxidized/model')
-rw-r--r--lib/oxidized/model/model.rb28
-rw-r--r--lib/oxidized/model/outputs.rb43
2 files changed, 63 insertions, 8 deletions
diff --git a/lib/oxidized/model/model.rb b/lib/oxidized/model/model.rb
index c3d8760..af86f1d 100644
--- a/lib/oxidized/model/model.rb
+++ b/lib/oxidized/model/model.rb
@@ -1,3 +1,5 @@
+require_relative 'outputs'
+
module Oxidized
class Model
include Oxidized::Config::Vars
@@ -87,7 +89,7 @@ module Oxidized
end
end
out = instance_exec out, &block if block
- out
+ process_cmd_output out, string
end
def output
@@ -124,20 +126,20 @@ module Oxidized
end
def get
- data, pre = '', ''
+ outputs = Outputs.new
procs = self.class.procs
+ procs[:pre].each do |pre_proc|
+ outputs << instance_eval(&pre_proc)
+ end
self.class.cmds[:cmd].each do |command, block|
out = cmd command, &block
return false unless out
- data << out.to_s
- end
- procs[:pre].each do |pre_proc|
- pre << instance_eval(&pre_proc).to_s
+ outputs << out
end
procs[:post].each do |post_proc|
- data << instance_eval(&post_proc).to_s
+ outputs << instance_eval(&post_proc)
end
- pre + data
+ outputs
end
def comment _comment
@@ -148,5 +150,15 @@ module Oxidized
data
end
+ private
+
+ def process_cmd_output cmd, name
+ if Hash === cmd
+ cmd[:name] = name
+ return cmd
+ end
+ {:output=>cmd, :type=>'cfg', :name=>name}
+ end
+
end
end
diff --git a/lib/oxidized/model/outputs.rb b/lib/oxidized/model/outputs.rb
new file mode 100644
index 0000000..5ef9bc4
--- /dev/null
+++ b/lib/oxidized/model/outputs.rb
@@ -0,0 +1,43 @@
+module Oxidized
+ class Model
+ class Outputs
+
+ def to_cfg
+ type_to_str('cfg')
+ end
+
+ def type_to_str want_type
+ type(want_type).map { |h| h[:output] }.join
+ end
+
+ def each_type &block
+ types.each do |want_type|
+ yield [want_type, type(want_type)]
+ end
+ end
+
+ def << output
+ @outputs << output
+ end
+
+ def all
+ @outputs
+ end
+
+ def type type
+ @outputs.select { |h| h[:type]==type }
+ end
+
+ def types
+ @outputs.map { |h| h[:type] }.uniq
+ end
+
+ private
+
+ def initialize
+ @outputs = []
+ end
+
+ end
+ end
+end