rules_engine_templates 0.0.3 → 0.0.4

Sign up to get free protection for your applications and to get access to all the features.
Files changed (64) hide show
  1. data/VERSION +1 -1
  2. data/rails_generators/manifests/plan_start.rb +4 -1
  3. data/rails_generators/manifests/plan_start.yml +0 -1
  4. data/rails_generators/manifests/tweet_filter.rb +4 -1
  5. data/rails_generators/manifests/tweet_filter.yml +0 -1
  6. data/rails_generators/manifests/tweet_filter_rt.rb +29 -0
  7. data/rails_generators/manifests/tweet_filter_rt.yml +19 -0
  8. data/rails_generators/manifests/tweet_reader.rb +6 -1
  9. data/rails_generators/manifests/tweet_reader.yml +3 -1
  10. data/rails_generators/manifests/tweet_word_filter.rb +29 -0
  11. data/rails_generators/manifests/tweet_word_filter.yml +19 -0
  12. data/rails_generators/manifests/tweet_word_splitter.rb +29 -0
  13. data/rails_generators/manifests/tweet_word_splitter.yml +19 -0
  14. data/rails_generators/manifests/tweet_word_writer.rb +37 -0
  15. data/rails_generators/manifests/tweet_word_writer.yml +30 -0
  16. data/rails_generators/manifests/workflow_start.rb +4 -1
  17. data/rails_generators/manifests/workflow_start.yml +0 -1
  18. data/rails_generators/manifests/workflow_stop.rb +5 -1
  19. data/rails_generators/manifests/workflow_stop.yml +3 -2
  20. data/rails_generators/rules_engine_templates_generator.rb +4 -2
  21. data/rails_generators/templates/app/controllers/rules/tweet_word_writer_controller.rb +21 -0
  22. data/rails_generators/templates/app/rules/plan_start.rb +4 -1
  23. data/rails_generators/templates/app/rules/tweet_filter.rb +34 -8
  24. data/rails_generators/templates/app/rules/tweet_filter_rt.rb +93 -0
  25. data/rails_generators/templates/app/rules/tweet_reader.rb +56 -7
  26. data/rails_generators/templates/app/rules/tweet_word_filter.rb +124 -0
  27. data/rails_generators/templates/app/rules/tweet_word_splitter.rb +99 -0
  28. data/rails_generators/templates/app/rules/tweet_word_writer.rb +115 -0
  29. data/rails_generators/templates/app/rules/workflow_start.rb +1 -1
  30. data/rails_generators/templates/app/rules/workflow_stop.rb +9 -9
  31. data/rails_generators/templates/app/views/re_rule_definitions/plan_start/_form.html.erb +1 -1
  32. data/rails_generators/templates/app/views/re_rule_definitions/tweet_filter/_form.html.erb +11 -1
  33. data/rails_generators/templates/app/views/re_rule_definitions/tweet_filter_rt/_edit.html.erb +1 -0
  34. data/rails_generators/templates/app/views/re_rule_definitions/tweet_filter_rt/_form.html.erb +16 -0
  35. data/rails_generators/templates/app/views/re_rule_definitions/tweet_filter_rt/_help.html.erb +1 -0
  36. data/rails_generators/templates/app/views/re_rule_definitions/tweet_filter_rt/_new.html.erb +1 -0
  37. data/rails_generators/templates/app/views/re_rule_definitions/tweet_reader/_form.html.erb +2 -2
  38. data/rails_generators/templates/app/views/re_rule_definitions/tweet_word_filter/_edit.html.erb +1 -0
  39. data/rails_generators/templates/app/views/re_rule_definitions/tweet_word_filter/_form.html.erb +45 -0
  40. data/rails_generators/templates/app/views/re_rule_definitions/tweet_word_filter/_help.html.erb +1 -0
  41. data/rails_generators/templates/app/views/re_rule_definitions/tweet_word_filter/_new.html.erb +1 -0
  42. data/rails_generators/templates/app/views/re_rule_definitions/tweet_word_splitter/_edit.html.erb +1 -0
  43. data/rails_generators/templates/app/views/re_rule_definitions/tweet_word_splitter/_form.html.erb +16 -0
  44. data/rails_generators/templates/app/views/re_rule_definitions/tweet_word_splitter/_help.html.erb +1 -0
  45. data/rails_generators/templates/app/views/re_rule_definitions/tweet_word_splitter/_new.html.erb +1 -0
  46. data/rails_generators/templates/app/views/re_rule_definitions/tweet_word_writer/_edit.html.erb +1 -0
  47. data/rails_generators/templates/app/views/re_rule_definitions/tweet_word_writer/_form.html.erb +16 -0
  48. data/rails_generators/templates/app/views/re_rule_definitions/tweet_word_writer/_help.html.erb +2 -0
  49. data/rails_generators/templates/app/views/re_rule_definitions/tweet_word_writer/_new.html.erb +1 -0
  50. data/rails_generators/templates/app/views/re_rule_definitions/tweet_word_writer/index.html.erb +16 -0
  51. data/rails_generators/templates/app/views/re_rule_definitions/workflow_start/_form.html.erb +1 -1
  52. data/rails_generators/templates/app/views/re_rule_definitions/workflow_stop/_form.html.erb +1 -8
  53. data/rails_generators/templates/db/migrate/20100725233933_create_re_tweet_reader_data.rb +12 -0
  54. data/rails_generators/templates/db/migrate/20100727235508_create_tweet_word_writer.rb +24 -0
  55. data/rails_generators/templates/spec/lib/rules/plan_start_spec.rb +40 -35
  56. data/rails_generators/templates/spec/lib/rules/tweet_filter_rt_spec.rb +211 -0
  57. data/rails_generators/templates/spec/lib/rules/tweet_filter_spec.rb +95 -46
  58. data/rails_generators/templates/spec/lib/rules/tweet_reader_spec.rb +160 -48
  59. data/rails_generators/templates/spec/lib/rules/tweet_word_filter_spec.rb +315 -0
  60. data/rails_generators/templates/spec/lib/rules/tweet_word_splitter_spec.rb +244 -0
  61. data/rails_generators/templates/spec/lib/rules/tweet_word_writer_spec.rb +244 -0
  62. data/rails_generators/templates/spec/lib/rules/workflow_start_spec.rb +42 -37
  63. data/rails_generators/templates/spec/lib/rules/workflow_stop_spec.rb +45 -70
  64. metadata +40 -4
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.0.3
1
+ 0.0.4
@@ -4,7 +4,6 @@ class PlanStartManifest
4
4
  %W(
5
5
  app/rules
6
6
  app/views/re_rule_definitions/#{rule_name}
7
- lib/tasks
8
7
  spec/lib/rules
9
8
  ).each do |dirname|
