rocco_rails 0.8

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.
data/.gitignore ADDED
@@ -0,0 +1,18 @@
1
+ *.gem
2
+ *.rbc
3
+ .bundle
4
+ .config
5
+ .yardoc
6
+ Gemfile.lock
7
+ InstalledFiles
8
+ _yardoc
9
+ coverage
10
+ doc/
11
+ lib/bundler/man
12
+ pkg
13
+ rdoc
14
+ spec/reports
15
+ test/tmp
16
+ test/version_tmp
17
+ tmp
18
+ .rvmrc
data/Gemfile ADDED
@@ -0,0 +1,7 @@
1
+ source 'http://rubygems.org'
2
+
3
+ gem 'rocco', :git => "git://github.com/rtomayko/rocco.git"
4
+ gem 'rake'
5
+
6
+ # Specify your gem's dependencies in rocco_rails.gemspec
7
+ gemspec
data/LICENSE ADDED
@@ -0,0 +1,22 @@
1
+ Copyright (c) 2012 Mawi Marin
2
+
3
+ MIT License
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining
6
+ a copy of this software and associated documentation files (the
7
+ "Software"), to deal in the Software without restriction, including
8
+ without limitation the rights to use, copy, modify, merge, publish,
9
+ distribute, sublicense, and/or sell copies of the Software, and to
10
+ permit persons to whom the Software is furnished to do so, subject to
11
+ the following conditions:
12
+
13
+ The above copyright notice and this permission notice shall be
14
+ included in all copies or substantial portions of the Software.
15
+
16
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
17
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
18
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
19
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
20
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
21
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
22
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/README.md ADDED
@@ -0,0 +1,71 @@
1
+ # RoccoRails
2
+
3
+ Rocco customizable addon to generate docco style documentation in rails projects
4
+
5
+ ## What is rocco/docco?
6
+
7
+ Rocco is a quick-and-dirty, literate-programming-style documentation
8
+ generator for Ruby. See the Rocco generated docs for more information:
9
+
10
+ <http://rtomayko.github.com/rocco/>
11
+
12
+
13
+ Rocco is a port of, and borrows heavily from, Docco -- the original
14
+ quick-and-dirty, hundred-line-long, literate-programming-style
15
+ documentation generator in CoffeeScript:
16
+
17
+ <http://jashkenas.github.com/docco/>
18
+
19
+ ## Installation
20
+
21
+ Add this lines to your application's Gemfile:
22
+
23
+ gem 'rocco', :git => "git://github.com/rtomayko/rocco.git"
24
+ gem 'rocco_rails', :git => "git://github.com/mawi/rocco_rails.git"
25
+
26
+ ## Usage
27
+
28
+ ### Easy way
29
+
30
+ To generate application's documentation into 'docs' directory just run:
31
+
32
+ rake rails:rocco
33
+
34
+ ### Custom way
35
+
36
+ rocco_rails uses a rocco.yml config file inside gem directory. It can be customized by copying it to your application's config directory or running rake rails:rocco_setup.
37
+
38
+ Default rocco.yml:
39
+
40
+ output: docs
41
+ template: lib/templates/layout.mustache
42
+ resources_path: lib/templates/resources
43
+ excluded_items: config/, spec/, db/
44
+
45
+ * output => define target directory
46
+ * template => moustache template used by rocco to generate html
47
+ * resources_path => if you have your own template and want to use your .css or .js just put it into this directory. It will be copied and linked in generated docs
48
+ * excluded_items => A comma separated list of directories not to look into
49
+
50
+ Your custom rocco.yml doesn't have to have all options. It will merge whit gem's config. Sample rocco.yml would be good if you don't have a custom template.
51
+
52
+ You can test your rocco.yml running
53
+
54
+ rake rails:test_rocco_config
55
+
56
+ And then, again
57
+
58
+ rake rails:rocco
59
+
60
+
61
+ ## Known issues
62
+
63
+ Rocco gem that is actualy in rubygems doesn't have the option to select a stylesheet to use. If your generated docs seems to have no style, try to use rocco's github code (see Instalation)
64
+
65
+ ## Contributing
66
+
67
+ 1. Fork it
68
+ 2. Create your feature branch (`git checkout -b my-new-feature`)
69
+ 3. Commit your changes (`git commit -am 'Added some feature'`)
70
+ 4. Push to the branch (`git push origin my-new-feature`)
71
+ 5. Create new Pull Request
data/Rakefile ADDED
@@ -0,0 +1,7 @@
1
+ #!/usr/bin/env rake
2
+
3
+ require 'rubygems'
4
+
5
+ load 'lib/tasks/rocco_tasks.rake'
6
+
7
+ $LOAD_PATH.unshift 'lib'
data/docs/index.html ADDED
@@ -0,0 +1,12 @@
1
+ <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN"
2
+ "http://www.w3.org/TR/html4/frameset.dtd">
3
+ <html>
4
+ <head>
5
+ <title> Rocco Documentation </title>
6
+ </head>
7
+ <frameset cols="20%, 80%">
8
+ <frame src="menu.html">
9
+ <frame name="rocco" src="">
10
+ </frameset>
11
+
12
+ </HTML>
@@ -0,0 +1,129 @@
1
+ <!DOCTYPE html>
2
+ <html>
3
+ <head>
4
+ <meta http-equiv="content-type" content="text/html;charset=utf-8">
5
+ <title>rocco_rails.rb</title>
6
+ <link rel='stylesheet' href='/Users/mmarin/Work/rocco_rails/docs/resources/rocco.css'>
7
+
8
+ </head>
9
+ <body>
10
+
11
+ <div id='container'>
12
+ <div id="background"></div>
13
+ <table cellspacing=0 cellpadding=0>
14
+ <thead>
15
+ <tr>
16
+
17
+ <th class='docs'>
18
+ <h1>rocco_rails.rb</h1>
19
+ <p class=hint> lib/rocco_rails.rb </p>
20
+ </th>
21
+
22
+ <th class=code>
23
+ </th>
24
+ </tr>
25
+ </thead>
26
+ <tbody>
27
+
28
+ </tr>
29
+ <tr id='section-1'>
30
+ <td class=docs>
31
+ <div class="pilwrap">
32
+ <a class="pilcrow" href="#section-1">&#182;</a>
33
+ </div>
34
+
35
+ </td>
36
+ <td class=code>
37
+ <div class='highlight'><pre><span class="nb">require</span> <span class="no">File</span><span class="o">.</span><span class="n">expand_path</span><span class="p">(</span><span class="s1">&#39;../rocco_rails/lib/rocco_rails/version.rb&#39;</span><span class="p">)</span>
38
+ <span class="nb">require</span> <span class="s2">&quot;rocco&quot;</span>
39
+
40
+ <span class="k">module</span> <span class="nn">RoccoRails</span>
41
+
42
+ <span class="k">class</span> <span class="o">&lt;&lt;</span> <span class="nb">self</span>
43
+ <span class="nb">require</span> <span class="s1">&#39;rocco_rails/railtie&#39;</span> <span class="k">if</span> <span class="n">defined?</span><span class="p">(</span><span class="no">Rails</span><span class="p">)</span>
44
+ <span class="kp">include</span> <span class="no">Rake</span><span class="o">::</span><span class="no">DSL</span> <span class="k">if</span> <span class="n">defined?</span><span class="p">(</span><span class="no">Rake</span><span class="o">::</span><span class="no">DSL</span><span class="p">)</span></pre></div>
45
+ </td>
46
+ </tr>
47
+ <tr id='section-2'>
48
+ <td class=docs>
49
+ <div class="pilwrap">
50
+ <a class="pilcrow" href="#section-2">&#182;</a>
51
+ </div>
52
+ <p>Rocco only use a var named stylesheet supposed to be the path for the stylesheet. This is a little hack to use it to
53
+  inject a complete directory. Default is /resources</p>
54
+ </td>
55
+ <td class=code>
56
+ <div class='highlight'><pre> <span class="k">def</span> <span class="nf">generate_resources</span><span class="p">(</span><span class="n">path</span><span class="p">,</span> <span class="n">rocco_out</span><span class="p">)</span>
57
+ <span class="n">files</span> <span class="o">=</span> <span class="no">Dir</span><span class="o">.</span><span class="n">entries</span><span class="p">(</span><span class="n">path</span><span class="p">)</span> <span class="o">-</span> <span class="o">[</span><span class="s2">&quot;.&quot;</span><span class="p">,</span> <span class="s2">&quot;..&quot;</span><span class="o">]</span>
58
+ <span class="n">out</span> <span class="o">=</span> <span class="s2">&quot;&quot;</span>
59
+ <span class="n">files</span><span class="o">.</span><span class="n">each</span> <span class="k">do</span> <span class="o">|</span><span class="n">file</span><span class="o">|</span>
60
+ <span class="n">out</span> <span class="o">+=</span> <span class="s2">&quot;&lt;link rel=&#39;stylesheet&#39; href=&#39;</span><span class="si">#{</span><span class="o">[</span><span class="n">rocco_out</span><span class="p">,</span> <span class="n">file</span><span class="o">].</span><span class="n">join</span><span class="p">(</span><span class="s1">&#39;/&#39;</span><span class="p">)</span><span class="si">}</span><span class="s2">&#39;&gt;</span><span class="se">\n</span><span class="s2">&quot;</span> <span class="k">if</span> <span class="n">file</span><span class="o">.</span><span class="n">end_with?</span><span class="p">(</span><span class="s2">&quot;.css&quot;</span><span class="p">)</span>
61
+ <span class="n">out</span> <span class="o">+=</span> <span class="s2">&quot;&lt;script src=&#39;</span><span class="si">#{</span><span class="o">[</span><span class="n">rocco_out</span><span class="p">,</span> <span class="n">file</span><span class="o">].</span><span class="n">join</span><span class="p">(</span><span class="s1">&#39;/&#39;</span><span class="p">)</span><span class="si">}</span><span class="s2">&#39;&gt;&lt;/script&gt;</span><span class="se">\n</span><span class="s2">&quot;</span> <span class="k">if</span> <span class="n">file</span><span class="o">.</span><span class="n">end_with?</span><span class="p">(</span><span class="s2">&quot;.js&quot;</span><span class="p">)</span>
62
+ <span class="k">end</span>
63
+ <span class="n">out</span>
64
+
65
+ <span class="k">end</span>
66
+
67
+ <span class="k">def</span> <span class="nf">generate_file_list</span><span class="p">(</span><span class="n">excuded_items</span> <span class="o">=</span> <span class="o">[]</span><span class="p">)</span>
68
+ <span class="n">rails_files</span> <span class="o">=</span> <span class="no">Dir</span><span class="o">.</span><span class="n">glob</span><span class="p">(</span><span class="no">File</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="s2">&quot;**&quot;</span><span class="p">,</span> <span class="s2">&quot;*.rb&quot;</span><span class="p">))</span>
69
+ <span class="n">excuded_items</span><span class="o">.</span><span class="n">each</span> <span class="k">do</span> <span class="o">|</span><span class="n">excluded</span><span class="o">|</span>
70
+ <span class="n">rails_files</span><span class="o">.</span><span class="n">delete_if</span><span class="p">{</span><span class="o">|</span><span class="n">x</span><span class="o">|</span> <span class="n">x</span><span class="o">.</span><span class="n">include?</span><span class="p">(</span><span class="n">excluded</span><span class="p">)}</span>
71
+ <span class="k">end</span>
72
+ <span class="n">rails_files</span>
73
+ <span class="k">end</span></pre></div>
74
+ </td>
75
+ </tr>
76
+ <tr id='section-3'>
77
+ <td class=docs>
78
+ <div class="pilwrap">
79
+ <a class="pilcrow" href="#section-3">&#182;</a>
80
+ </div>
81
+ <p>http://stackoverflow.com/questions/760233/generate-a-file-list-based-on-an-array</p>
82
+
83
+ </td>
84
+ <td class=code>
85
+ <div class='highlight'><pre> <span class="k">def</span> <span class="nf">generate_menu</span><span class="p">(</span><span class="n">path</span><span class="p">)</span>
86
+
87
+ <span class="n">old_pwd</span> <span class="o">=</span> <span class="no">Dir</span><span class="o">.</span><span class="n">pwd</span>
88
+ <span class="no">Dir</span><span class="o">.</span><span class="n">chdir</span><span class="p">(</span><span class="n">path</span><span class="p">)</span>
89
+ <span class="n">dirs</span> <span class="o">=</span> <span class="no">Dir</span><span class="o">[</span><span class="s2">&quot;**/*.html&quot;</span><span class="o">]</span>
90
+ <span class="no">Dir</span><span class="o">.</span><span class="n">chdir</span><span class="p">(</span><span class="n">old_pwd</span><span class="p">)</span>
91
+
92
+ <span class="n">tree</span> <span class="o">=</span> <span class="p">{}</span>
93
+ <span class="n">menu</span> <span class="o">=</span> <span class="s2">&quot;&quot;</span>
94
+
95
+ <span class="n">dirs</span><span class="o">.</span><span class="n">each</span> <span class="k">do</span> <span class="o">|</span><span class="n">path</span><span class="o">|</span>
96
+ <span class="n">current</span> <span class="o">=</span> <span class="n">tree</span>
97
+ <span class="n">path</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s2">&quot;/&quot;</span><span class="p">)</span><span class="o">.</span><span class="n">inject</span><span class="p">(</span><span class="s2">&quot;&quot;</span><span class="p">)</span> <span class="k">do</span> <span class="o">|</span><span class="n">sub_path</span><span class="p">,</span><span class="n">dir</span><span class="o">|</span>
98
+ <span class="n">sub_path</span> <span class="o">=</span> <span class="n">sub_path</span><span class="o">[</span><span class="mi">0</span><span class="o">]</span> <span class="o">==</span> <span class="p">(</span><span class="s2">&quot;/&quot;</span><span class="p">)</span> <span class="p">?</span> <span class="n">sub_path</span><span class="o">[</span><span class="mi">1</span><span class="o">.</span><span class="n">.</span><span class="o">-</span><span class="mi">1</span><span class="o">]</span> <span class="p">:</span> <span class="n">sub_path</span>
99
+ <span class="n">sub_path</span> <span class="o">=</span> <span class="no">File</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">sub_path</span><span class="p">,</span> <span class="n">dir</span><span class="p">)</span>
100
+ <span class="n">current</span><span class="o">[</span><span class="n">sub_path</span><span class="o">]</span> <span class="o">||=</span> <span class="p">{}</span>
101
+ <span class="n">current</span> <span class="o">=</span> <span class="n">current</span><span class="o">[</span><span class="n">sub_path</span><span class="o">]</span>
102
+ <span class="n">sub_path</span>
103
+ <span class="k">end</span>
104
+ <span class="k">end</span>
105
+ <span class="k">return</span> <span class="n">print_tree</span><span class="p">(</span><span class="n">tree</span><span class="p">)</span>
106
+ <span class="k">end</span>
107
+
108
+
109
+ <span class="kp">protected</span>
110
+
111
+ <span class="k">def</span> <span class="nf">print_tree</span><span class="p">(</span><span class="n">node</span><span class="p">)</span>
112
+ <span class="n">out</span> <span class="o">=</span> <span class="s2">&quot;&quot;</span>
113
+ <span class="n">out</span> <span class="o">+=</span> <span class="s2">&quot;&lt;ul&gt;&quot;</span>
114
+ <span class="n">node</span><span class="o">.</span><span class="n">each_pair</span> <span class="k">do</span> <span class="o">|</span><span class="n">path</span><span class="p">,</span> <span class="n">subtree</span><span class="o">|</span>
115
+ <span class="n">out</span> <span class="o">+=</span> <span class="n">path</span><span class="o">.</span><span class="n">end_with?</span><span class="p">(</span><span class="s2">&quot;.html&quot;</span><span class="p">)</span> <span class="p">?</span> <span class="s2">&quot;&lt;li&gt; &lt;a href=&#39;</span><span class="si">#{</span><span class="n">path</span><span class="si">}</span><span class="s2">&#39;&gt; </span><span class="si">#{</span><span class="no">File</span><span class="o">.</span><span class="n">basename</span><span class="p">(</span><span class="n">path</span><span class="p">)</span><span class="si">}</span><span class="s2">&lt;/a&gt;&quot;</span> <span class="p">:</span> <span class="s2">&quot;&lt;li&gt;</span><span class="si">#{</span><span class="no">File</span><span class="o">.</span><span class="n">basename</span><span class="p">(</span><span class="n">path</span><span class="p">)</span><span class="si">}</span><span class="s2">&quot;</span>
116
+ <span class="n">out</span> <span class="o">+=</span> <span class="n">print_tree</span><span class="p">(</span><span class="n">subtree</span><span class="p">)</span> <span class="k">unless</span> <span class="n">subtree</span><span class="o">.</span><span class="n">empty?</span>
117
+ <span class="k">end</span>
118
+ <span class="n">out</span> <span class="o">+=</span> <span class="s2">&quot;&lt;/li&gt;&lt;/ul&gt;&quot;</span>
119
+ <span class="k">return</span> <span class="n">out</span>
120
+ <span class="k">end</span>
121
+
122
+
123
+ <span class="k">end</span>
124
+ <span class="k">end</span></pre></div>
125
+ </td>
126
+ </tr>
127
+ </table>
128
+ </div>
129
+ </body>
@@ -0,0 +1,53 @@
1
+ <!DOCTYPE html>
2
+ <html>
3
+ <head>
4
+ <meta http-equiv="content-type" content="text/html;charset=utf-8">
5
+ <title>railtie.rb</title>
6
+ <link rel='stylesheet' href='/Users/mmarin/Work/rocco_rails/docs/resources/rocco.css'>
7
+
8
+ </head>
9
+ <body>
10
+
11
+ <div id='container'>
12
+ <div id="background"></div>
13
+ <table cellspacing=0 cellpadding=0>
14
+ <thead>
15
+ <tr>
16
+
17
+ <th class='docs'>
18
+ <h1>railtie.rb</h1>
19
+ <p class=hint> lib/rocco_rails/railtie.rb </p>
20
+ </th>
21
+
22
+ <th class=code>
23
+ </th>
24
+ </tr>
25
+ </thead>
26
+ <tbody>
27
+
28
+ </tr>
29
+ <tr id='section-1'>
30
+ <td class=docs>
31
+ <div class="pilwrap">
32
+ <a class="pilcrow" href="#section-1">&#182;</a>
33
+ </div>
34
+ <p>From http://blog.nathanhumbert.com/2010/02/rails-3-loading-rake-tasks-from-gem.html</p>
35
+
36
+ </td>
37
+ <td class=code>
38
+ <div class='highlight'><pre><span class="nb">require</span> <span class="s1">&#39;rocco_rails&#39;</span>
39
+ <span class="nb">require</span> <span class="s1">&#39;rails&#39;</span>
40
+ <span class="k">module</span> <span class="nn">RoccoRails</span>
41
+ <span class="k">class</span> <span class="nc">Railtie</span> <span class="o">&lt;</span> <span class="no">Rails</span><span class="o">::</span><span class="no">Railtie</span>
42
+ <span class="n">railtie_name</span> <span class="ss">:rocco_rails</span>
43
+
44
+ <span class="n">rake_tasks</span> <span class="k">do</span>
45
+ <span class="nb">load</span> <span class="s2">&quot;tasks/rails_tasks.rake&quot;</span>
46
+ <span class="k">end</span>
47
+ <span class="k">end</span>
48
+ <span class="k">end</span></pre></div>
49
+ </td>
50
+ </tr>
51
+ </table>
52
+ </div>
53
+ </body>
@@ -0,0 +1,31 @@
1
+ <!DOCTYPE html>
2
+ <html>
3
+ <head>
4
+ <meta http-equiv="content-type" content="text/html;charset=utf-8">
5
+ <title>version.rb</title>
6
+ <link rel='stylesheet' href='/Users/mmarin/Work/rocco_rails/docs/resources/rocco.css'>
7
+
8
+ </head>
9
+ <body>
10
+
11
+ <div id='container'>
12
+ <div id="background"></div>
13
+ <table cellspacing=0 cellpadding=0>
14
+ <thead>
15
+ <tr>
16
+
17
+ <th class='docs'>
18
+ <h1>version.rb</h1>
19
+ <p class=hint> lib/rocco_rails/version.rb </p>
20
+ </th>
21
+
22
+ <th class=code>
23
+ </th>
24
+ </tr>
25
+ </thead>
26
+ <tbody>
27
+
28
+ </tr>
29
+ </table>
30
+ </div>
31
+ </body>
@@ -0,0 +1,136 @@
1
+ <!DOCTYPE html>
2
+ <html>
3
+ <head>
4
+ <meta http-equiv="content-type" content="text/html;charset=utf-8">
5
+ <title>rails_tasks.rake</title>
6
+ <link rel='stylesheet' href='/Users/mmarin/Work/rocco_rails/docs/resources/rocco.css'>
7
+
8
+ </head>
9
+ <body>
10
+
11
+ <div id='container'>
12
+ <div id="background"></div>
13
+ <table cellspacing=0 cellpadding=0>
14
+ <thead>
15
+ <tr>
16
+
17
+ <th class='docs'>
18
+ <h1>rails_tasks.rake</h1>
19
+ <p class=hint> lib/tasks/rails_tasks.rake </p>
20
+ </th>
21
+
22
+ <th class=code>
23
+ </th>
24
+ </tr>
25
+ </thead>
26
+ <tbody>
27
+
28
+ </tr>
29
+ <tr id='section-1'>
30
+ <td class=docs>
31
+ <div class="pilwrap">
32
+ <a class="pilcrow" href="#section-1">&#182;</a>
33
+ </div>
34
+ <p>Taken from https://github.com/hotsh/rstat.us/blob/master/lib/tasks/rocco.rake and
35
+ https://github.com/rtomayko/rocco/blob/master/lib/rocco/tasks.rb</p>
36
+ </td>
37
+ <td class=code>
38
+ <div class='highlight'><pre><span class="nb">require</span> <span class="s1">&#39;rocco/tasks&#39;</span>
39
+ <span class="nb">require</span> <span class="s1">&#39;erb&#39;</span>
40
+
41
+ <span class="n">namespace</span> <span class="ss">:rails</span> <span class="k">do</span></pre></div>
42
+ </td>
43
+ </tr>
44
+ <tr id='section-2'>
45
+ <td class=docs>
46
+ <div class="pilwrap">
47
+ <a class="pilcrow" href="#section-2">&#182;</a>
48
+ </div>
49
+ <p>If exists a config/rocco.yml in rails path use it</p>
50
+ </td>
51
+ <td class=code>
52
+ <div class='highlight'><pre> <span class="k">def</span> <span class="nf">load_config</span>
53
+ <span class="vi">@gem_path</span> <span class="o">=</span> <span class="no">Gem</span><span class="o">.</span><span class="n">loaded_specs</span><span class="o">[</span><span class="s1">&#39;rocco_rails&#39;</span><span class="o">].</span><span class="n">full_gem_path</span> <span class="o">+</span> <span class="s2">&quot;/&quot;</span>
54
+ <span class="n">gem_config</span> <span class="o">=</span> <span class="no">YAML</span><span class="o">.</span><span class="n">load_file</span><span class="p">(</span><span class="vi">@gem_path</span> <span class="o">+</span> <span class="s2">&quot;lib/config/rocco.yml&quot;</span><span class="p">)</span>
55
+ <span class="k">begin</span>
56
+ <span class="vi">@base_path</span> <span class="o">=</span> <span class="no">Rails</span><span class="o">.</span><span class="n">root</span><span class="o">.</span><span class="n">to_s</span> <span class="o">+</span> <span class="s2">&quot;/&quot;</span>
57
+ <span class="n">rails_config</span> <span class="o">=</span> <span class="no">YAML</span><span class="o">.</span><span class="n">load_file</span><span class="p">(</span><span class="vi">@base_path</span> <span class="o">+</span> <span class="s2">&quot;config/rocco.yml&quot;</span><span class="p">)</span>
58
+ <span class="vi">@config</span> <span class="o">=</span> <span class="n">gem_config</span><span class="o">.</span><span class="n">merge</span><span class="p">(</span><span class="n">rails_config</span><span class="p">)</span>
59
+ <span class="k">rescue</span> <span class="no">Exception</span> <span class="o">=&gt;</span> <span class="n">e</span>
60
+ <span class="vi">@base_path</span> <span class="o">=</span> <span class="vi">@gem_path</span>
61
+ <span class="vi">@config</span> <span class="o">=</span> <span class="n">gem_config</span>
62
+ <span class="k">end</span>
63
+
64
+ <span class="vi">@out</span> <span class="o">=</span> <span class="vi">@config</span><span class="o">[</span><span class="s2">&quot;output&quot;</span><span class="o">]</span>
65
+
66
+ <span class="n">template</span> <span class="o">=</span> <span class="vi">@base_path</span> <span class="o">+</span> <span class="vi">@config</span><span class="o">[</span><span class="s2">&quot;template&quot;</span><span class="o">]</span>
67
+ <span class="vi">@template</span> <span class="o">=</span> <span class="no">File</span><span class="o">.</span><span class="n">exists?</span><span class="p">(</span><span class="n">template</span><span class="p">)</span> <span class="p">?</span> <span class="n">template</span> <span class="p">:</span> <span class="vi">@gem_path</span> <span class="o">+</span> <span class="vi">@config</span><span class="o">[</span><span class="s2">&quot;template&quot;</span><span class="o">]</span>
68
+
69
+ <span class="n">resources_path</span> <span class="o">=</span> <span class="vi">@base_path</span> <span class="o">+</span> <span class="vi">@config</span><span class="o">[</span><span class="s2">&quot;resources_path&quot;</span><span class="o">]</span>
70
+ <span class="vi">@resources_path</span> <span class="o">=</span> <span class="no">File</span><span class="o">.</span><span class="n">exists?</span><span class="p">(</span><span class="n">resources_path</span><span class="p">)</span> <span class="p">?</span> <span class="n">resources_path</span> <span class="p">:</span> <span class="vi">@gem_path</span> <span class="o">+</span> <span class="vi">@config</span><span class="o">[</span><span class="s2">&quot;resources_path&quot;</span><span class="o">]</span>
71
+
72
+ <span class="vi">@excluded_items</span> <span class="o">=</span> <span class="vi">@config</span><span class="o">[</span><span class="s2">&quot;excluded_items&quot;</span><span class="o">].</span><span class="n">split</span><span class="p">(</span><span class="s2">&quot;, &quot;</span><span class="p">)</span>
73
+
74
+ <span class="k">end</span>
75
+
76
+
77
+
78
+ <span class="n">desc</span> <span class="s1">&#39;Build rocco docs&#39;</span>
79
+ <span class="n">task</span> <span class="ss">:rocco_docs</span>
80
+
81
+ <span class="n">load_config</span>
82
+ <span class="no">Rocco</span><span class="o">::</span><span class="no">Task</span><span class="o">.</span><span class="n">new</span><span class="p">(</span><span class="ss">:rocco_docs</span><span class="p">,</span> <span class="vi">@out</span><span class="p">,</span> <span class="no">RoccoRails</span><span class="o">.</span><span class="n">generate_file_list</span><span class="p">(</span><span class="vi">@excluded_items</span><span class="p">),</span> <span class="p">{</span><span class="ss">:template_file</span> <span class="o">=&gt;</span> <span class="vi">@template</span><span class="p">,</span> <span class="ss">:stylesheet</span> <span class="o">=&gt;</span> <span class="no">RoccoRails</span><span class="o">.</span><span class="n">generate_resources</span><span class="p">(</span><span class="vi">@resources_path</span><span class="p">,</span> <span class="o">[</span><span class="no">Rails</span><span class="o">.</span><span class="n">root</span><span class="o">.</span><span class="n">to_s</span><span class="p">,</span> <span class="vi">@out</span><span class="p">,</span> <span class="s2">&quot;resources&quot;</span><span class="o">].</span><span class="n">join</span><span class="p">(</span><span class="s2">&quot;/&quot;</span><span class="p">))</span> <span class="p">})</span></pre></div>
83
+ </td>
84
+ </tr>
85
+ <tr id='section-3'>
86
+ <td class=docs>
87
+ <div class="pilwrap">
88
+ <a class="pilcrow" href="#section-3">&#182;</a>
89
+ </div>
90
+ <p>Copy resources folder to out folder</p>
91
+
92
+ </td>
93
+ <td class=code>
94
+ <div class='highlight'><pre> <span class="no">FileUtils</span><span class="o">.</span><span class="n">mkdir_p</span><span class="p">(</span><span class="vi">@out</span> <span class="o">+</span> <span class="s2">&quot;/resources&quot;</span><span class="p">)</span> <span class="k">if</span> <span class="no">Dir</span><span class="o">[</span><span class="vi">@out</span><span class="o">].</span><span class="n">blank?</span>
95
+ <span class="no">FileUtils</span><span class="o">.</span><span class="n">cp_r</span><span class="p">(</span><span class="vi">@resources_path</span><span class="p">,</span> <span class="vi">@out</span><span class="p">)</span>
96
+
97
+
98
+ <span class="n">desc</span> <span class="s1">&#39;Generates and index.html for a rocco folder&#39;</span>
99
+ <span class="n">task</span> <span class="ss">:rocco_index</span> <span class="k">do</span>
100
+ <span class="n">load_config</span>
101
+ <span class="vi">@menu</span> <span class="o">=</span> <span class="no">RoccoRails</span><span class="o">.</span><span class="n">generate_menu</span><span class="p">(</span><span class="vi">@out</span><span class="p">)</span>
102
+ <span class="vi">@title</span> <span class="o">=</span> <span class="s2">&quot;Rocco Documentation&quot;</span>
103
+ <span class="o">[</span><span class="s2">&quot;menu&quot;</span><span class="p">,</span> <span class="s2">&quot;index&quot;</span><span class="o">].</span><span class="n">each</span> <span class="k">do</span> <span class="o">|</span><span class="n">page</span><span class="o">|</span>
104
+ <span class="n">template</span> <span class="o">=</span> <span class="no">File</span><span class="o">.</span><span class="n">read</span><span class="p">(</span><span class="vi">@gem_path</span> <span class="o">+</span> <span class="s2">&quot;lib/templates/</span><span class="si">#{</span><span class="n">page</span><span class="si">}</span><span class="s2">.erb&quot;</span><span class="p">)</span>
105
+ <span class="n">html</span> <span class="o">=</span> <span class="no">ERB</span><span class="o">.</span><span class="n">new</span><span class="p">(</span><span class="n">template</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="s2">&quot;%&lt;&gt;&quot;</span><span class="p">)</span><span class="o">.</span><span class="n">result</span>
106
+ <span class="no">File</span><span class="o">.</span><span class="n">open</span><span class="p">(</span><span class="vi">@out</span> <span class="o">+</span> <span class="s2">&quot;/</span><span class="si">#{</span><span class="n">page</span><span class="si">}</span><span class="s2">.html&quot;</span><span class="p">,</span> <span class="s1">&#39;w&#39;</span><span class="p">)</span> <span class="p">{</span><span class="o">|</span><span class="n">f</span><span class="o">|</span> <span class="n">f</span><span class="o">.</span><span class="n">write</span><span class="p">(</span><span class="n">html</span><span class="p">)</span> <span class="p">}</span>
107
+ <span class="k">end</span>
108
+ <span class="no">FileUtils</span><span class="o">.</span><span class="n">cp_r</span><span class="p">(</span><span class="vi">@gem_path</span><span class="o">+</span><span class="s2">&quot;lib/templates/menu_resources/.&quot;</span><span class="p">,</span> <span class="vi">@out</span> <span class="o">+</span> <span class="s2">&quot;/resources&quot;</span><span class="p">)</span>
109
+
110
+ <span class="k">end</span>
111
+
112
+ <span class="n">desc</span> <span class="s1">&#39;Test actual config.yml&#39;</span>
113
+ <span class="n">task</span> <span class="ss">:test_rocco_config</span> <span class="k">do</span>
114
+ <span class="n">load_config</span>
115
+
116
+
117
+ <span class="nb">p</span> <span class="s2">&quot;Template exist =&gt; </span><span class="si">#{</span><span class="no">File</span><span class="o">.</span><span class="n">exists?</span><span class="p">(</span><span class="vi">@template</span><span class="p">)</span><span class="si">}</span><span class="s2">&quot;</span>
118
+ <span class="nb">p</span> <span class="s2">&quot;Resources exist =&gt; </span><span class="si">#{</span><span class="no">File</span><span class="o">.</span><span class="n">exists?</span><span class="p">(</span><span class="vi">@resources_path</span><span class="p">)</span><span class="si">}</span><span class="s2">&quot;</span>
119
+ <span class="nb">p</span> <span class="s2">&quot;List of files to generate docs =&gt; </span><span class="si">#{</span><span class="no">RoccoRails</span><span class="o">.</span><span class="n">generate_file_list</span><span class="p">(</span><span class="vi">@excluded_items</span><span class="p">)</span><span class="si">}</span><span class="s2">&quot;</span>
120
+ <span class="k">end</span>
121
+
122
+ <span class="n">desc</span> <span class="s1">&#39;Copy rocco.yml to rails config path&#39;</span>
123
+ <span class="n">task</span> <span class="ss">:rocco_setup</span> <span class="k">do</span>
124
+ <span class="n">yml_path</span> <span class="o">=</span> <span class="o">[</span><span class="no">Gem</span><span class="o">.</span><span class="n">loaded_specs</span><span class="o">[</span><span class="s1">&#39;rocco_rails&#39;</span><span class="o">].</span><span class="n">full_gem_path</span><span class="p">,</span> <span class="s2">&quot;lib&quot;</span><span class="p">,</span> <span class="s2">&quot;config&quot;</span><span class="p">,</span> <span class="s2">&quot;rocco.yml.sample&quot;</span><span class="o">].</span><span class="n">join</span><span class="p">(</span><span class="s2">&quot;/&quot;</span><span class="p">)</span>
125
+ <span class="no">FileUtils</span><span class="o">.</span><span class="n">cp</span><span class="p">(</span><span class="n">yml_path</span><span class="p">,</span> <span class="no">Rails</span><span class="o">.</span><span class="n">root</span><span class="o">.</span><span class="n">to_s</span> <span class="o">+</span> <span class="s2">&quot;/config/rocco.yml&quot;</span><span class="p">)</span>
126
+ <span class="nb">p</span> <span class="s2">&quot;rocco.yml copied to config/rocco.yml&quot;</span>
127
+ <span class="k">end</span>
128
+
129
+ <span class="n">task</span> <span class="ss">:rocco</span> <span class="o">=&gt;</span> <span class="o">[</span><span class="ss">:rocco_docs</span><span class="p">,</span> <span class="ss">:rocco_index</span><span class="o">]</span>
130
+
131
+ <span class="k">end</span></pre></div>
132
+ </td>
133
+ </tr>
134
+ </table>
135
+ </div>
136
+ </body>