@@ -44,46 +44,6 @@ module AnnotateModels
44
44
SERIALIZERS_TEST_DIR = File . join ( "test" , "serializers" )
45
45
SERIALIZERS_SPEC_DIR = File . join ( "spec" , "serializers" )
46
46
47
-
48
- TEST_PATTERNS = [
49
- File . join ( UNIT_TEST_DIR , "%MODEL_NAME%_test.rb" ) ,
50
- File . join ( MODEL_TEST_DIR , "%MODEL_NAME%_test.rb" ) ,
51
- File . join ( SPEC_MODEL_DIR , "%MODEL_NAME%_spec.rb" ) ,
52
- ]
53
-
54
- FIXTURE_PATTERNS = [
55
- File . join ( FIXTURE_TEST_DIR , "%TABLE_NAME%.yml" ) ,
56
- File . join ( FIXTURE_SPEC_DIR , "%TABLE_NAME%.yml" ) ,
57
- File . join ( FIXTURE_TEST_DIR , "%PLURALIZED_MODEL_NAME%.yml" ) ,
58
- File . join ( FIXTURE_SPEC_DIR , "%PLURALIZED_MODEL_NAME%.yml" ) ,
59
- ]
60
-
61
- SCAFFOLD_PATTERNS = [
62
- File . join ( CONTROLLER_TEST_DIR , "%PLURALIZED_MODEL_NAME%_controller_test.rb" ) ,
63
- File . join ( CONTROLLER_SPEC_DIR , "%PLURALIZED_MODEL_NAME%_controller_spec.rb" ) ,
64
- File . join ( REQUEST_SPEC_DIR , "%PLURALIZED_MODEL_NAME%_spec.rb" ) ,
65
- File . join ( ROUTING_SPEC_DIR , "%PLURALIZED_MODEL_NAME%_routing_spec.rb" ) ,
66
- ]
67
-
68
- FACTORY_PATTERNS = [
69
- File . join ( EXEMPLARS_TEST_DIR , "%MODEL_NAME%_exemplar.rb" ) ,
70
- File . join ( EXEMPLARS_SPEC_DIR , "%MODEL_NAME%_exemplar.rb" ) ,
71
- File . join ( BLUEPRINTS_TEST_DIR , "%MODEL_NAME%_blueprint.rb" ) ,
72
- File . join ( BLUEPRINTS_SPEC_DIR , "%MODEL_NAME%_blueprint.rb" ) ,
73
- File . join ( FACTORY_GIRL_TEST_DIR , "%MODEL_NAME%_factory.rb" ) , # (old style)
74
- File . join ( FACTORY_GIRL_SPEC_DIR , "%MODEL_NAME%_factory.rb" ) , # (old style)
75
- File . join ( FACTORY_GIRL_TEST_DIR , "%TABLE_NAME%.rb" ) , # (new style)
76
- File . join ( FACTORY_GIRL_SPEC_DIR , "%TABLE_NAME%.rb" ) , # (new style)
77
- File . join ( FABRICATORS_TEST_DIR , "%MODEL_NAME%_fabricator.rb" ) ,
78
- File . join ( FABRICATORS_SPEC_DIR , "%MODEL_NAME%_fabricator.rb" ) ,
79
- ]
80
-
81
- SERIALIZER_PATTERNS = [
82
- File . join ( SERIALIZERS_DIR , "%MODEL_NAME%_serializer.rb" ) ,
83
- File . join ( SERIALIZERS_TEST_DIR , "%MODEL_NAME%_serializer_spec.rb" ) ,
84
- File . join ( SERIALIZERS_SPEC_DIR , "%MODEL_NAME%_serializer_spec.rb" )
85
- ]
86
-
87
47
# Don't show limit (#) on these column types
88
48
# Example: show "integer" instead of "integer(4)"
89
49
NO_LIMIT_COL_TYPES = [ "integer" , "boolean" ]
@@ -97,6 +57,64 @@ def model_dir=(dir)
97
57
@model_dir = dir
98
58
end
99
59
60
+ def root_dir
61
+ @root_dir . is_a? ( Array ) ? @root_dir : [ @root_dir || "/" ]
62
+ end
63
+
64
+ def root_dir = ( dir )
65
+ @root_dir = dir
66
+ end
67
+
68
+ def get_patterns ( pattern_types )
69
+ current_patterns = [ ]
70
+ root_dir . each do |root_directory |
71
+ Array ( pattern_types ) . each do |pattern_type |
72
+ current_patterns += case pattern_type
73
+ when 'test'
74
+ [
75
+ File . join ( root_directory , UNIT_TEST_DIR , "%MODEL_NAME%_test.rb" ) ,
76
+ File . join ( root_directory , MODEL_TEST_DIR , "%MODEL_NAME%_test.rb" ) ,
77
+ File . join ( root_directory , SPEC_MODEL_DIR , "%MODEL_NAME%_spec.rb" ) ,
78
+ ]
79
+ when 'fixture'
80
+ [
81
+ File . join ( root_directory , FIXTURE_TEST_DIR , "%TABLE_NAME%.yml" ) ,
82
+ File . join ( root_directory , FIXTURE_SPEC_DIR , "%TABLE_NAME%.yml" ) ,
83
+ File . join ( root_directory , FIXTURE_TEST_DIR , "%PLURALIZED_MODEL_NAME%.yml" ) ,
84
+ File . join ( root_directory , FIXTURE_SPEC_DIR , "%PLURALIZED_MODEL_NAME%.yml" ) ,
85
+ ]
86
+ when 'scaffold'
87
+ [
88
+ File . join ( root_directory , CONTROLLER_TEST_DIR , "%PLURALIZED_MODEL_NAME%_controller_test.rb" ) ,
89
+ File . join ( root_directory , CONTROLLER_SPEC_DIR , "%PLURALIZED_MODEL_NAME%_controller_spec.rb" ) ,
90
+ File . join ( root_directory , REQUEST_SPEC_DIR , "%PLURALIZED_MODEL_NAME%_spec.rb" ) ,
91
+ File . join ( root_directory , ROUTING_SPEC_DIR , "%PLURALIZED_MODEL_NAME%_routing_spec.rb" ) ,
92
+ ]
93
+ when 'factory'
94
+ [
95
+ File . join ( root_directory , EXEMPLARS_TEST_DIR , "%MODEL_NAME%_exemplar.rb" ) ,
96
+ File . join ( root_directory , EXEMPLARS_SPEC_DIR , "%MODEL_NAME%_exemplar.rb" ) ,
97
+ File . join ( root_directory , BLUEPRINTS_TEST_DIR , "%MODEL_NAME%_blueprint.rb" ) ,
98
+ File . join ( root_directory , BLUEPRINTS_SPEC_DIR , "%MODEL_NAME%_blueprint.rb" ) ,
99
+ File . join ( root_directory , FACTORY_GIRL_TEST_DIR , "%MODEL_NAME%_factory.rb" ) , # (old style)
100
+ File . join ( root_directory , FACTORY_GIRL_SPEC_DIR , "%MODEL_NAME%_factory.rb" ) , # (old style)
101
+ File . join ( root_directory , FACTORY_GIRL_TEST_DIR , "%TABLE_NAME%.rb" ) , # (new style)
102
+ File . join ( root_directory , FACTORY_GIRL_SPEC_DIR , "%TABLE_NAME%.rb" ) , # (new style)
103
+ File . join ( root_directory , FABRICATORS_TEST_DIR , "%MODEL_NAME%_fabricator.rb" ) ,
104
+ File . join ( root_directory , FABRICATORS_SPEC_DIR , "%MODEL_NAME%_fabricator.rb" ) ,
105
+ ]
106
+ when 'serializer'
107
+ [
108
+ File . join ( root_directory , SERIALIZERS_DIR , "%MODEL_NAME%_serializer.rb" ) ,
109
+ File . join ( root_directory , SERIALIZERS_TEST_DIR , "%MODEL_NAME%_serializer_spec.rb" ) ,
110
+ File . join ( root_directory , SERIALIZERS_SPEC_DIR , "%MODEL_NAME%_serializer_spec.rb" )
111
+ ]
112
+ end
113
+ end
114
+ end
115
+ return current_patterns . map { |p | p . sub ( /^[\/ ]*/ , '' ) }
116
+ end
117
+
100
118
# Simple quoting for the default column value
101
119
def quote ( value )
102
120
case value
@@ -373,11 +391,11 @@ def annotate(klass, file, header, options={})
373
391
374
392
%w( test fixture factory serializer scaffold ) . each do |key |
375
393
exclusion_key = "exclude_#{ key . pluralize } " . to_sym
376
- patterns_constant = "#{ key . upcase } _PATTERNS" . to_sym
394
+ patterns_type = "#{ key . downcase } "
377
395
position_key = "position_in_#{ key } " . to_sym
378
396
379
397
unless options [ exclusion_key ]
380
- did_annotate = self . const_get ( patterns_constant ) .
398
+ did_annotate = self . get_patterns ( patterns_type ) .
381
399
map { |file | resolve_filename ( file , model_name , table_name ) } .
382
400
map { |file | annotate_one_file ( file , info , position_key , options_with_position ( options , position_key ) ) } .
383
401
detect { |result | result } || did_annotate
@@ -483,6 +501,7 @@ def do_annotations(options={})
483
501
end
484
502
485
503
self . model_dir = options [ :model_dir ] if options [ :model_dir ]
504
+ self . root_dir = options [ :root_dir ] if options [ :root_dir ]
486
505
487
506
annotated = [ ]
488
507
get_model_files ( options ) . each do |file |
@@ -512,6 +531,7 @@ def annotate_model_file(annotated, file, header, options)
512
531
513
532
def remove_annotations ( options = { } )
514
533
self . model_dir = options [ :model_dir ] if options [ :model_dir ]
534
+ self . root_dir = options [ :root_dir ] if options [ :root_dir ]
515
535
deannotated = [ ]
516
536
deannotated_klass = false
517
537
get_model_files ( options ) . each do |file |
@@ -524,7 +544,7 @@ def remove_annotations(options={})
524
544
model_file_name = file
525
545
deannotated_klass = true if ( remove_annotation_of_file ( model_file_name ) )
526
546
527
- ( TEST_PATTERNS + SCAFFOLD_PATTERNS + FIXTURE_PATTERNS + FACTORY_PATTERNS + SERIALIZER_PATTERNS ) .
547
+ ( get_patterns ( %w[ test scaffold fixture factory serializer ] ) ) .
528
548
map { |file | resolve_filename ( file , model_name , table_name ) } .
529
549
each do |file |
530
550
if File . exist? ( file )
0 commit comments