10
9
  m.directory dirname
@@ -23,4 +22,8 @@ class PlanStartManifest
23
22
  m.template "spec/lib/rules/plan_start_spec.rb", "spec/lib/rules/#{rule_name}_spec.rb"
24
23
 
25
24
  end
25
+
26
+ def self.after_generate(rule_name ,rule_class)
27
+ end
28
+
26
29
  end
@@ -1,7 +1,6 @@
1
1
  directories :
2
2
  - app/rules
3
3
  - spec/lib/rules
4
- - lib/tasks
5
4
 
6
5
  templates :
7
6
  replacements :
@@ -4,7 +4,6 @@ class TweetFilterManifest
4
4
  %W(
5
5
  app/rules
6
6
  app/views/re_rule_definitions/#{rule_name}
7
- lib/tasks
8
7
  spec/lib/rules
9
8
  ).each do |dirname|
10
9
  m.directory dirname
@@ -24,4 +23,8 @@ class TweetFilterManifest
24
23
  m.template "spec/lib/rules/tweet_filter_spec.rb", "spec/lib/rules/#{rule_name}_spec.rb"
25
24
 
26
25
  end
26
+
27
+ def self.after_generate(rule_name ,rule_class)
28
+ end
29
+
27
30
  end
@@ -1,7 +1,6 @@
1
1
  directories :
2
2
  - app/rules
3
3
  - spec/lib/rules
4
- - lib/tasks
5
4
 
6
5
  templates :
7
6
  replacements :
