rules_engine_templates 0.0.3 → 0.0.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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