rails_artifactor 0.5.0 → 0.5.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (31) hide show
  1. data/VERSION +1 -1
  2. data/lib/rails_artifactor/artifact/asset_artifact.rb +120 -0
  3. data/lib/rails_artifactor/artifact/base.rb +9 -9
  4. data/lib/rails_artifactor/artifact/crud.rb +6 -6
  5. data/lib/rails_artifactor/artifact/crud/create.rb +2 -2
  6. data/lib/rails_artifactor/artifact/crud/delete.rb +13 -13
  7. data/lib/rails_artifactor/artifact/crud/update.rb +5 -5
  8. data/lib/rails_artifactor/artifact/file_name/artifacts.rb +4 -4
  9. data/lib/rails_artifactor/artifact/file_name/asset.rb +176 -0
  10. data/lib/rails_artifactor/artifact/file_name/view.rb +42 -42
  11. data/lib/rails_artifactor/artifact/markers.rb +24 -25
  12. data/lib/rails_artifactor/artifact/orm.rb +5 -5
  13. data/lib/rails_artifactor/artifact/orm/active_record.rb +2 -2
  14. data/lib/rails_artifactor/artifact/orm/data_mapper.rb +2 -2
  15. data/lib/rails_artifactor/artifact/orm/mongo_mapper.rb +4 -4
  16. data/lib/rails_artifactor/artifact/orm/mongoid.rb +2 -2
  17. data/lib/rails_artifactor/artifact/orm/none.rb +1 -1
  18. data/lib/rails_artifactor/artifact/view_artifact.rb +11 -11
  19. data/lib/rails_artifactor/base/crud/create.rb +14 -14
  20. data/lib/rails_artifactor/base/crud/delete.rb +10 -10
  21. data/lib/rails_artifactor/base/crud/update.rb +21 -21
  22. data/lib/rails_artifactor/base/file_name.rb +12 -12
  23. data/lib/rails_artifactor/template_language/base.rb +3 -3
  24. data/lib/rails_artifactor/template_language/erb.rb +4 -4
  25. data/lib/rails_artifactor/template_language/haml.rb +5 -6
  26. data/lib/rails_artifactor/template_language/slim.rb +5 -5
  27. data/rails_artifactor.gemspec +13 -10
  28. data/spec/rails_artifactor/artifact/crud/asset_spec.rb +56 -0
  29. data/spec/rails_artifactor/artifact/crud/view_controller_action_spec.rb +12 -12
  30. data/spec/rails_artifactor/artifact/crud/view_file_spec.rb +6 -6
  31. metadata +17 -14
@@ -1,10 +1,10 @@
1
1
  module RailsAssist::Artifact
2
- module View
2
+ module View
3
3
  module FileName
4
4
  DIR = RailsAssist::Artifact::Directory
5
5
 
6
6
  module Helper
7
- def default_template_lang
7
+ def default_template_lang
8
8
  get_type :erb
9
9
  end
10
10
 
@@ -17,17 +17,17 @@ module RailsAssist::Artifact
17
17
  else
18
18
  type
19
19
  end
20
- end
20
+ end
21
21
 
22
22
  def get_view_type type
23
23
  get_type(type.empty? ? default_template_lang : type)
24
- end
25
-
26
- def filename_type str
24
+ end
25
+
26
+ def filename_type str
27
27
  str.split('.')[1..-1].join('.')
28
28
  end
29
-
30
- def filename_name str
29
+
30
+ def filename_name str
31
31
  str.gsub /\.(.*)/, ''
32
32
  end
33
33
  end
@@ -39,19 +39,19 @@ module RailsAssist::Artifact
39
39
  views_path = options[:views_path]
40
40
  views_path ||= File.join(root_path, 'app/views') if root_path
41
41
  File.expand_path File.join(views_path || DIR.view_dirpath, folder.to_s, "#{action}.#{type}")
42
- end
43
-
42
+ end
43
+
44
44
  def get_view_args *args
45
45
  args = args.flatten
46
46
  raise ArgumentError, "view_file_name must be called with one or more arguments to return a view file" if args.size == 0
47
47
  case args.size
48
- when 1
48
+ when 1
49
49
  SingleArg.get_view_args *args
50
50
  else
51
- TwoArgs.get_view_args *args
52
- end
51
+ TwoArgs.get_view_args *args
52
+ end
53
53
  end
54
- end
54
+ end
55
55
 
56
56
  module SingleArg
57
57
  def self.get_view_args *args
@@ -59,20 +59,20 @@ module RailsAssist::Artifact
59
59
  arg = args.first
60
60
  case arg
61
61
  when Hash
62
- # view_file(:person => :show).should == /views\/person\/show\.html\.erb/
63
- return HashArg.get_view_args arg if arg.keys.size == 1
64
- # view_file(:folder => 'person', :type => :show).should == /views\/person\/show\.html\.erb/
62
+ # view_file(:person => :show).should == /views\/person\/show\.html\.erb/
63
+ return HashArg.get_view_args arg if arg.keys.size == 1
64
+ # view_file(:folder => 'person', :type => :show).should == /views\/person\/show\.html\.erb/
65
65
  HashArgs.get_view_args *args
66
- when Symbol, String
66
+ when Symbol, String
67
67
  TwoArgs.get_view_args *args
68
- end
68
+ end
69
69
  end
70
-
70
+
71
71
  module HashArg
72
72
  extend RailsAssist::Artifact::View::FileName::Helper
73
-
74
- # view_file(:person => :show).should == /views\/person\/show\.html\.erb/
75
- def self.get_view_args one_hash
73
+
74
+ # view_file(:person => :show).should == /views\/person\/show\.html\.erb/
75
+ def self.get_view_args one_hash
76
76
  folder = one_hash.keys.first.to_s
77
77
  filename = one_hash.values.first.to_s
78
78
  action = filename_name filename
@@ -85,18 +85,18 @@ module RailsAssist::Artifact
85
85
  extend RailsAssist::Artifact::View::FileName::Helper
86
86
 
87
87
  DIR = RailsAssist::Artifact::Directory
88
-
88
+
89
89
  # view_file(:folder => 'person', :action => :show, :type => :erb).should == /views\/person\/show\.html\.erb/
90
90
  def self.get_view_args hash
91
91
  try_folder = hash.keys.first
92
92
  try_view_folder = File.expand_path(File.join(DIR.view_dir, try_folder.to_s))
93
93
  if File.directory? try_view_folder
94
- folder = try_folder
94
+ folder = try_folder
95
95
  action = hash.values.first
96
96
  else
97
- folder = hash[:folder]
98
- action = hash[:action]
99
- end
97
+ folder = hash[:folder]
98
+ action = hash[:action] || hash[:name]
99
+ end
100
100
  type = get_view_type(hash[:type])
101
101
  [folder, action, type]
102
102
  end
@@ -105,8 +105,8 @@ module RailsAssist::Artifact
105
105
  module StringArg
106
106
  extend RailsAssist::Artifact::View::FileName::Helper
107
107
 
108
- # view_file('person/show').should == /views\/person\/show\.html\.erb/
109
- def self.get_view_args string
108
+ # view_file('person/show').should == /views\/person\/show\.html\.erb/
109
+ def self.get_view_args string
110
110
  path_lvs = string.split('/')
111
111
  raise ArgumentError, "view must be in a subfolder #{args}" if path_lvs.size < 2
112
112
  folder = path_lvs[0..-2].join('/')
@@ -118,7 +118,7 @@ module RailsAssist::Artifact
118
118
  end
119
119
  end
120
120
 
121
- module TwoArgs
121
+ module TwoArgs
122
122
  def self.get_view_args *args
123
123
  args = args.flatten
124
124
  arg2 = args[1]
@@ -130,27 +130,27 @@ module RailsAssist::Artifact
130
130
  when Hash