@@ -0,0 +1,29 @@
1
+ class TweetFilterRtManifest
2
+ def self.populate_record(m, rule_name ,rule_class)
3
+
4
+ %W(
5
+ app/rules
6
+ app/views/re_rule_definitions/#{rule_name}
7
+ spec/lib/rules
8
+ ).each do |dirname|
9
+ m.directory dirname
10
+ end
11
+
12
+ %W(
13
+ ).each do |filename|
14
+ m.file filename, filename
15
+ end
16
+
17
+ m.template "app/rules/tweet_filter_rt.rb", "app/rules/#{rule_name}.rb"
18
+ m.template "app/views/re_rule_definitions/tweet_filter_rt/_edit.html.erb", "app/views/re_rule_definitions/#{rule_name}/_edit.html.erb"
19
+ m.template "app/views/re_rule_definitions/tweet_filter_rt/_form.html.erb", "app/views/re_rule_definitions/#{rule_name}/_form.html.erb"
20
+ m.template "app/views/re_rule_definitions/tweet_filter_rt/_help.html.erb", "app/views/re_rule_definitions/#{rule_name}/_help.html.erb"
21
+ m.template "app/views/re_rule_definitions/tweet_filter_rt/_new.html.erb", "app/views/re_rule_definitions/#{rule_name}/_new.html.erb"
22
+ m.template "spec/lib/rules/tweet_filter_rt_spec.rb", "spec/lib/rules/#{rule_name}_spec.rb"
23
+
24
+ end
25
+
26
+ def self.after_generate(rule_name ,rule_class)
27
+ end
28
+
29
+ end
@@ -0,0 +1,19 @@
1
+ directories :
2
+ - app/rules
3
+ - spec/lib/rules
4
+
5
+ templates :
6
+ replacements :
7
+ - tweet_filter_rt : rule_name
8
+ - TweetFilterRt : rule_class
9
+
10
+ directories :
11
+ - app/views/re_rule_definitions/tweet_filter_rt
12
+
13
+ files :
14
+ - app/rules/tweet_filter_rt.rb
15
+ - app/views/re_rule_definitions/tweet_filter_rt/_edit.html.erb
16
+ - app/views/re_rule_definitions/tweet_filter_rt/_form.html.erb
17
+ - app/views/re_rule_definitions/tweet_filter_rt/_help.html.erb
18
+ - app/views/re_rule_definitions/tweet_filter_rt/_new.html.erb
19
+ - spec/lib/rules/tweet_filter_rt_spec.rb
@@ -4,7 +4,7 @@ class TweetReaderManifest
4
4
  %W(
5
5
  app/rules
6
6
  app/views/re_rule_definitions/#{rule_name}
7
- lib/tasks
7
+ db/migrate
8
8
  spec/lib/rules
9
9
  ).each do |dirname|
10
10
  m.directory dirname
@@ -20,7 +20,12 @@ class TweetReaderManifest
20
20
  m.template "app/views/re_rule_definitions/tweet_reader/_form.html.erb", "app/views/re_rule_definitions/#{rule_name}/_form.html.erb"
21
21
  m.template "app/views/re_rule_definitions/tweet_reader/_help.html.erb", "app/views/re_rule_definitions/#{rule_name}/_help.html.erb"
22
22
  m.template "app/views/re_rule_definitions/tweet_reader/_new.html.erb", "app/views/re_rule_definitions/#{rule_name}/_new.html.erb"
23
+ m.template "db/migrate/20100725233933_create_re_tweet_reader_data.rb", "db/migrate/#{Time.now.strftime('%Y%m%d%H%M%S')}_create_re_#{rule_name}_data.rb"
23
24
  m.template "spec/lib/rules/tweet_reader_spec.rb", "spec/lib/rules/#{rule_name}_spec.rb"
24
25
 
25
26
  end
27
+
28
+ def self.after_generate(rule_name ,rule_class)
29
+ end
30
+
26
31
  end
@@ -1,12 +1,13 @@
1
1
  directories :
2
2
  - app/rules
3
+ - db/migrate
3
4
  - spec/lib/rules
4
- - lib/tasks
5
5
 
6
6
  templates :
7
7
  replacements :
8
8
  - tweet_reader : rule_name
9
9
  - TweetReader : rule_class
10
+ - '20100725233933' : "Time.now.strftime('%Y%m%d%H%M%S')"
10
11
 
11
12
  directories :
12
13
  - app/views/re_rule_definitions/tweet_reader
@@ -17,4 +18,5 @@ templates :
17
18
  - app/views/re_rule_definitions/tweet_reader/_form.html.erb
