rails_artifactor 0.5.0 → 0.5.1

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 (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