131
131
  # view_file(:show, :folder => 'person', :type => :erb).should == /views\/person\/show\.html\.erb/
132
132
  ActionAndHash.get_view_args args
133
- end
133
+ end
134
134
  end
135
-
135
+
136
136
  module TwoLabels
137
137
  extend RailsAssist::Artifact::View::FileName::Helper
138
138
 
139
139
  # view_file(:person, :show).should == /views\/person\/show\.html\.erb/
140
140
  # view_file('person/admin', :show, :type => :erb).should == /views\/person\/show\.html\.erb/
141
141
  def self.get_view_args *args
142
- args = args.flatten
142
+ args = args.flatten
143
143
  folder = args.first.to_s
144
144
  action = args[1].to_s
145
- hash = args[2] if args.size > 2
145
+ hash = args[2] if args.size > 2
146
146
  type = get_view_type(hash ? hash[:type] : nil)
147
147
  [folder, action, type]
148
- end
148
+ end
149
149
  end
150
150
 
151
151
  module ActionAndHash
152
152
  extend RailsAssist::Artifact::View::FileName::Helper
153
-
153
+
154
154
  # view_file(:show, :folder => 'person', :type => :erb).should == /views\/person\/show\.html\.erb/
155
155
  def self.get_view_args *args
156
156
  args = args.flatten
@@ -159,13 +159,13 @@ module RailsAssist::Artifact
159
159
  hash = args.last
160
160
  folder = hash[:folder]
161
161
  type = get_view_type(hash[:type])
162
-
162
+
163
163
  [folder, action, type]
164
- end
165
- end
164
+ end
165
+ end
166
166
  end
167
-
167
+
168
168
  include FileName
169
169
  extend FileName
170
170
  end
171
- end
171
+ end
@@ -1,21 +1,21 @@
1
1
  module RailsAssist::Artifact
2
2
  module Marker
3
3
  def marker name, type, options=nil
4
- method = "#{type}_marker"
4
+ method = "#{type}_marker"
5
5
  raise "No such marker method in this context: #{self}, ##{method}" if !respond_to? method
6
- send method, name, options
6
+ send method, name, options
7
7
  end
8
8
  end
9
-
9
+
10
10
  module Controller
11
11
  def controller_marker name, options=nil
12
12
  "#{name.to_s.camelize}Controller < ActionController::Base"
13
13
  end
14
-
14
+
15
15
  extend self
16
16
  end
17
17
 
18
- module Helper
18
+ module Helper
19
19
  def helper_marker name, options=nil
20
20
  "#{name.to_s.camelize}Helper"
21
21
  end
@@ -26,48 +26,47 @@ module RailsAssist::Artifact
26
26
  module Permit
27
27
  def permit_marker name, options=nil
28
28
  "#{name.to_s.camelize}Permit < Permit::Base"
29
- end
30
-
31
- extend self
29
+ end
30
+
31
+ extend self
32
32
  end
33
-
33
+
34
34
  module Mailer
35
35
  def mailer_marker name, options=nil
36
36
  "#{name.to_s.camelize}Mailer < ActionMailer::Base"
37
37
  end
38
-
39
- extend self
40
- end
38
+
39
+ extend self
40
+ end
41
41
 
42
42
  module Observer
43
43
  def observer_marker name, options=nil
44
44
  "#{name.to_s.camelize}Observer < ActiveRecord::Observer"
45
45
  end
46
-
46
+
47
47
  extend self
48
48
  end
49
49
 
50
50
  module Migration
51
51
  def migration_marker name, options=nil
52
52
  "#{name.to_s.camelize} < ActiveRecord::Migration"
53
- end
54
-
53
+ end
54
+
55
55
  extend self
56
56
  end
57
-
58
- module Model
59
- include RailsAssist::BaseHelper
60
-
57
+
58
+ module Model
59
+ include RailsAssist::BaseHelper
60
+
61
61
  def model_marker name, options={}
62
62
  return send :orm_marker_name, name, options if respond_to?(:orm_marker_name)