18
19
  - app/views/re_rule_definitions/tweet_reader/_help.html.erb
19
20
  - app/views/re_rule_definitions/tweet_reader/_new.html.erb
21
+ - db/migrate/20100725233933_create_re_tweet_reader_data.rb
20
22
  - spec/lib/rules/tweet_reader_spec.rb
@@ -0,0 +1,29 @@
1
+ class TweetWordFilterManifest
2
+ def self.populate_record(m, rule_name ,rule_class)
3
+
4
+ %W(
5
+ app/rules
6
+ app/views/re_rule_definitions/#{rule_name}
7
+ spec/lib/rules
8
+ ).each do |dirname|
9
+ m.directory dirname
10
+ end
11
+
12
+ %W(
13
+ ).each do |filename|
14
+ m.file filename, filename
15
+ end
16
+
17
+ m.template "app/rules/tweet_word_filter.rb", "app/rules/#{rule_name}.rb"
18
+ m.template "app/views/re_rule_definitions/tweet_word_filter/_edit.html.erb", "app/views/re_rule_definitions/#{rule_name}/_edit.html.erb"
19
+ m.template "app/views/re_rule_definitions/tweet_word_filter/_form.html.erb", "app/views/re_rule_definitions/#{rule_name}/_form.html.erb"
20
+ m.template "app/views/re_rule_definitions/tweet_word_filter/_help.html.erb", "app/views/re_rule_definitions/#{rule_name}/_help.html.erb"
21
+ m.template "app/views/re_rule_definitions/tweet_word_filter/_new.html.erb", "app/views/re_rule_definitions/#{rule_name}/_new.html.erb"
22
+ m.template "spec/lib/rules/tweet_word_filter_spec.rb", "spec/lib/rules/#{rule_name}_spec.rb"
23
+
24
+ end
25
+
26
+ def self.after_generate(rule_name ,rule_class)
27
+ end
28
+
29
+ end
@@ -0,0 +1,19 @@
1
+ directories :
2
+ - app/rules
3
+ - spec/lib/rules
4
+
5
+ templates :
6
+ replacements :
7
+ - tweet_word_filter : rule_name
8
+ - TweetWordFilter : rule_class
9
+
10
+ directories :
11
+ - app/views/re_rule_definitions/tweet_word_filter
12
+
13
+ files :
14
+ - app/rules/tweet_word_filter.rb
15
+ - app/views/re_rule_definitions/tweet_word_filter/_edit.html.erb
16
+ - app/views/re_rule_definitions/tweet_word_filter/_form.html.erb
17
+ - app/views/re_rule_definitions/tweet_word_filter/_help.html.erb
18
+ - app/views/re_rule_definitions/tweet_word_filter/_new.html.erb
19
+ - spec/lib/rules/tweet_word_filter_spec.rb
@@ -0,0 +1,29 @@
1
+ class TweetWordSplitterManifest
2
+ def self.populate_record(m, rule_name ,rule_class)
3
+
4
+ %W(
5
+ app/rules
6
+ app/views/re_rule_definitions/#{rule_name}
7
+ spec/lib/rules
8
+ ).each do |dirname|
9
+ m.directory dirname
10
+ end
11
+
12
+ %W(
13
+ ).each do |filename|
14
+ m.file filename, filename
15
+ end
16
+
17
+ m.template "app/rules/tweet_word_splitter.rb", "app/rules/#{rule_name}.rb"
18
+ m.template "app/views/re_rule_definitions/tweet_word_splitter/_edit.html.erb", "app/views/re_rule_definitions/#{rule_name}/_edit.html.erb"
19
+ m.template "app/views/re_rule_definitions/tweet_word_splitter/_form.html.erb", "app/views/re_rule_definitions/#{rule_name}/_form.html.erb"
20
+ m.template "app/views/re_rule_definitions/tweet_word_splitter/_help.html.erb", "app/views/re_rule_definitions/#{rule_name}/_help.html.erb"
21
+ m.template "app/views/re_rule_definitions/tweet_word_splitter/_new.html.erb", "app/views/re_rule_definitions/#{rule_name}/_new.html.erb"
22
+ m.template "spec/lib/rules/tweet_word_splitter_spec.rb", "spec/lib/rules/#{rule_name}_spec.rb"
23
+
24
+ end
25
+
26
+ def self.after_generate(rule_name ,rule_class)
27
+ end
28
+
29
+ end
@@ -0,0 +1,19 @@
1
+ directories :
2
+ - app/rules
3
+ - spec/lib/rules
4
+
5
+ templates :
6
+ replacements :
7
+ - tweet_word_splitter : rule_name
8
+ - TweetWordSplitter : rule_class
9
+
10
+ directories :
11
+ - app/views/re_rule_definitions/tweet_word_splitter
12
+
13
+ files :
14
+ - app/rules/tweet_word_splitter.rb
15
+ - app/views/re_rule_definitions/tweet_word_splitter/_edit.html.erb
16
+ - app/views/re_rule_definitions/tweet_word_splitter/_form.html.erb
17
+ - app/views/re_rule_definitions/tweet_word_splitter/_help.html.erb
18
+ - app/views/re_rule_definitions/tweet_word_splitter/_new.html.erb
19
+ - spec/lib/rules/tweet_word_splitter_spec.rb
@@ -0,0 +1,37 @@
1
+ class TweetWordWriterManifest
2
+ def self.populate_record(m, rule_name ,rule_class)
3
+
4
+ %W(
5
+ app/controllers/rules
6
+ app/rules
7
+ app/views/re_rule_definitions/#{rule_name}
8
+ db/migrate
9
+ spec/lib/rules
10
+ ).each do |dirname|
11
+ m.directory dirname
12
+ end
13
+
14
+ %W(
15
+ ).each do |filename|
16
+ m.file filename, filename
17
+ end
18
+
19
+ m.template "app/controllers/rules/tweet_word_writer_controller.rb", "app/controllers/rules/#{rule_name}_controller.rb"
20
+ m.template "app/rules/tweet_word_writer.rb", "app/rules/#{rule_name}.rb"
21
+ m.template "app/views/re_rule_definitions/tweet_word_writer/_edit.html.erb", "app/views/re_rule_definitions/#{rule_name}/_edit.html.erb"
22
+ m.template "app/views/re_rule_definitions/tweet_word_writer/_form.html.erb", "app/views/re_rule_definitions/#{rule_name}/_form.html.erb"
23
+ m.template "app/views/re_rule_definitions/tweet_word_writer/_help.html.erb", "app/views/re_rule_definitions/#{rule_name}/_help.html.erb"
24
+ m.template "app/views/re_rule_definitions/tweet_word_writer/_new.html.erb", "app/views/re_rule_definitions/#{rule_name}/_new.html.erb"
25
+ m.template "app/views/re_rule_definitions/tweet_word_writer/index.html.erb", "app/views/re_rule_definitions/#{rule_name}/index.html.erb"
26
+ m.template "db/migrate/20100727235508_create_tweet_word_writer.rb", "db/migrate/#{Time.now.strftime('%Y%m%d%H%M%S')}_create_#{rule_name}.rb"
27
+ m.template "spec/lib/rules/tweet_word_writer_spec.rb", "spec/lib/rules/#{rule_name}_spec.rb"
28
+
29
+ end
30
+
31
+ def self.after_generate(rule_name ,rule_class)
32
+ puts "ADD TO ROUTES ### map.#{rule_name} '/rules/#{rule_name}', :controller => 'Rules::#{rule_class}', :action => :index"
33
+ puts "rake db:migrate"
34
+ puts "rake spec"
35
+ end
36
+
37
+ end
@@ -0,0 +1,30 @@
1
+ directories :
2
+ - app/controllers/rules
3
+ - app/rules
4
+ - db/migrate
5
+ - spec/lib/rules
6
+
7
+ templates :
8
+ replacements :
9
+ - tweet_word_writer : rule_name
10
+ - TweetWordWriter : rule_class
11
+ - '20100727235508' : "Time.now.strftime('%Y%m%d%H%M%S')"
12
+
13
+ directories :
14
+ - app/views/re_rule_definitions/tweet_word_writer
15
+
16
+ files :
17
+ - app/controllers/rules/tweet_word_writer_controller.rb
18
+ - app/rules/tweet_word_writer.rb
19
+ - app/views/re_rule_definitions/tweet_word_writer/_edit.html.erb
20
+ - app/views/re_rule_definitions/tweet_word_writer/_form.html.erb
21
+ - app/views/re_rule_definitions/tweet_word_writer/_help.html.erb
22
+ - app/views/re_rule_definitions/tweet_word_writer/_new.html.erb
23
+ - app/views/re_rule_definitions/tweet_word_writer/index.html.erb
24
+ - db/migrate/20100727235508_create_tweet_word_writer.rb
25
+ - spec/lib/rules/tweet_word_writer_spec.rb
26
+
27
+ after_generate_message :
28
+ - "ADD TO ROUTES ### map.#{rule_name} '/rules/#{rule_name}', :controller => 'Rules::#{rule_class}', :action => :index"
29
+ - "rake db:migrate"
30
+ - "rake spec"
@@ -4,7 +4,6 @@ class WorkflowStartManifest
4
4
  %W(
5
5
  app/rules
6
6
  app/views/re_rule_definitions/#{rule_name}
7
- lib/tasks
8
7
  spec/lib/rules
9
8
  ).each do |dirname|
