Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
A
annotate
Project
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
open-source
annotate
Commits
8d3c00c7
Commit
8d3c00c7
authored
Jul 28, 2009
by
Tony Day
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Changed to sort be default with an option to not sort.
parent
e0527559
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
22 additions
and
21 deletions
+22
-21
.gitignore
.gitignore
+1
-0
annotate
bin/annotate
+1
-1
annotate_models.rb
lib/annotate/annotate_models.rb
+18
-18
annotate_models.rake
lib/tasks/annotate_models.rake
+2
-2
No files found.
.gitignore
View file @
8d3c00c7
...
...
@@ -4,3 +4,4 @@ rdoc/*
coverage/*
spec/debug.log
pkg/*
.idea
bin/annotate
View file @
8d3c00c7
...
...
@@ -13,7 +13,7 @@ OptionParser.new do |opts|
opts
.
on
(
'-v'
,
'--version'
,
"Show the current version of this gem"
)
{
puts
"Annotate v
#{
Annotate
::
VERSION
}
"
;
exit
}
opts
.
on
(
'-m'
,
'--show-migration'
,
"Include the migration version number in the annotation"
)
{
ENV
[
'include_version'
]
=
"yes"
}
opts
.
on
(
'-i'
,
'--show-indexes'
,
"List the table's database indexes in the annotation"
)
{
ENV
[
'show_indexes'
]
=
"yes"
}
opts
.
on
(
'-
s'
,
'--sort'
,
"Sort columns alphabetically (rather than listing in creation order)"
)
{
ENV
[
'
sort'
]
=
"yes"
}
opts
.
on
(
'-
n'
,
'--no-sort'
,
"Sort columns alphabetically (rather than listing in creation order)"
)
{
ENV
[
'no_
sort'
]
=
"yes"
}
opts
.
on
(
'--model-dir dir'
,
"Annotate model files stored in dir rather than app/models"
)
{
|
dir
|
ENV
[
'model_dir'
]
=
dir
}
end
.
parse!
...
...
lib/annotate/annotate_models.rb
View file @
8d3c00c7
...
...
@@ -3,7 +3,7 @@ module AnnotateModels
# Annotate Models plugin use this header
COMPAT_PREFIX
=
"== Schema Info"
PREFIX
=
"== Schema Information"
FIXTURE_DIRS
=
[
"test/fixtures"
,
"spec/fixtures"
]
# File.join for windows reverse bar compat?
# I dont use windows, can`t test
...
...
@@ -11,11 +11,11 @@ module AnnotateModels
SPEC_MODEL_DIR
=
File
.
join
(
"spec"
,
"models"
)
# Object Daddy http://github.com/flogic/object_daddy/tree/master
EXEMPLARS_DIR
=
File
.
join
(
"spec"
,
"exemplars"
)
def
model_dir
@model_dir
||
"app/models"
end
def
model_dir
=
(
dir
)
@model_dir
=
dir
end
...
...
@@ -56,16 +56,16 @@ module AnnotateModels
else
col_type
<<
"(
#{
col
.
limit
}
)"
if
col
.
limit
end
# Check out if we got a geometric column
# and print the type and SRID
if
col
.
respond_to?
(
:geometry_type
)
attrs
<<
"
#{
col
.
geometry_type
}
,
#{
col
.
srid
}
"
end
end
cols
<<
sprintf
(
"# %-
#{
max_size
}
.
#{
max_size
}
s:%-15.15s %s"
,
col
.
name
,
col_type
,
attrs
.
join
(
", "
)).
rstrip
+
"
\n
"
end
cols
.
sort!
if
options
[
:
sort
]
cols
.
sort!
unless
options
[
:no_
sort
]
info
<<
cols
.
join
if
options
[
:show_indexes
]
...
...
@@ -95,7 +95,7 @@ module AnnotateModels
# Returns true or false depending on whether the file was modified.
#
# === Options (opts)
# :position<Symbol>:: where to place the annotated section in fixture or model file,
# :position<Symbol>:: where to place the annotated section in fixture or model file,
# "before" or "after". Default is "before".
# :position_in_class<Symbol>:: where to place the annotated section in model file
# :position_in_fixture<Symbol>:: where to place the annotated section in fixture file
...
...
@@ -108,7 +108,7 @@ module AnnotateModels
header
=
Regexp
.
new
(
/(^# Table name:.*?\n(#.*\n)*\n)/
)
old_header
=
old_content
.
match
(
header
).
to_s
new_header
=
info_block
.
match
(
header
).
to_s
if
old_header
==
new_header
false
else
...
...
@@ -123,13 +123,13 @@ module AnnotateModels
end
end
end
def
remove_annotation_of_file
(
file_name
)
if
File
.
exist?
(
file_name
)
content
=
File
.
read
(
file_name
)
content
.
sub!
(
/^#
#{
COMPAT_PREFIX
}
.*?\n(#.*\n)*\n/
,
''
)
File
.
open
(
file_name
,
"wb"
)
{
|
f
|
f
.
puts
content
}
end
end
...
...
@@ -154,7 +154,7 @@ module AnnotateModels
[
File
.
join
(
UNIT_TEST_DIR
,
"
#{
model_name
}
_test.rb"
),
# test
File
.
join
(
SPEC_MODEL_DIR
,
"
#{
model_name
}
_spec.rb"
),
# spec
File
.
join
(
EXEMPLARS_DIR
,
"
#{
model_name
}
_exemplar.rb"
),
# Object Daddy
File
.
join
(
EXEMPLARS_DIR
,
"
#{
model_name
}
_exemplar.rb"
),
# Object Daddy
].
each
{
|
file
|
annotate_one_file
(
file
,
info
)
}
FIXTURE_DIRS
.
each
do
|
dir
|
...
...
@@ -180,7 +180,7 @@ module AnnotateModels
end
models
end
# Retrieve the classes belonging to the model names we're asked to process
# Check for namespaced models in subdirectories as well as models
# in subdirectories without namespacing.
...
...
@@ -206,9 +206,9 @@ module AnnotateModels
version
=
ActiveRecord
::
Migrator
.
current_version
rescue
0
if
version
>
0
header
<<
"
\n
# Schema version:
#{
version
}
"
end
end
end
if
options
[
:model_dir
]
self
.
model_dir
=
options
[
:model_dir
]
end
...
...
@@ -232,7 +232,7 @@ module AnnotateModels
puts
"Annotated (
#{
annotated
.
length
}
):
#{
annotated
.
join
(
', '
)
}
"
end
end
def
remove_annotations
(
options
=
{})
p
options
if
options
[
:model_dir
]
...
...
@@ -245,10 +245,10 @@ module AnnotateModels
klass
=
get_model_class
(
file
)
if
klass
<
ActiveRecord
::
Base
&&
!
klass
.
abstract_class?
deannotated
<<
klass
model_file_name
=
File
.
join
(
model_dir
,
file
)
remove_annotation_of_file
(
model_file_name
)
FIXTURE_DIRS
.
each
do
|
dir
|
fixture_file_name
=
File
.
join
(
dir
,
klass
.
table_name
+
".yml"
)
remove_annotation_of_file
(
fixture_file_name
)
if
File
.
exist?
(
fixture_file_name
)
...
...
lib/tasks/annotate_models.rake
View file @
8d3c00c7
...
...
@@ -4,10 +4,10 @@ task :annotate_models => :environment do
options
=
{}
options
[
:position_in_class
]
=
ENV
[
'position_in_class'
]
||
ENV
[
'position'
]
||
:before
options
[
:position_in_fixture
]
=
ENV
[
'position_in_fixture'
]
||
ENV
[
'position'
]
||
:before
options
[
:show_indexes
]
=
ENV
[
'show_indexes'
]
options
[
:show_indexes
]
=
ENV
[
'show_indexes'
]
options
[
:model_dir
]
=
ENV
[
'model_dir'
]
options
[
:include_version
]
=
ENV
[
'include_version'
]
options
[
:
sort
]
=
ENV
[
'
sort'
]
options
[
:
no_sort
]
=
ENV
[
'no_
sort'
]
AnnotateModels
.
do_annotations
(
options
)
end
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment