• R/O
  • HTTP
  • SSH
  • HTTPS

Commit

Tags

Frequently used words (click to add to your profile)

javac++androidlinuxc#windowsobjective-ccocoa誰得qtpythonphprubygameguibathyscaphec計画中(planning stage)翻訳omegatframeworktwitterdomtestvb.netdirectxゲームエンジンbtronarduinopreviewer

Commit MetaInfo

Revision3cca2405d075fb8f2d08ae53183cfb4ef08c45be (tree)
Zeit2007-02-27 20:40:56
Autorsoutaro <soutaro@f836...>
Commitersoutaro

Log Message

plugin_from_uri plugin and filter::invert plugin

git-svn-id: http://dev.ikejima.org/src/svn/pragger/trunk@340 f8368ae4-1e99-dc11-9799-0018f35ab5fa

Ändern Zusammenfassung

Diff

--- /dev/null
+++ b/plugin/filter/invert.rb
@@ -0,0 +1,15 @@
1+## filter::invert
2+##
3+## Apply filter of config: section and invert the result.
4+##
5+## - module: filter::invert
6+## config:
7+## - module: grep
8+## config:
9+## regex: "理系の人々"
10+##
11+
12+def invert(config, data)
13+ data2 = eval_pragger(config, data)
14+ data.delete_if {|d| data2.include? d }
15+end
--- a/plugin/plagger.rb
+++ b/plugin/plagger.rb
@@ -1,106 +1,91 @@
1-# ** what's this **
2-#
3-# interleave plagger processing.
4-#
5-# ** example **
6-#
7-# - module: load_rss
8-# config:
9-# url: http://d.hatena.ne.jp/sumii/rss
10-# - module: plagger
11-# config:
12-# input: feed
13-# debug: on
14-# plugins:
15-# - module: Publish::CSV
16-# config:
17-# dir: /var
18-# filename: a.csv
19-# - module: print
20-# config:
21-# a: nil
22-#
1+## ** what's this **
2+##
3+## interleave plagger processing.
4+##
5+## ** example **
6+##
7+## - module: load_rss
8+## config:
9+## url: http://d.hatena.ne.jp/sumii/rss
10+## - module: plagger
11+## config:
12+## input: feed
13+## debug: on
14+## plugins:
15+## - module: Publish::CSV
16+## config:
17+## dir: /var
18+## filename: a.csv
19+## - module: print
20+## config:
21+## a: nil
22+##
2323
24-def plagger(config, data)
25- require 'open-uri'
26- require 'rss/1.0'
27- require 'rss/2.0'
28- require 'pathname'
29- require File.join(File.dirname(__FILE__),'save_rss.rb')
30-
31- Plagger.new.plagger(config, data)
32-end
24+require 'open-uri'
25+require 'rss/1.0'
26+require 'rss/2.0'
27+require 'pathname'
3328
34-class Plagger
35- def plagger(config, data)
36- pla_con = config["plugins"]
37-
38- if input_option(config) == :feed
39- pla_con = [{"module" => "Subscription::Feed", "config"=>{ "url" => "file:#{pla_input(config)}" }}] + pla_con
40- save_rss({ "filename" => pla_input(config).to_s }, data)
41- end
42-
43- pla_con.push({"module" => "Publish::Feed",
44- "config" =>
45- {"dir" => "/var",
46- "format" => "RSS",
47- "filename" => pla_output(config).basename.to_s}})
48-
49- pla_config(config).open("w") {|io|
50- io.write to_plagger_yaml(YAML.dump({ "plugins" => pla_con }))
51- }
52-
53- system "plagger -c #{pla_config(config)}"
54-
55- begin
56- RSS::Parser.parse(pla_output(config).read).items
57- rescue
58- []
59- ensure
60- unless config.has_key?("debug")
61- begin
62- pla_config(config).delete
63- pla_input(config).delete
64- pla_output(config).delete
65- rescue => a
66- pp a
67- end
68- end
69- end
70- end
29+def plagger(config, data)
30+ pla_con = config["plugins"]
7131
72- def pla_dir(config)
73- Pathname.new(config.has_key?("dir") ? config["dir"] : "/var")
32+ if input_option(config) == :feed
33+ pla_con = [{"module" => "Subscription::Feed", "config"=>{ "url" => "file:#{pla_input(config)}" }}] + pla_con
34+ eval_pragger([{"module" => "save_rss", "config" => { "filename" => pla_input(config).to_s }}], data)
7435 end
7536
76- def pla_config(config)
77- pla_dir(config) + "pla.yaml"
78- end
37+ pla_con.push({"module" => "Publish::Feed",
38+ "config" =>
39+ {"dir" => "/var",
40+ "format" => "RSS",
41+ "filename" => pla_output(config).basename.to_s}})
7942
80- def pla_output(config)
81- pla_dir(config) + "pla_output"
82- end
43+ pla_config(config).open("w") {|io| io.write to_plagger_yaml(YAML.dump({ "plugins" => pla_con })) }
8344
84- def pla_input(config)
85- pla_dir(config) + "pla_input"
86- end
45+ system "plagger -c #{pla_config(config)}"
8746
88- def input_option(config)
89- opt = config.has_key?("input") ? config["input"] : "nothing"
90- case opt
91- when "feed": :feed
92- when "nothing": :nothing
93- else
94- :nothing
47+ begin
48+ RSS::Parser.parse(pla_output(config).read).items
49+ rescue
50+ []
51+ ensure
52+ unless config.has_key?("debug")
53+ pla_config(config).delete
54+ pla_input(config).delete
55+ pla_output(config).delete
9556 end
9657 end
58+end
59+
60+def pla_dir(config)
61+ Pathname.new(config.has_key?("dir") ? config["dir"] : "/var")
62+end
9763
98- def to_plagger_yaml(yaml)
99- a = yaml.split(/\n/)
100- ret = a[1]+"\n"
101- ret + a[2..(a.size-1)].collect {|x|
102- " "+x
103- }.join("\n")+"\n"
64+def pla_config(config)
65+ pla_dir(config) + "pla.yaml"
66+end
67+
68+def pla_output(config)
69+ pla_dir(config) + "pla_output"
70+end
71+
72+def pla_input(config)
73+ pla_dir(config) + "pla_input"
74+end
75+
76+def input_option(config)
77+ opt = config.has_key?("input") ? config["input"] : "nothing"
78+ case opt
79+ when "feed": :feed
80+ when "nothing": :nothing
81+ else
82+ :nothing
10483 end
10584 end
10685
86+def to_plagger_yaml(yaml)
87+ a = yaml.split(/\n/)
88+ ret = a[1]+"\n"
89+ ret + a[2..(a.size-1)].collect {|x| " "+x }.join("\n")+"\n"
90+end
91+
--- /dev/null
+++ b/plugin/plugin_from_uri.rb
@@ -0,0 +1,33 @@
1+## author "Soutaro Matsumoto"
2+## descr "load plugin from uri and evaluate it"
3+## example <<EOE
4+## - module: plugin_from_uri
5+## config:
6+## uri: http://some_host/some_path
7+## name: super_plugin
8+## config:
9+## configuration for the plugin
10+## EOE
11+## config({ :uri => Field.new("uri for ruby programs", String, true),
12+## :name => Field.new("name of pragger plugin", String),
13+## :config => Field.new("configuration for the plugin",{}) })
14+
15+require 'open-uri'
16+require 'uri'
17+
18+def plugin_from_uri(config, data)
19+ uri = URI(config["uri"])
20+ name = config["name"] || uri.path.split("/").last.gsub(/\..*$/,'')
21+
22+ body = open(uri.to_s) {|io| io.read}
23+
24+ plugin = Class.new(Plugin)
25+ plugin.class_eval {
26+ def initialize()
27+ end
28+ }
29+ plugin.class_eval(body, uri.to_s, 1)
30+
31+ plugin.new().send(name, config["config"], data)
32+end
33+