10
9
  m.directory dirname
@@ -23,4 +22,8 @@ class WorkflowStartManifest
23
22
  m.template "spec/lib/rules/workflow_start_spec.rb", "spec/lib/rules/#{rule_name}_spec.rb"
24
23
 
25
24
  end
25
+
26
+ def self.after_generate(rule_name ,rule_class)
27
+ end
28
+
26
29
  end
@@ -1,7 +1,6 @@
1
1
  directories :
2
2
  - app/rules
3
3
  - spec/lib/rules
4
- - lib/tasks
5
4
 
6
5
  templates :
7
6
  replacements :
@@ -4,7 +4,6 @@ class WorkflowStopManifest
4
4
  %W(
5
5
  app/rules
6
6
  app/views/re_rule_definitions/#{rule_name}
7
- lib/tasks
8
7
  spec/lib/rules
9
8
  ).each do |dirname|
10
9
  m.directory dirname
@@ -23,4 +22,9 @@ class WorkflowStopManifest
23
22
  m.template "spec/lib/rules/workflow_stop_spec.rb", "spec/lib/rules/#{rule_name}_spec.rb"
24
23
 
25
24
  end
25
+
26
+ def self.after_generate(rule_name ,rule_class)
27
+ puts "rake spec"
28
+ end
29
+
26
30
  end