63
- name.to_s.camelize
63
+ name.to_s.camelize
64
64
  end
65
-
65
+
66
66
  def orm_notify
67
67
  ". You must specify an ORM with the macro use_orm, f.ex -- use_orm :active_record"
68
- end
69
-
70
- extend self
68
+ end
69
+
70
+ extend self
71
71
  end
72
-
73
72
  end
@@ -42,14 +42,14 @@ end}
42
42
  %Q{#{clazz name} < #{module_name}
43
43
  #{yield if block}
44
44
  end}
45
- end
46
-
45
+ end
46
+
47
47
  def field name, type = nil
48
48
  return "#{field_name} :#{name}, #{type}" if type
49
49
  "#{field_name} :#{name}"
50
- end
50
+ end
51
51
  end
52
52
  end
53
53
  end
54
-
55
- require_all File.dirname(__FILE__) + '/orm'
54
+
55
+ require_all File.dirname(__FILE__) + '/orm'
@@ -6,9 +6,9 @@ module RailsAssist::Orm
6
6
  'ActiveRecord::Base'
7
7
  end
8
8
 
9
- def new_model_content name, options={}, &block
9
+ def new_model_content name, options={}, &block
10
10
  content = block ? yield : options[:content]
11
11
  file_w_inherit(name, orm_marker_name(name, options)) { content }
12
12
  end
13
13
  end
14
- end
14
+ end
@@ -10,7 +10,7 @@ module RailsAssist::Orm
10
10
  "#{orm_name}::Resource"
11
11
  end
12
12
 
13
- def new_model_content name, options={}, &block
13
+ def new_model_content name, options={}, &block
14
14
  content = block ? yield : options[:content]
15
15
  file_w_include(name, orm_marker_name(name, options)) { content }
16
16
  end
@@ -19,4 +19,4 @@ module RailsAssist::Orm
19
19
  'property'
20
20
  end
21
21
  end
22
- end
22
+ end
@@ -4,9 +4,9 @@ module RailsAssist::Orm
4
4
 
5
5
  def orm_name
6
6
  'MongoMapper'
7
- end
8
-
9
- def new_model_content name, options={}, &block
7
+ end
8
+
9
+ def new_model_content name, options={}, &block
10
10
  content = block ? yield : options[:content]
11
11
  file_w_include(name, orm_marker_name(name, options)) { content }
12
12
  end
@@ -15,4 +15,4 @@ module RailsAssist::Orm
15
15
  'key'
16
16
  end
17
17
  end
18
- end
18
+ end
@@ -10,7 +10,7 @@ module RailsAssist::Orm
10
10
  'field'
11
11
  end
12
12
 
13
- def new_model_content name, options={}, &block
13
+ def new_model_content name, options={}, &block
14
14
  content = block ? yield : options[:content]
15
15
  file_w_include(name, orm_marker_name(name, options)) { content }
16
16
  end
@@ -20,4 +20,4 @@ module RailsAssist::Orm
20
20
  "#{field_name} :#{name}"
21
21
  end
22
22
  end
23
- end
23
+ end
@@ -8,7 +8,7 @@ module RailsAssist::Orm
8
8
  name.to_s.camelize
9
9
  end
10
10
 
11
- def new_model_content name, options={}, &block
11
+ def new_model_content name, options={}, &block
12
12
  content = block ? yield : options[:content]
13
13
  simple_file(name, orm_marker_name(name, options)) { content }
14
14
  end
@@ -19,25 +19,25 @@ module RailsAssist::Artifact
19
19
  def view_file *args
20
20
  view_file_name(args)
21
21
  end
22
-
22
+
23
23
  # CREATE
24
24
  def create_view *args, &block
25
- file_name = view_file_name(args)
25
+ file_name = view_file_name(args)
26
26
  dir = File.dirname(file_name)
27
27
  FileUtils.mkdir_p dir if !File.directory?(dir)
28
28
 
29
29
  content = get_view_content(args) || yield if block
