mactag 0.1.1 → 0.2.0
Sign up to get free protection for your applications and to get access to all the features.
- data/README.markdown +19 -16
- data/VERSION +1 -1
- data/features/app.feature +82 -16
- data/features/gem.feature +116 -36
- data/features/plugin.feature +86 -21
- data/features/rails.feature +6 -0
- data/features/step_definitions/mactag_steps.rb +43 -0
- data/features/support/env.rb +4 -0
- data/features/support/rails_app.rb +20 -48
- data/features/support/tags_file.rb +8 -5
- data/lib/generators/mactag/templates/mactag.rb +50 -9
- data/lib/mactag.rb +1 -1
- data/lib/mactag/config.rb +28 -7
- data/lib/mactag/table.rb +22 -9
- data/lib/mactag/tag/app.rb +10 -10
- data/lib/mactag/tag/gem.rb +51 -17
- data/lib/mactag/tag/parser.rb +12 -2
- data/lib/mactag/tag/plugin.rb +15 -12
- data/lib/mactag/tag/rails.rb +43 -67
- data/test/mactag/config_test.rb +33 -3
- data/test/mactag/tag/app_test.rb +3 -5
- data/test/mactag/tag/gem_test.rb +47 -20
- data/test/mactag/tag/plugin_test.rb +23 -25
- data/test/mactag/tag/rails_test.rb +18 -123
- metadata +105 -27
- data/TODO +0 -8
- data/features/rails/actionmailer/lib/action_mailer/base.rb +0 -9
- data/features/rails/actionpack/lib/action_controller/caching/actions.rb +0 -11
- data/features/rails/actionpack/lib/action_view/action_view/helpers/form_tag_helper.rb +0 -9
- data/features/rails/activerecord/lib/active_record/associations.rb +0 -9
- data/features/rails/activeresource/lib/active_resource/connection.rb +0 -7
- data/features/rails/activesupport/lib/active_support/core_ext/hash/diff.rb +0 -5
- data/features/rails_gem.feature +0 -89
- data/features/rails_vendor.feature +0 -57
- data/features/step_definitions/gem_steps.rb +0 -22
- data/features/step_definitions/mactab_steps.rb +0 -57
- data/features/step_definitions/plugin_steps.rb +0 -22
- data/features/step_definitions/rails_steps.rb +0 -20
- data/lib/mactag/tag/versioned.rb +0 -22
data/README.markdown
CHANGED
@@ -7,7 +7,7 @@ to their definitions.
|
|
7
7
|
|
8
8
|
|
9
9
|
# Exuberant Ctags
|
10
|
-
First off you must install [Ctags](http://ctags.sourceforge.net/).
|
10
|
+
First off, you must install [Ctags](http://ctags.sourceforge.net/).
|
11
11
|
Some systems comes with a ctags command already. If you have the ctags
|
12
12
|
executable, but have problems creating the tags file. Then make sure
|
13
13
|
that you are using **Exuberant Ctags** and not some other version.
|
@@ -24,29 +24,31 @@ Install the plugin:
|
|
24
24
|
|
25
25
|
### Gem
|
26
26
|
Install the gem:
|
27
|
-
$
|
27
|
+
$ gem install mactag --version='0.0.5'
|
28
28
|
|
29
29
|
Load the gem in **config/environments/development.rb**:
|
30
30
|
config.gem 'mactag'
|
31
31
|
|
32
|
+
|
32
33
|
## Rails 3.x
|
33
|
-
Version 0.1.1 is the
|
34
|
+
Version 0.1.1 is the latest version supporting Rails 3.x.
|
34
35
|
|
35
36
|
### Plugin
|
36
37
|
Install the plugin:
|
37
|
-
$ rails plugin install git://github.com/rejeep/mactag.git
|
38
|
+
$ rails plugin install git://github.com/rejeep/mactag.git
|
38
39
|
|
39
40
|
### Gem
|
40
41
|
Install the gem:
|
41
|
-
$
|
42
|
+
$ gem install mactag
|
42
43
|
|
43
44
|
Load the gem in **Gemfile**:
|
44
45
|
group :development do
|
45
|
-
gem 'mactag'
|
46
|
+
gem 'mactag', '0.1.1'
|
46
47
|
end
|
47
48
|
|
48
|
-
|
49
|
-
When
|
49
|
+
|
50
|
+
## When installing as Gem
|
51
|
+
When you install Mactag as a gem you must also include it's rake tasks
|
50
52
|
in your **Rakefile**.
|
51
53
|
require 'mactag/tasks'
|
52
54
|
|
@@ -63,25 +65,26 @@ Generate a basic configuration file:
|
|
63
65
|
This will create the file **config/mactag.rb**, which contains some
|
64
66
|
examples of how to configure Mactag.
|
65
67
|
|
66
|
-
|
67
68
|
## Options
|
68
69
|
|
70
|
+
* **Mactag::Config.rvm:** If true, use RVM gems. Defaults to **true**
|
69
71
|
* **Mactag::Config.gem_home:** The path where the gems are located. Defaults to **/Library/Ruby/Gems/1.8/gems**
|
70
72
|
* **Mactag::Config.binary:** The command to run when creating the TAGS-file. Defaults to **ctags -o TAGS -e**
|
71
73
|
|
72
74
|
## Example mactag.rb file
|
73
|
-
Mactag::Config.
|
74
|
-
Mactag::Config.
|
75
|
+
Mactag::Config.rvm = false
|
76
|
+
Mactag::Config.gem_home = '/usr/lib/ruby/gems/1.8/gems'
|
77
|
+
Mactag::Config.binary = 'etags -o TAGS'
|
75
78
|
|
76
79
|
Mactag::Table.generate do
|
77
|
-
app
|
80
|
+
app 'app/**/*.rb', 'lib/*.rb'
|
78
81
|
|
79
|
-
plugins
|
82
|
+
plugins 'thinking-sphinx', 'whenever'
|
80
83
|
|
81
|
-
gems
|
82
|
-
gem
|
84
|
+
gems 'paperclip', 'authlogic'
|
85
|
+
gem 'formtastic', :version => '0.9.7'
|
83
86
|
|
84
|
-
rails :except => :actionmailer, :version =>
|
87
|
+
rails :except => :actionmailer, :version => '2.3.5'
|
85
88
|
end
|
86
89
|
|
87
90
|
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.
|
1
|
+
0.2.0
|
data/features/app.feature
CHANGED
@@ -8,37 +8,103 @@ Feature: Tag application files
|
|
8
8
|
And mactag is installed
|
9
9
|
|
10
10
|
Scenario: Tag single file
|
11
|
-
Given
|
12
|
-
|
11
|
+
Given file "public/javascripts/mactag.js" with contents:
|
12
|
+
"""
|
13
|
+
function mactag() {
|
14
|
+
// ...
|
15
|
+
}
|
16
|
+
"""
|
17
|
+
And this mactag config file:
|
18
|
+
"""
|
19
|
+
Mactag::Table.generate do
|
20
|
+
app 'public/javascripts/mactag.js'
|
21
|
+
end
|
22
|
+
"""
|
23
|
+
When I create the tags file
|
24
|
+
Then "mactag" should be tagged
|
25
|
+
|
26
|
+
Scenario: Tag multiple files different calls
|
27
|
+
Given file "public/javascripts/application.js" with contents:
|
28
|
+
"""
|
29
|
+
function app() {
|
30
|
+
// ...
|
31
|
+
}
|
32
|
+
"""
|
33
|
+
Given file "public/javascripts/base.js" with contents:
|
34
|
+
"""
|
35
|
+
function base() {
|
36
|
+
// ...
|
37
|
+
}
|
38
|
+
"""
|
39
|
+
And this mactag config file:
|
13
40
|
"""
|
14
41
|
Mactag::Table.generate do
|
15
|
-
app
|
42
|
+
app 'public/javascripts/application.js'
|
43
|
+
app 'public/javascripts/base.js'
|
16
44
|
end
|
17
45
|
"""
|
18
46
|
When I create the tags file
|
19
|
-
Then
|
47
|
+
Then "app" should be tagged
|
48
|
+
Then "base" should be tagged
|
20
49
|
|
21
|
-
Scenario: Tag multiple files
|
22
|
-
Given
|
23
|
-
|
24
|
-
|
50
|
+
Scenario: Tag multiple files same call
|
51
|
+
Given file "public/javascripts/application.js" with contents:
|
52
|
+
"""
|
53
|
+
function app() {
|
54
|
+
// ...
|
55
|
+
}
|
56
|
+
"""
|
57
|
+
Given file "public/javascripts/base.js" with contents:
|
58
|
+
"""
|
59
|
+
function base() {
|
60
|
+
// ...
|
61
|
+
}
|
62
|
+
"""
|
63
|
+
And this mactag config file:
|
64
|
+
"""
|
65
|
+
Mactag::Table.generate do
|
66
|
+
app 'public/javascripts/application.js', 'public/javascripts/base.js'
|
67
|
+
end
|
68
|
+
"""
|
69
|
+
When I create the tags file
|
70
|
+
Then "app" should be tagged
|
71
|
+
Then "base" should be tagged
|
72
|
+
|
73
|
+
Scenario: Tag multiple files using asterix
|
74
|
+
Given file "public/javascripts/application.js" with contents:
|
75
|
+
"""
|
76
|
+
function app() {
|
77
|
+
// ...
|
78
|
+
}
|
79
|
+
"""
|
80
|
+
Given file "public/javascripts/base.js" with contents:
|
81
|
+
"""
|
82
|
+
function base() {
|
83
|
+
// ...
|
84
|
+
}
|
85
|
+
"""
|
86
|
+
And this mactag config file:
|
25
87
|
"""
|
26
88
|
Mactag::Table.generate do
|
27
|
-
app
|
28
|
-
app "app/models/user.rb"
|
89
|
+
app 'public/javascripts/*.js'
|
29
90
|
end
|
30
91
|
"""
|
31
92
|
When I create the tags file
|
32
|
-
Then
|
33
|
-
|
93
|
+
Then "app" should be tagged
|
94
|
+
Then "base" should be tagged
|
34
95
|
|
35
96
|
Scenario: Tag files recursive
|
36
|
-
Given
|
37
|
-
|
97
|
+
Given file "public/javascripts/mactag.js" with contents:
|
98
|
+
"""
|
99
|
+
function mactag() {
|
100
|
+
// ...
|
101
|
+
}
|
102
|
+
"""
|
103
|
+
And this mactag config file:
|
38
104
|
"""
|
39
105
|
Mactag::Table.generate do
|
40
|
-
app
|
106
|
+
app 'public/**/*.js'
|
41
107
|
end
|
42
108
|
"""
|
43
109
|
When I create the tags file
|
44
|
-
Then
|
110
|
+
Then "mactag" should be tagged
|
data/features/gem.feature
CHANGED
@@ -9,66 +9,146 @@ Feature: Tag Gems
|
|
9
9
|
|
10
10
|
Scenario: Tag single gem
|
11
11
|
Given the gem "superduper" version "1.0.0" is installed
|
12
|
-
And
|
13
|
-
And a mactag config file with this contents:
|
12
|
+
And file "vendor/gems/superduper-1.0.0/lib/superduper.rb" with contents:
|
14
13
|
"""
|
15
|
-
|
14
|
+
class SuperDuper
|
15
|
+
def i_really_am
|
16
|
+
# ...
|
17
|
+
end
|
18
|
+
end
|
19
|
+
"""
|
20
|
+
And this mactag config file:
|
21
|
+
"""
|
22
|
+
Mactag::Config.rvm = false
|
23
|
+
Mactag::Config.gem_home = File.join('vendor', 'gems')
|
16
24
|
Mactag::Table.generate do
|
17
|
-
gem
|
25
|
+
gem 'superduper'
|
18
26
|
end
|
19
27
|
"""
|
20
28
|
When I create the tags file
|
21
|
-
Then
|
29
|
+
Then "i_really_am" should be tagged
|
22
30
|
|
23
|
-
Scenario: Tag multiple gems
|
31
|
+
Scenario: Tag multiple gems different calls
|
24
32
|
Given the gem "superduper" version "1.0.0" is installed
|
25
|
-
|
26
|
-
And
|
27
|
-
|
28
|
-
|
33
|
+
Given the gem "dunder" version "0.3.2" is installed
|
34
|
+
And file "vendor/gems/superduper-1.0.0/lib/superduper.rb" with contents:
|
35
|
+
"""
|
36
|
+
class SuperDuper
|
37
|
+
def i_really_am
|
38
|
+
# ...
|
39
|
+
end
|
40
|
+
end
|
41
|
+
"""
|
42
|
+
And file "vendor/gems/dunder-0.3.2/lib/dunder.rb" with contents:
|
43
|
+
"""
|
44
|
+
class Dunder
|
45
|
+
def and_brak
|
46
|
+
# ...
|
47
|
+
end
|
48
|
+
end
|
49
|
+
"""
|
50
|
+
And this mactag config file:
|
29
51
|
"""
|
30
|
-
Mactag::Config.
|
52
|
+
Mactag::Config.rvm = false
|
53
|
+
Mactag::Config.gem_home = File.join('vendor', 'gems')
|
31
54
|
Mactag::Table.generate do
|
32
|
-
|
55
|
+
gem 'superduper'
|
56
|
+
gem 'dunder'
|
33
57
|
end
|
34
58
|
"""
|
35
59
|
When I create the tags file
|
36
|
-
Then
|
37
|
-
Then
|
60
|
+
Then "i_really_am" should be tagged
|
61
|
+
Then "and_brak" should be tagged
|
62
|
+
|
63
|
+
Scenario: Tag multiple gems same call
|
64
|
+
Given the gem "superduper" version "1.0.0" is installed
|
65
|
+
Given the gem "dunder" version "0.3.2" is installed
|
66
|
+
And file "vendor/gems/superduper-1.0.0/lib/superduper.rb" with contents:
|
67
|
+
"""
|
68
|
+
class SuperDuper
|
69
|
+
def i_really_am
|
70
|
+
# ...
|
71
|
+
end
|
72
|
+
end
|
73
|
+
"""
|
74
|
+
And file "vendor/gems/dunder-0.3.2/lib/dunder.rb" with contents:
|
75
|
+
"""
|
76
|
+
class Dunder
|
77
|
+
def and_brak
|
78
|
+
# ...
|
79
|
+
end
|
80
|
+
end
|
81
|
+
"""
|
82
|
+
And this mactag config file:
|
83
|
+
"""
|
84
|
+
Mactag::Config.rvm = false
|
85
|
+
Mactag::Config.gem_home = File.join('vendor', 'gems')
|
86
|
+
Mactag::Table.generate do
|
87
|
+
gem 'superduper', 'dunder'
|
88
|
+
end
|
89
|
+
"""
|
90
|
+
When I create the tags file
|
91
|
+
Then "i_really_am" should be tagged
|
92
|
+
Then "and_brak" should be tagged
|
38
93
|
|
39
94
|
Scenario: Tag specific version
|
40
|
-
Given the gem "superduper" version "
|
41
|
-
And the gem "superduper" version "1.0.
|
42
|
-
And
|
43
|
-
And an acts as method for the "superduper-1.0.1" gem
|
44
|
-
And a mactag config file with this contents:
|
95
|
+
Given the gem "superduper" version "0.0.3" is installed
|
96
|
+
And the gem "superduper" version "1.0.0" is installed
|
97
|
+
And file "vendor/gems/superduper-0.0.3/lib/superduper.rb" with contents:
|
45
98
|
"""
|
46
|
-
|
99
|
+
class SuperDuper
|
100
|
+
def still_in_beta
|
101
|
+
# ...
|
102
|
+
end
|
103
|
+
end
|
104
|
+
"""
|
105
|
+
And file "vendor/gems/superduper-1.0.0/lib/superduper.rb" with contents:
|
106
|
+
"""
|
107
|
+
class SuperDuper
|
108
|
+
def ready_for_production
|
109
|
+
# ...
|
110
|
+
end
|
111
|
+
end
|
112
|
+
"""
|
113
|
+
And this mactag config file:
|
114
|
+
"""
|
115
|
+
Mactag::Config.rvm = false
|
116
|
+
Mactag::Config.gem_home = File.join('vendor', 'gems')
|
47
117
|
Mactag::Table.generate do
|
48
|
-
gem
|
118
|
+
gem 'superduper', :version => '1.0.0'
|
49
119
|
end
|
50
120
|
"""
|
51
121
|
When I create the tags file
|
52
|
-
Then
|
53
|
-
And
|
54
|
-
And the tags file should not contain "1.0.1"
|
122
|
+
Then "ready_for_production" should be tagged
|
123
|
+
And "still_in_beta" should not be tagged
|
55
124
|
|
56
125
|
Scenario: Tag latest version
|
57
|
-
Given the gem "superduper" version "
|
58
|
-
And the gem "superduper" version "1.0.1" is installed
|
126
|
+
Given the gem "superduper" version "0.0.3" is installed
|
59
127
|
And the gem "superduper" version "1.0.0" is installed
|
60
|
-
And
|
61
|
-
|
62
|
-
|
63
|
-
|
128
|
+
And file "vendor/gems/superduper-0.0.3/lib/superduper.rb" with contents:
|
129
|
+
"""
|
130
|
+
class SuperDuper
|
131
|
+
def still_in_beta
|
132
|
+
# ...
|
133
|
+
end
|
134
|
+
end
|
135
|
+
"""
|
136
|
+
And file "vendor/gems/superduper-1.0.0/lib/superduper.rb" with contents:
|
137
|
+
"""
|
138
|
+
class SuperDuper
|
139
|
+
def ready_for_production
|
140
|
+
# ...
|
141
|
+
end
|
142
|
+
end
|
143
|
+
"""
|
144
|
+
And this mactag config file:
|
64
145
|
"""
|
65
|
-
Mactag::Config.
|
146
|
+
Mactag::Config.rvm = false
|
147
|
+
Mactag::Config.gem_home = File.join('vendor', 'gems')
|
66
148
|
Mactag::Table.generate do
|
67
|
-
gem
|
149
|
+
gem 'superduper'
|
68
150
|
end
|
69
151
|
"""
|
70
152
|
When I create the tags file
|
71
|
-
Then
|
72
|
-
And
|
73
|
-
And the tags file should not contain "1.0.0"
|
74
|
-
And the tags file should not contain "1.0.1"
|
153
|
+
Then "ready_for_production" should be tagged
|
154
|
+
And "still_in_beta" should not be tagged
|
data/features/plugin.feature
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
Feature: Tag Plugins
|
2
2
|
In order to create a TAGS file
|
3
3
|
As a user
|
4
|
-
I want to tag plugins
|
4
|
+
I want to tag application plugins
|
5
5
|
|
6
6
|
Background:
|
7
7
|
Given a Rails application
|
@@ -9,42 +9,107 @@ Feature: Tag Plugins
|
|
9
9
|
|
10
10
|
Scenario: Tag single plugin
|
11
11
|
Given the plugin "superduper" is installed
|
12
|
-
And
|
13
|
-
|
12
|
+
And file "vendor/plugins/superduper/lib/superduper.rb" with contents:
|
13
|
+
"""
|
14
|
+
class SuperDuper
|
15
|
+
def i_really_am
|
16
|
+
# ...
|
17
|
+
end
|
18
|
+
end
|
19
|
+
"""
|
20
|
+
And this mactag config file:
|
14
21
|
"""
|
15
22
|
Mactag::Table.generate do
|
16
|
-
plugin
|
23
|
+
plugin 'superduper'
|
17
24
|
end
|
18
25
|
"""
|
19
26
|
When I create the tags file
|
20
|
-
Then
|
21
|
-
|
22
|
-
Scenario: Tag multiple plugins
|
27
|
+
Then "i_really_am" should be tagged
|
28
|
+
|
29
|
+
Scenario: Tag multiple plugins different calls
|
23
30
|
Given the plugin "superduper" is installed
|
24
|
-
|
25
|
-
And
|
26
|
-
|
27
|
-
|
31
|
+
Given the plugin "dunder" is installed
|
32
|
+
And file "vendor/plugins/superduper/lib/superduper.rb" with contents:
|
33
|
+
"""
|
34
|
+
class SuperDuper
|
35
|
+
def i_really_am
|
36
|
+
# ...
|
37
|
+
end
|
38
|
+
end
|
39
|
+
"""
|
40
|
+
And file "vendor/plugins/dunder/lib/dunder.rb" with contents:
|
41
|
+
"""
|
42
|
+
class Dunder
|
43
|
+
def and_brak
|
44
|
+
# ...
|
45
|
+
end
|
46
|
+
end
|
47
|
+
"""
|
48
|
+
And this mactag config file:
|
28
49
|
"""
|
29
50
|
Mactag::Table.generate do
|
30
|
-
plugin
|
51
|
+
plugin 'superduper'
|
52
|
+
plugin 'dunder'
|
31
53
|
end
|
32
54
|
"""
|
33
55
|
When I create the tags file
|
34
|
-
Then
|
35
|
-
Then
|
36
|
-
|
56
|
+
Then "i_really_am" should be tagged
|
57
|
+
Then "and_brak" should be tagged
|
58
|
+
|
59
|
+
Scenario: Tag multiple plugins same call
|
60
|
+
Given the plugin "superduper" is installed
|
61
|
+
Given the plugin "dunder" is installed
|
62
|
+
And file "vendor/plugins/superduper/lib/superduper.rb" with contents:
|
63
|
+
"""
|
64
|
+
class SuperDuper
|
65
|
+
def i_really_am
|
66
|
+
# ...
|
67
|
+
end
|
68
|
+
end
|
69
|
+
"""
|
70
|
+
And file "vendor/plugins/dunder/lib/dunder.rb" with contents:
|
71
|
+
"""
|
72
|
+
class Dunder
|
73
|
+
def and_brak
|
74
|
+
# ...
|
75
|
+
end
|
76
|
+
end
|
77
|
+
"""
|
78
|
+
And this mactag config file:
|
79
|
+
"""
|
80
|
+
Mactag::Table.generate do
|
81
|
+
plugins 'superduper', 'dunder'
|
82
|
+
end
|
83
|
+
"""
|
84
|
+
When I create the tags file
|
85
|
+
Then "i_really_am" should be tagged
|
86
|
+
Then "and_brak" should be tagged
|
87
|
+
|
37
88
|
Scenario: Tag all plugins
|
38
89
|
Given the plugin "superduper" is installed
|
39
|
-
|
40
|
-
And
|
41
|
-
|
42
|
-
|
90
|
+
Given the plugin "dunder" is installed
|
91
|
+
And file "vendor/plugins/superduper/lib/superduper.rb" with contents:
|
92
|
+
"""
|
93
|
+
class SuperDuper
|
94
|
+
def i_really_am
|
95
|
+
# ...
|
96
|
+
end
|
97
|
+
end
|
98
|
+
"""
|
99
|
+
And file "vendor/plugins/dunder/lib/dunder.rb" with contents:
|
100
|
+
"""
|
101
|
+
class Dunder
|
102
|
+
def and_brak
|
103
|
+
# ...
|
104
|
+
end
|
105
|
+
end
|
106
|
+
"""
|
107
|
+
And this mactag config file:
|
43
108
|
"""
|
44
109
|
Mactag::Table.generate do
|
45
110
|
plugins
|
46
111
|
end
|
47
112
|
"""
|
48
113
|
When I create the tags file
|
49
|
-
Then
|
50
|
-
Then
|
114
|
+
Then "i_really_am" should be tagged
|
115
|
+
Then "and_brak" should be tagged
|