@@ -1,8 +1,7 @@
1
1
  directories :
2
2
  - app/rules
3
3
  - spec/lib/rules
4
- - lib/tasks
5
-
4
+
6
5
  templates :
7
6
  replacements :
8
7
  - workflow_stop : rule_name
@@ -18,3 +17,5 @@ templates :
18
17
  - app/views/re_rule_definitions/workflow_stop/_help.html.erb
19
18
  - app/views/re_rule_definitions/workflow_stop/_new.html.erb
20
19
  - spec/lib/rules/workflow_stop_spec.rb
20
+
21
+ after_generate_message : "rake spec"
@@ -25,14 +25,16 @@ class RulesEngineTemplatesGenerator < Rails::Generator::Base
25
25
  puts "run >script/generate rules_engine_templates #{@rule_type} [rule name]"
26
26
  puts ''
27
27
  else
28
- puts 'run >rake spec to test the new rule'
28
+ puts ''
29
+ klass = Kernel.const_get("#{@rule_type.classify}Manifest")
30
+ klass.after_generate(@rule_name ,@rule_class)
29
31
  puts ''
30
32
  end
31
33
  end
32
34
 
33
35
  def manifest
34
36
  record do |m|
35
- unless @rule_type.nil?
37
+ unless @rule_type.nil? || @rule_name.nil?
36
38
  klass = Kernel.const_get("#{@rule_type.classify}Manifest")
37
39
  klass.populate_record(m, @rule_name ,@rule_class)
38
40
  end
