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