30
-
30
+
31
31
  # abort if no content given
32
32
  debug "Warning: Content must be passed in either as a :content hash or a block" if !content
33
33
  return nil if !content
34
34
 
35
35
  debug "Writing view file: #{file_name}"
36
36
  # write file content of view
37
- File.open(file_name, 'w') do |f|
38
- f.puts content
37
+ File.open(file_name, 'w') do |f|
38
+ f.puts content
39
39
  end
40
- end
40
+ end
41
41
 
42
42
  # READ
43
43
  def read_view *args, &block
@@ -53,7 +53,7 @@ module RailsAssist::Artifact
53
53
  nil
54
54
  end
55
55
  end
56
-
56
+
57
57
  # UPDATE
58
58
  def insert_into_view *args, &block
59
59
  begin
@@ -78,7 +78,7 @@ module RailsAssist::Artifact
78
78
  def remove_views *args
79
79
  options = last_option args
80
80
  raise ArgumentError, "Missing :folder option in the last argument which must be a Hash" if !options && !options[:folder]
81
- args.to_symbols.each{|name| remove_view name, options}
81
+ args.to_symbols.each{|name| remove_view name, options}
82
82
  end
83
83
 
84
84
  def get_view_content args
@@ -87,8 +87,8 @@ module RailsAssist::Artifact
87
87
  when Hash
88
88
  args.first[:content]
89
89
  end
90
- end
90
+ end
91
91
 
92
- multi_aliases_for :view
92
+ multi_aliases_for :view
93
93
  end
94
- end
94
+ end
@@ -1,17 +1,17 @@
1
1
  require 'rails_artifactor/ruby_mutator'
2
2
 
3
3
  module RailsAssist::Artifact::CRUD
4
- module Create
4
+ module Create
5
5
  include RailsAssist::Artifact::Marker
6
-
6
+
7
7
  def create_artifact name, options={}, &block
8
8
  type = get_type(options)
9
9
  file = make_file_name(name, type)
10
10
  return nil if File.exist?(file) && options[:no_overwrite]
11
11
 
12
- create_artifact_dir(file)
12
+ create_artifact_dir(file)
13
13
  content = get_content(name, type, options, &block)
14
-
14
+
15
15
  superclass = options[:superclass] if options[:superclass]
16
16
 
17
17
  if superclass
@@ -19,14 +19,14 @@ module RailsAssist::Artifact::CRUD
19
19
  content.remove_superclass
20
20
  content.inherit_from "#{superclass}_permit"
21
21
  end
22
-
22
+
23
23
  return if content.blank?
24
24
 
25
- File.overwrite file, content
25
+ File.overwrite file, content
26
26
  end
27
27
 
28
28
  protected
29
-
29
+
30
30
  def new_artifact_content name, options = {}, &block
31
31
  type = get_type(options)
32
32
  content = extract_content type, options, &block
@@ -36,13 +36,13 @@ end}
36
36
  end
37
37
 
38
38
  def create_artifact_dir file
39
- # make dir
39
+ # make dir
40
40
  dir = File.dirname(file)
41
41
  FileUtils.mkdir_p dir if !File.directory?(dir)
42
42
  end
43
43
 
44
- def content_method type
45
- method = :"new_#{type}_content"
44
+ def content_method type
45
+ method = :"new_#{type}_content"
46
46
  raise "Content method #{content_method} not found #{orm_notify}" if !respond_to?(method)
47
47
  method
48
48
  end
@@ -50,13 +50,13 @@ end}
50
50
  def extract_content type, options, &block
51
51
  content = block ? yield : options[:content]
52
52
  content = type == :model ? options.merge(:content => content) : content
53
- end
53
+ end
54
54
 
55
55
  def get_content name, type, options = {}, &block
56
56
  content = extract_content type, options, &block
57
57
  method = content_method(type)
58
58
  options[:content] = content
59
59
  send method, name, options, &block
60
- end
61
- end
62
- end
60
+ end
61
+ end
62
+ end