@@ -0,0 +1,21 @@
1
+ # map.<%=rule_name%> '/rules/<%=rule_name%>', :controller => "Rules::<%=rule_class%>", :action => :index
2
+ module Rules
3
+ class <%=rule_class%>Controller < ApplicationController
4
+ helper :rules_engine
5
+ layout 'rules_engine'
6
+
7
+ # before_filter :login_required
8
+ before_filter :rules_engine_reader_access_required, :only => [:index]
9
+
10
+ def index
11
+ time_code = Time.now.strftime("%Y")
12
+ @re_tweet_words = Re<%=rule_class%>Count.find(:all, :conditions => ["time_code = ?", time_code],
13
+ :order => "word_count DESC",
14
+ :include => :re_<%=rule_name%>,
15
+ :limit => 100)
16
+
17
+ # paginate(:page => params[:page] || 1, :per_page => 5)
18
+ render :template => '/re_rule_definitions/<%=rule_name%>/index'
19
+ end
20
+ end
21
+ end
@@ -41,7 +41,10 @@ module RulesEngine
41
41
  end
42
42
 
43
43
  def expected_outcomes
44
- [{:outcome => RulesEngine::Rule::Outcome::NEXT}, {:outcome => RulesEngine::Rule::Outcome::STOP_FAILURE}]
44
+ [
45
+ {:outcome => RulesEngine::Rule::Outcome::NEXT},
46
+ {:outcome => RulesEngine::Rule::Outcome::STOP_FAILURE, :title => "Stop if plan fails"}
47
+ ]
45
48
  end
46
49
 
47
50
  ##################################################################
@@ -3,7 +3,14 @@ module RulesEngine
3
3
  class <%=rule_class%> < RulesEngine::Rule::Definition
4
4
 
5
5
  attr_reader :words
6
+ attr_reader :match_type
6
7
 
8
+ TWEET_MATCH_ANY = 0 unless defined? TWEET_MATCH_ANY
9
+ TWEET_MATCH_TWEET = 1 unless defined? TWEET_MATCH_TWEET
10
+ TWEET_MATCH_WORD = 2 unless defined? TWEET_MATCH_WORD
11
+ TWEET_MATCH_BEGIN_WITH = 3 unless defined? TWEET_MATCH_BEGIN_WITH
12
+ TWEET_MATCH_END_WITH = 4 unless defined? TWEET_MATCH_END_WITH
13
+
7
14
  ##################################################################
8
15
  # class options
9
16
  self.options =
@@ -21,8 +28,10 @@ module RulesEngine
21
28
  if data.nil?
22
29
  @title = nil
23
30
  @words = nil
31
+ @match_type = RulesEngine::Rule::<%=rule_class%>::TWEET_MATCH_ANY
24
32
  else
25
- @title, @words = ActiveSupport::JSON.decode(data)
33
+ @title, @words, tmp_match_type = ActiveSupport::JSON.decode(data)
34
+ @match_type = tmp_match_type.to_i
26
35
  end
27
36
  end
28
37
 
@@ -37,11 +46,14 @@ module RulesEngine
37
46
  end
38
47
 
39
48
  def data
40
- [title, words].to_json
49
+ [title, words, match_type.to_s].to_json
41
50
  end
42
51
 
43
52
  def expected_outcomes
44
- [{:outcome => RulesEngine::Rule::Outcome::NEXT}, {:outcome => RulesEngine::Rule::Outcome::STOP_SUCCESS}]
53
+ [
54
+ {:outcome => RulesEngine::Rule::Outcome::NEXT},
55
+ {:outcome => RulesEngine::Rule::Outcome::STOP_SUCCESS, :title => "Stop match found"}
56
+ ]
45
57
  end
46
58
 
47
59
  ##################################################################
@@ -59,6 +71,8 @@ module RulesEngine
59
71
  @words << word_hash[:word].downcase unless word_hash[:word].blank? || word_hash[:_delete] == '1'
60
72
  end
61
73
  end
74
+
75
+ @match_type = param_hash[:match_type].to_i
62
76
  end
63
77
 
64
78
  ##################################################################
@@ -87,15 +101,27 @@ module RulesEngine
87
101
  # it gets the data parameter :tweet
88
102
  # it sets the data parameter :match
89
103
  def process(process_id, data)
90
- tweet = data[:tweet] || data["tweet"]
91
- if tweet.blank?
104
+ tweet = data[:tweet]
105
+ if tweet.nil? || tweet.blank?
92
106
  return RulesEngine::Rule::Outcome.new(RulesEngine::Rule::Outcome::NEXT)
93
107
  end
94
-
108
+
95
109
  words.each do |word|
96
- if /#{word}/i =~ tweet
110
+ filter = case match_type
111
+ when RulesEngine::Rule::<%=rule_class%>::TWEET_MATCH_ANY
112
+ /#{word}/i
113
+ when RulesEngine::Rule::<%=rule_class%>::TWEET_MATCH_TWEET
114
+ /^#{word}$/i
115
+ when RulesEngine::Rule::<%=rule_class%>::TWEET_MATCH_WORD
116
+ /\b#{word}\b/i
117
+ when RulesEngine::Rule::<%=rule_class%>::TWEET_MATCH_BEGIN_WITH
118
+ /^#{word}/i
119
+ when RulesEngine::Rule::<%=rule_class%>::TWEET_MATCH_END_WITH
120
+ /#{word}$/i
121
+ end
122
+
123
+ if filter =~ tweet
97
124
  RulesEngine::Process.auditor.audit(process_id, "Found #{word}", RulesEngine::Process::AUDIT_INFO)
98
- data[:match] = word
99
125
  return RulesEngine::Rule::Outcome.new(RulesEngine::Rule::Outcome::STOP_SUCCESS)
100
126
  end
101
127
  end
@@ -0,0 +1,93 @@
1
+ module RulesEngine
2
+ module Rule
3
+ class <%=rule_class%> < RulesEngine::Rule::Definition
4
+
5
+ ##################################################################
6
+ # class options
7
+ self.options =
8
+ {
9
+ :group => 'Twitter',
10
+ :display_name => 'Twitter Filter Retweets',
11
+ :help_partial => '/re_rule_definitions/<%=rule_name%>/help',
12
+ :new_partial => '/re_rule_definitions/<%=rule_name%>/new',
13
+ :edit_partial => '/re_rule_definitions/<%=rule_name%>/edit'
14
+ }
15
+
16
+ ##################################################################
17
+ # set the rule data
18
+ def data= data
19
+ if data.nil?
20
+ @title = nil
21
+ else
22
+ @title, ignore = ActiveSupport::JSON.decode(data)
23
+ end
24
+ end
25
+
26
+ ##################################################################
27
+ # get the rule attributes
28
+ def title
29
+ @title
30
+ end
31
+
32
+ def summary
33
+ "Filter out retweets"
34
+ end
35
+
36
+ def data
37
+ [title].to_json
38
+ end
39
+
40
+ def expected_outcomes
41
+ [
42
+ {:outcome => RulesEngine::Rule::Outcome::NEXT},
43
+ {:outcome => RulesEngine::Rule::Outcome::STOP_SUCCESS, :title => "Stop if retweet found"}
44
+ ]
45
+ end
46
+
47
+ ##################################################################
48
+ # set the rule attributes
49
+ def attributes=(params)
50
+ param_hash = params.symbolize_keys
51
+
52
+ @title = param_hash[:<%=rule_name%>_title]
53
+ end
54
+
55
+ ##################################################################
56
+ # validation and errors
57
+ def valid?
58
+ @errors = {}
59
+ @errors[:<%=rule_name%>_title] = "Title required" if title.blank?
60
+ return @errors.empty?
61
+ end
62
+
63
+ ##################################################################
64
+ # callbacks when the rule is added and removed from a workflow
65
+ def before_create()
66
+ end
67
+
68
+ def before_update()
69
+ end
70
+
71
+ def before_destroy()
72
+ end
73
+
74
+ ##################################################################
75
+ # execute the rule
76
+ # if a match is found procees to the expected outcome
77
+ # it gets the data parameter :tweet
78
+ def process(process_id, data)
79
+ tweet = data[:tweet] || data["tweet"]
80
+ if tweet.blank?
81
+ return RulesEngine::Rule::Outcome.new(RulesEngine::Rule::Outcome::NEXT)
82
+ end
83
+
84
+ if /\bRT\b/ =~ tweet
85
+ RulesEngine::Process.auditor.audit(process_id, "Found retweet", RulesEngine::Process::AUDIT_INFO)
86
+ return RulesEngine::Rule::Outcome.new(RulesEngine::Rule::Outcome::STOP_SUCCESS)
87
+ end
88
+
89
+ RulesEngine::Rule::Outcome.new(RulesEngine::Rule::Outcome::NEXT)
90
+ end
91
+ end
92
+ end
93
+ end