codnar 0.1.64

Sign up to get free protection for your applications and to get access to all the features.
Files changed (80) hide show
  1. data/ChangeLog +165 -0
  2. data/LICENSE +19 -0
  3. data/README.rdoc +32 -0
  4. data/Rakefile +66 -0
  5. data/bin/codnar-split +5 -0
  6. data/bin/codnar-weave +5 -0
  7. data/codnar.html +10945 -0
  8. data/doc/logo.png +0 -0
  9. data/doc/root.html +22 -0
  10. data/doc/story.markdown +180 -0
  11. data/doc/system.markdown +671 -0
  12. data/lib/codnar.rb +41 -0
  13. data/lib/codnar/application.rb +92 -0
  14. data/lib/codnar/cache.rb +61 -0
  15. data/lib/codnar/data/contents.js +113 -0
  16. data/lib/codnar/data/control_chunks.js +44 -0
  17. data/lib/codnar/data/style.css +95 -0
  18. data/lib/codnar/data/sunlight/README.txt +4 -0
  19. data/lib/codnar/data/sunlight/css-min.js +1 -0
  20. data/lib/codnar/data/sunlight/default.css +236 -0
  21. data/lib/codnar/data/sunlight/javascript-min.js +1 -0
  22. data/lib/codnar/data/sunlight/min.js +1 -0
  23. data/lib/codnar/data/sunlight/ruby-min.js +1 -0
  24. data/lib/codnar/data/yui/README.txt +3 -0
  25. data/lib/codnar/data/yui/base.css +132 -0
  26. data/lib/codnar/data/yui/reset.css +142 -0
  27. data/lib/codnar/formatter.rb +180 -0
  28. data/lib/codnar/grouper.rb +28 -0
  29. data/lib/codnar/gvim.rb +132 -0
  30. data/lib/codnar/hash_extensions.rb +41 -0
  31. data/lib/codnar/markdown.rb +47 -0
  32. data/lib/codnar/merger.rb +138 -0
  33. data/lib/codnar/rake.rb +41 -0
  34. data/lib/codnar/rake/split_task.rb +71 -0
  35. data/lib/codnar/rake/weave_task.rb +59 -0
  36. data/lib/codnar/rdoc.rb +9 -0
  37. data/lib/codnar/reader.rb +121 -0
  38. data/lib/codnar/scanner.rb +216 -0
  39. data/lib/codnar/split.rb +58 -0
  40. data/lib/codnar/split_configurations.rb +367 -0
  41. data/lib/codnar/splitter.rb +32 -0
  42. data/lib/codnar/string_extensions.rb +25 -0
  43. data/lib/codnar/sunlight.rb +17 -0
  44. data/lib/codnar/version.rb +8 -0
  45. data/lib/codnar/weave.rb +58 -0
  46. data/lib/codnar/weave_configurations.rb +48 -0
  47. data/lib/codnar/weaver.rb +105 -0
  48. data/lib/codnar/writer.rb +38 -0
  49. data/test/cache_computations.rb +41 -0
  50. data/test/deep_merge.rb +29 -0
  51. data/test/embed_images.rb +12 -0
  52. data/test/expand_markdown.rb +27 -0
  53. data/test/expand_rdoc.rb +20 -0
  54. data/test/format_code_gvim_configurations.rb +55 -0
  55. data/test/format_code_sunlight_configurations.rb +37 -0
  56. data/test/format_comment_configurations.rb +86 -0
  57. data/test/format_lines.rb +72 -0
  58. data/test/group_lines.rb +31 -0
  59. data/test/gvim_highlight_syntax.rb +49 -0
  60. data/test/identify_chunks.rb +32 -0
  61. data/test/lib/test_with_configurations.rb +15 -0
  62. data/test/merge_lines.rb +133 -0
  63. data/test/rake_tasks.rb +38 -0
  64. data/test/read_chunks.rb +110 -0
  65. data/test/run_application.rb +56 -0
  66. data/test/run_split.rb +38 -0
  67. data/test/run_weave.rb +75 -0
  68. data/test/scan_lines.rb +78 -0
  69. data/test/split_chunk_configurations.rb +55 -0
  70. data/test/split_code.rb +109 -0
  71. data/test/split_code_configurations.rb +73 -0
  72. data/test/split_combined_configurations.rb +114 -0
  73. data/test/split_complex_comment_configurations.rb +73 -0
  74. data/test/split_documentation.rb +92 -0
  75. data/test/split_documentation_configurations.rb +97 -0
  76. data/test/split_simple_comment_configurations.rb +50 -0
  77. data/test/sunlight_highlight_syntax.rb +25 -0
  78. data/test/weave_configurations.rb +144 -0
  79. data/test/write_chunks.rb +28 -0
  80. metadata +363 -0
@@ -0,0 +1,97 @@
1
+ require "codnar"
2
+ require "olag/test"
3
+ require "test/spec"
4
+ require "test_with_configurations"
5
+
6
+ # Test the built-in split documentation configurations.
7
+ class TestSplitDocumentationConfigurations < Test::Unit::TestCase
8
+
9
+ include Test::WithConfigurations
10
+ include Test::WithErrors
11
+ #!include Test::WithFakeFS - until FakeFS fixes the tempfile issue.
12
+ include Test::WithTempfile
13
+
14
+ HTML_FILE = <<-EOF.unindent #! ((( html
15
+ <p>This is an
16
+ HTML file.</p>
17
+ EOF
18
+ # ))) html
19
+
20
+ def test_split_html_documentation
21
+ check_split_file(HTML_FILE, Codnar::Configuration::SPLIT_HTML_DOCUMENTATION) do |path|
22
+ [ {
23
+ "name" => path,
24
+ "locations" => [ { "file" => path, "line" => 1 } ],
25
+ "containers" => [],
26
+ "contained" => [],
27
+ "html" => HTML_FILE.chomp
28
+ } ]
29
+ end
30
+ end
31
+
32
+ PRE_FILE = <<-EOF.unindent
33
+ This is a preformatted
34
+ raw text file.
35
+ EOF
36
+
37
+ def test_split_pre_documentation
38
+ check_split_file(PRE_FILE, Codnar::Configuration::SPLIT_PRE_DOCUMENTATION) do |path|
39
+ [ {
40
+ "name" => path,
41
+ "locations" => [ { "file" => path, "line" => 1 } ],
42
+ "containers" => [],
43
+ "contained" => [],
44
+ "html" => "<pre class='doc'>\n" + PRE_FILE + "</pre>"
45
+ } ]
46
+ end
47
+ end
48
+
49
+ MARKUP_FILE = <<-EOF.unindent
50
+ This is a
51
+ *marked-up* file.
52
+ EOF
53
+
54
+ RDOC_HTML = <<-EOF.unindent.chomp #! ((( html
55
+ <div class='rdoc doc markup'>
56
+ <p>
57
+ This is a <b>marked-up</b> file.
58
+ </p>
59
+ </div>
60
+ EOF
61
+ # ))) html
62
+
63
+ def test_split_rdoc_documentation
64
+ check_split_file(MARKUP_FILE, Codnar::Configuration::SPLIT_RDOC_DOCUMENTATION) do |path|
65
+ [ {
66
+ "name" => path,
67
+ "locations" => [ { "file" => path, "line" => 1 } ],
68
+ "containers" => [],
69
+ "contained" => [],
70
+ "html" => RDOC_HTML,
71
+ } ]
72
+ end
73
+ end
74
+
75
+ MARKDOWN_HTML = <<-EOF.unindent.chomp #! ((( html
76
+ <div class='markdown doc markup'>
77
+ <p>
78
+ This is a
79
+ <em>marked-up</em> file.
80
+ </p>
81
+ </div>
82
+ EOF
83
+ #! ))) html
84
+
85
+ def test_split_markdown_documentation
86
+ check_split_file(MARKUP_FILE, Codnar::Configuration::SPLIT_MARKDOWN_DOCUMENTATION) do |path|
87
+ [ {
88
+ "name" => path,
89
+ "locations" => [ { "file" => path, "line" => 1 } ],
90
+ "containers" => [],
91
+ "contained" => [],
92
+ "html" => MARKDOWN_HTML,
93
+ } ]
94
+ end
95
+ end
96
+
97
+ end
@@ -0,0 +1,50 @@
1
+ require "codnar"
2
+ require "olag/test"
3
+ require "test/spec"
4
+ require "test_with_configurations"
5
+
6
+ # Test built-in split simple comment configurations.
7
+ class TestSplitSimpleCommentsConfigurations < Test::Unit::TestCase
8
+
9
+ include Test::WithConfigurations
10
+ include Test::WithErrors
11
+ include Test::WithTempfile
12
+
13
+ def test_custom_comments
14
+ check_any_comment("!", Codnar::Configuration::CLASSIFY_SIMPLE_COMMENTS.call("!"))
15
+ end
16
+
17
+ def test_shell_comments
18
+ check_any_comment("#", Codnar::Configuration::CLASSIFY_SHELL_COMMENTS.call)
19
+ end
20
+
21
+ def test_cpp_comments
22
+ check_any_comment("//", Codnar::Configuration::CLASSIFY_CPP_COMMENTS.call)
23
+ end
24
+
25
+ protected
26
+
27
+ # The "?" will be replaced by the simple comment prefix.
28
+ ANY_COMMENT_CODE = <<-EOF.unindent
29
+ ?
30
+ ? Comment
31
+ Code
32
+ ?! Not comment
33
+ EOF
34
+
35
+ def check_any_comment(prefix, configuration)
36
+ check_split_file(ANY_COMMENT_CODE.gsub("?", prefix),
37
+ Codnar::Configuration::CLASSIFY_SOURCE_CODE.call("any"),
38
+ Codnar::Configuration::FORMAT_PRE_COMMENTS,
39
+ configuration) do |path|
40
+ [ {
41
+ "name" => path,
42
+ "locations" => [ { "file" => path, "line" => 1 } ],
43
+ "containers" => [],
44
+ "contained" => [],
45
+ "html" => "<pre class='comment'>\n\nComment\n</pre>\n<pre class='code'>\nCode\n#{prefix}! Not comment\n</pre>"
46
+ } ]
47
+ end
48
+ end
49
+
50
+ end
@@ -0,0 +1,25 @@
1
+ require "codnar"
2
+ require "test/spec"
3
+
4
+ # Test highlighting syntax using Sunlight.
5
+ class TestSunlightHighlightSyntax < Test::Unit::TestCase
6
+
7
+ def test_sunlight_lines
8
+ Codnar::Sunlight.lines_to_html([
9
+ { "kind" => "ruby_code", "number" => 1, "indentation" => "", "payload" => "def foo" },
10
+ { "kind" => "ruby_code", "number" => 2, "indentation" => " ", "payload" => "return 1" },
11
+ { "kind" => "ruby_code", "number" => 3, "indentation" => "", "payload" => "end" },
12
+ ], "ruby").should == [
13
+ { "kind" => "html", "number" => 1,
14
+ "payload" => <<-EOF.unindent.chomp
15
+ <pre class='sunlight-highlight-ruby'>
16
+ def foo
17
+ return 1
18
+ end
19
+ </pre>
20
+ EOF
21
+ },
22
+ ]
23
+ end
24
+
25
+ end
@@ -0,0 +1,144 @@
1
+ require "codnar"
2
+ require "olag/test"
3
+ require "test/spec"
4
+
5
+ # Test the built-in weave configurations.
6
+ class TestWeaveConfigurations < Test::Unit::TestCase
7
+
8
+ include Test::WithErrors
9
+ include Test::WithFakeFS
10
+
11
+ def test_weave_file
12
+ Codnar::Writer.write("chunks", {
13
+ "locations" => [ "file" => "chunk" ], "containers" => [], "contained" => [],
14
+ "name" => "Top", "html" => <<-EOF.unindent,
15
+ <h1>Top</h1>
16
+ <embed src="path" type="x-codnar/file"/>
17
+ EOF
18
+ })
19
+ File.open("path", "w") { |file| file.puts("<h2>File</h2>") }
20
+ html = Codnar::Weaver.new(@errors, [ "chunks" ], Codnar::Configuration::WEAVE_INCLUDE).weave("include", "top")
21
+ @errors.should == []
22
+ html.should == <<-EOF.unindent
23
+ <h1>Top</h1>
24
+ <h2>File</h2>
25
+ EOF
26
+ end
27
+
28
+ def test_weave_include
29
+ Codnar::Writer.write("chunks", chunks("include"))
30
+ html = Codnar::Weaver.new(@errors, [ "chunks" ], Codnar::Configuration::WEAVE_INCLUDE).weave("include", "top")
31
+ @errors.should == []
32
+ html.should == <<-EOF.unindent #! ((( html
33
+ <h1>Top</h1>
34
+ <h2>Intermediate</h2>
35
+ <h3>Bottom</h3>
36
+ EOF
37
+ #! ))) html
38
+ end
39
+
40
+ WOVEN_PLAIN_CHUNK = <<-EOF.unindent #! ((( html
41
+ <div class="plain chunk">
42
+ <a name="top"/>
43
+ <h1>Top</h1>
44
+ <div class="plain chunk">
45
+ <a name="intermediate"/>
46
+ <h2>Intermediate</h2>
47
+ <div class="plain chunk">
48
+ <a name="bottom"/>
49
+ <h3>Bottom</h3>
50
+ </div>
51
+ </div>
52
+ </div>
53
+ EOF
54
+ #! ))) html
55
+
56
+ def test_weave_plain_chunk
57
+ Codnar::Writer.write("chunks", chunks("plain_chunk"))
58
+ html = Codnar::Weaver.new(@errors, [ "chunks" ], Codnar::Configuration::WEAVE_PLAIN_CHUNK).weave("plain_chunk", "top")
59
+ @errors.should == []
60
+ html.should == WOVEN_PLAIN_CHUNK
61
+ end
62
+
63
+ # Normally, one does not nest named_chunk_with_containers chunks this
64
+ # way, but it serves as a test.
65
+ WOVEN_NAMED_CHUNK = <<-EOF.unindent #! ((( html
66
+ <div class="named_with_containers chunk">
67
+ <div class="chunk name">
68
+ <a name="top">
69
+ <span>Top</span>
70
+ </a>
71
+ </div>
72
+ <div class="chunk html">
73
+ <h1>Top</h1>
74
+ <div class="named_with_containers chunk">
75
+ <div class="chunk name">
76
+ <a name="intermediate">
77
+ <span>Intermediate</span>
78
+ </a>
79
+ </div>
80
+ <div class="chunk html">
81
+ <h2>Intermediate</h2>
82
+ <div class="named_with_containers chunk">
83
+ <div class="chunk name">
84
+ <a name="bottom">
85
+ <span>BOTTOM</span>
86
+ </a>
87
+ </div>
88
+ <div class="chunk html">
89
+ <h3>Bottom</h3>
90
+ </div>
91
+ <div class="chunk containers">
92
+ <span class="chunk containers header">Contained in:</span>
93
+ <ul class="chunk containers">
94
+ <li class="chunk container">
95
+ <a class="chunk container" href="#intermediate">Intermediate</a>
96
+ </li>
97
+ </ul>
98
+ </div>
99
+ </div>
100
+ </div>
101
+ <div class="chunk containers">
102
+ <span class="chunk containers header">Contained in:</span>
103
+ <ul class="chunk containers">
104
+ <li class="chunk container">
105
+ <a class="chunk container" href="#top">Top</a>
106
+ </li>
107
+ </ul>
108
+ </div>
109
+ </div>
110
+ </div>
111
+ </div>
112
+ EOF
113
+ #! ))) html
114
+
115
+ def test_weave_named_chunk_with_containers
116
+ Codnar::Writer.write("chunks", chunks("named_chunk_with_containers"))
117
+ weaver = Codnar::Weaver.new(@errors, [ "chunks" ], Codnar::Configuration::WEAVE_NAMED_CHUNK_WITH_CONTAINERS)
118
+ html = weaver.weave("named_chunk_with_containers", "top")
119
+ @errors.should == []
120
+ html.should == WOVEN_NAMED_CHUNK
121
+ end
122
+
123
+ protected
124
+
125
+ def chunks(template)
126
+ return [
127
+ { "locations" => [ "file" => "chunk" ], "containers" => [ "Intermediate" ], "contained" => [],
128
+ "name" => "BOTTOM", "html" => "<h3>Bottom</h3>\n", },
129
+ { "locations" => [ "file" => "chunk" ], "containers" => [ "Top" ], "contained" => [ "BOTTOM" ],
130
+ "name" => "Intermediate", "html" => <<-EOF.unindent, #! ((( html
131
+ <h2>Intermediate</h2>
132
+ <embed type='x-codnar/#{template}' src='bottom'>
133
+ </embed>
134
+ EOF
135
+ }, { #! ))) html
136
+ "locations" => [ "file" => "chunk" ], "containers" => [], "contained" => [ "Intermediate" ],
137
+ "name" => "Top", "html" => <<-EOF.unindent, #! ((( html
138
+ <h1>Top</h1>
139
+ <embed src="##INTERMEDIATE" type="x-codnar/#{template}"/>
140
+ EOF
141
+ } ] #! ))) html
142
+ end
143
+
144
+ end
@@ -0,0 +1,28 @@
1
+ require "codnar"
2
+ require "olag/test"
3
+ require "test/spec"
4
+
5
+ # Test writing chunks to files.
6
+ class TestWriteChunks < Test::Unit::TestCase
7
+
8
+ include Test::WithFakeFS
9
+
10
+ def test_write_chunks
11
+ check_writing_data([])
12
+ check_writing_data("name" => "foo")
13
+ check_writing_data([ { "name" => "foo" }, { "name" => "bar" } ])
14
+ end
15
+
16
+ def test_write_invalid_data
17
+ lambda { check_writing_data("not a chunk") }.should.raise
18
+ end
19
+
20
+ protected
21
+
22
+ def check_writing_data(data)
23
+ Codnar::Writer.write("path", data)
24
+ data = [ data ] unless Array === data
25
+ YAML.load_file("path").should == data
26
+ end
27
+
28
+ end
metadata ADDED
@@ -0,0 +1,363 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: codnar
3
+ version: !ruby/object:Gem::Version
4
+ hash: 155
5
+ prerelease:
6
+ segments:
7
+ - 0
8
+ - 1
9
+ - 64
10
+ version: 0.1.64
11
+ platform: ruby
12
+ authors:
13
+ - Oren Ben-Kiki
14
+ autorequire:
15
+ bindir: bin
16
+ cert_chain: []
17
+
18
+ date: 2011-04-22 00:00:00 Z
19
+ dependencies:
20
+ - !ruby/object:Gem::Dependency
21
+ name: andand
22
+ prerelease: false
23
+ requirement: &id001 !ruby/object:Gem::Requirement
24
+ none: false
25
+ requirements:
26
+ - - ">="
27
+ - !ruby/object:Gem::Version
28
+ hash: 3
29
+ segments:
30
+ - 0
31
+ version: "0"
32
+ type: :runtime
33
+ version_requirements: *id001
34
+ - !ruby/object:Gem::Dependency
35
+ name: rdiscount
36
+ prerelease: false
37
+ requirement: &id002 !ruby/object:Gem::Requirement
38
+ none: false
39
+ requirements:
40
+ - - ">="
41
+ - !ruby/object:Gem::Version
42
+ hash: 3
43
+ segments:
44
+ - 0
45
+ version: "0"
46
+ type: :runtime
47
+ version_requirements: *id002
48
+ - !ruby/object:Gem::Dependency
49
+ name: olag
50
+ prerelease: false
51
+ requirement: &id003 !ruby/object:Gem::Requirement
52
+ none: false
53
+ requirements:
54
+ - - ">="
55
+ - !ruby/object:Gem::Version
56
+ hash: 3
57
+ segments:
58
+ - 0
59
+ version: "0"
60
+ type: :runtime
61
+ version_requirements: *id003
62
+ - !ruby/object:Gem::Dependency
63
+ name: Saikuro
64
+ prerelease: false
65
+ requirement: &id004 !ruby/object:Gem::Requirement
66
+ none: false
67
+ requirements:
68
+ - - ">="
69
+ - !ruby/object:Gem::Version
70
+ hash: 3
71
+ segments:
72
+ - 0
73
+ version: "0"
74
+ type: :development
75
+ version_requirements: *id004
76
+ - !ruby/object:Gem::Dependency
77
+ name: codnar
78
+ prerelease: false
79
+ requirement: &id005 !ruby/object:Gem::Requirement
80
+ none: false
81
+ requirements:
82
+ - - ">="
83
+ - !ruby/object:Gem::Version
84
+ hash: 3
85
+ segments:
86
+ - 0
87
+ version: "0"
88
+ type: :development
89
+ version_requirements: *id005
90
+ - !ruby/object:Gem::Dependency
91
+ name: fakefs
92
+ prerelease: false
93
+ requirement: &id006 !ruby/object:Gem::Requirement
94
+ none: false
95
+ requirements:
96
+ - - ">="
97
+ - !ruby/object:Gem::Version
98
+ hash: 3
99
+ segments:
100
+ - 0
101
+ version: "0"
102
+ type: :development
103
+ version_requirements: *id006
104
+ - !ruby/object:Gem::Dependency
105
+ name: flay
106
+ prerelease: false
107
+ requirement: &id007 !ruby/object:Gem::Requirement
108
+ none: false
109
+ requirements:
110
+ - - ">="
111
+ - !ruby/object:Gem::Version
112
+ hash: 3
113
+ segments:
114
+ - 0
115
+ version: "0"
116
+ type: :development
117
+ version_requirements: *id007
118
+ - !ruby/object:Gem::Dependency
119
+ name: rake
120
+ prerelease: false
121
+ requirement: &id008 !ruby/object:Gem::Requirement
122
+ none: false
123
+ requirements:
124
+ - - ">="
125
+ - !ruby/object:Gem::Version
126
+ hash: 3
127
+ segments:
128
+ - 0
129
+ version: "0"
130
+ type: :development
131
+ version_requirements: *id008
132
+ - !ruby/object:Gem::Dependency
133
+ name: rcov
134
+ prerelease: false
135
+ requirement: &id009 !ruby/object:Gem::Requirement
136
+ none: false
137
+ requirements:
138
+ - - ">="
139
+ - !ruby/object:Gem::Version
140
+ hash: 3
141
+ segments:
142
+ - 0
143
+ version: "0"
144
+ type: :development
145
+ version_requirements: *id009
146
+ - !ruby/object:Gem::Dependency
147
+ name: rdoc
148
+ prerelease: false
149
+ requirement: &id010 !ruby/object:Gem::Requirement
150
+ none: false
151
+ requirements:
152
+ - - ">="
153
+ - !ruby/object:Gem::Version
154
+ hash: 3
155
+ segments:
156
+ - 0
157
+ version: "0"
158
+ type: :development
159
+ version_requirements: *id010
160
+ - !ruby/object:Gem::Dependency
161
+ name: reek
162
+ prerelease: false
163
+ requirement: &id011 !ruby/object:Gem::Requirement
164
+ none: false
165
+ requirements:
166
+ - - ">="
167
+ - !ruby/object:Gem::Version
168
+ hash: 3
169
+ segments:
170
+ - 0
171
+ version: "0"
172
+ type: :development
173
+ version_requirements: *id011
174
+ - !ruby/object:Gem::Dependency
175
+ name: roodi
176
+ prerelease: false
177
+ requirement: &id012 !ruby/object:Gem::Requirement
178
+ none: false
179
+ requirements:
180
+ - - ">="
181
+ - !ruby/object:Gem::Version
182
+ hash: 3
183
+ segments:
184
+ - 0
185
+ version: "0"
186
+ type: :development
187
+ version_requirements: *id012
188
+ - !ruby/object:Gem::Dependency
189
+ name: test-spec
190
+ prerelease: false
191
+ requirement: &id013 !ruby/object:Gem::Requirement
192
+ none: false
193
+ requirements:
194
+ - - ">="
195
+ - !ruby/object:Gem::Version
196
+ hash: 3
197
+ segments:
198
+ - 0
199
+ version: "0"
200
+ type: :development
201
+ version_requirements: *id013
202
+ description: Code Narrator (Codnar) is an inverse literate programming tool. It splits the source files into "chunks" (including structured comments) and weaves them back into a narrative that describes the overall system.
203
+ email: rubygems-oren@ben-kiki.org
204
+ executables:
205
+ - codnar-split
206
+ - codnar-weave
207
+ extensions: []
208
+
209
+ extra_rdoc_files:
210
+ - README.rdoc
211
+ - LICENSE
212
+ - ChangeLog
213
+ files:
214
+ - lib/codnar/application.rb
215
+ - lib/codnar/cache.rb
216
+ - lib/codnar/data/contents.js
217
+ - lib/codnar/data/control_chunks.js
218
+ - lib/codnar/data/style.css
219
+ - lib/codnar/data/sunlight/css-min.js
220
+ - lib/codnar/data/sunlight/default.css
221
+ - lib/codnar/data/sunlight/javascript-min.js
222
+ - lib/codnar/data/sunlight/min.js
223
+ - lib/codnar/data/sunlight/README.txt
224
+ - lib/codnar/data/sunlight/ruby-min.js
225
+ - lib/codnar/data/yui/base.css
226
+ - lib/codnar/data/yui/README.txt
227
+ - lib/codnar/data/yui/reset.css
228
+ - lib/codnar/formatter.rb
229
+ - lib/codnar/grouper.rb
230
+ - lib/codnar/gvim.rb
231
+ - lib/codnar/hash_extensions.rb
232
+ - lib/codnar/markdown.rb
233
+ - lib/codnar/merger.rb
234
+ - lib/codnar/rake/split_task.rb
235
+ - lib/codnar/rake/weave_task.rb
236
+ - lib/codnar/rake.rb
237
+ - lib/codnar/rdoc.rb
238
+ - lib/codnar/reader.rb
239
+ - lib/codnar/scanner.rb
240
+ - lib/codnar/split.rb
241
+ - lib/codnar/splitter.rb
242
+ - lib/codnar/split_configurations.rb
243
+ - lib/codnar/string_extensions.rb
244
+ - lib/codnar/sunlight.rb
245
+ - lib/codnar/version.rb
246
+ - lib/codnar/weave.rb
247
+ - lib/codnar/weaver.rb
248
+ - lib/codnar/weave_configurations.rb
249
+ - lib/codnar/writer.rb
250
+ - lib/codnar.rb
251
+ - doc/logo.png
252
+ - doc/root.html
253
+ - doc/story.markdown
254
+ - doc/system.markdown
255
+ - Rakefile
256
+ - codnar.html
257
+ - test/cache_computations.rb
258
+ - test/deep_merge.rb
259
+ - test/embed_images.rb
260
+ - test/expand_markdown.rb
261
+ - test/expand_rdoc.rb
262
+ - test/format_code_gvim_configurations.rb
263
+ - test/format_code_sunlight_configurations.rb
264
+ - test/format_comment_configurations.rb
265
+ - test/format_lines.rb
266
+ - test/group_lines.rb
267
+ - test/gvim_highlight_syntax.rb
268
+ - test/identify_chunks.rb
269
+ - test/lib/test_with_configurations.rb
270
+ - test/merge_lines.rb
271
+ - test/rake_tasks.rb
272
+ - test/read_chunks.rb
273
+ - test/run_application.rb
274
+ - test/run_split.rb
275
+ - test/run_weave.rb
276
+ - test/scan_lines.rb
277
+ - test/split_chunk_configurations.rb
278
+ - test/split_code.rb
279
+ - test/split_code_configurations.rb
280
+ - test/split_combined_configurations.rb
281
+ - test/split_complex_comment_configurations.rb
282
+ - test/split_documentation.rb
283
+ - test/split_documentation_configurations.rb
284
+ - test/split_simple_comment_configurations.rb
285
+ - test/sunlight_highlight_syntax.rb
286
+ - test/weave_configurations.rb
287
+ - test/write_chunks.rb
288
+ - bin/codnar-split
289
+ - bin/codnar-weave
290
+ - README.rdoc
291
+ - LICENSE
292
+ - ChangeLog
293
+ homepage: https://rubygems.org/gems/codnar
294
+ licenses: []
295
+
296
+ post_install_message:
297
+ rdoc_options:
298
+ - --title
299
+ - Code Narrator 0.1.64
300
+ - --main
301
+ - README.rdoc
302
+ - --line-numbers
303
+ - --all
304
+ - --quiet
305
+ require_paths:
306
+ - lib
307
+ required_ruby_version: !ruby/object:Gem::Requirement
308
+ none: false
309
+ requirements:
310
+ - - ">="
311
+ - !ruby/object:Gem::Version
312
+ hash: 3
313
+ segments:
314
+ - 0
315
+ version: "0"
316
+ required_rubygems_version: !ruby/object:Gem::Requirement
317
+ none: false
318
+ requirements:
319
+ - - ">="
320
+ - !ruby/object:Gem::Version
321
+ hash: 3
322
+ segments:
323
+ - 0
324
+ version: "0"
325
+ requirements: []
326
+
327
+ rubyforge_project:
328
+ rubygems_version: 1.7.2
329
+ signing_key:
330
+ specification_version: 3
331
+ summary: Code narrator - an inverse literate programming tool.
332
+ test_files:
333
+ - test/cache_computations.rb
334
+ - test/deep_merge.rb
335
+ - test/embed_images.rb
336
+ - test/expand_markdown.rb
337
+ - test/expand_rdoc.rb
338
+ - test/format_code_gvim_configurations.rb
339
+ - test/format_code_sunlight_configurations.rb
340
+ - test/format_comment_configurations.rb
341
+ - test/format_lines.rb
342
+ - test/group_lines.rb
343
+ - test/gvim_highlight_syntax.rb
344
+ - test/identify_chunks.rb
345
+ - test/lib/test_with_configurations.rb
346
+ - test/merge_lines.rb
347
+ - test/rake_tasks.rb
348
+ - test/read_chunks.rb
349
+ - test/run_application.rb
350
+ - test/run_split.rb
351
+ - test/run_weave.rb
352
+ - test/scan_lines.rb
353
+ - test/split_chunk_configurations.rb
354
+ - test/split_code.rb
355
+ - test/split_code_configurations.rb
356
+ - test/split_combined_configurations.rb
357
+ - test/split_complex_comment_configurations.rb
358
+ - test/split_documentation.rb
359
+ - test/split_documentation_configurations.rb
360
+ - test/split_simple_comment_configurations.rb
361
+ - test/sunlight_highlight_syntax.rb
362
+ - test/weave_configurations.rb
363
+ - test/write_chunks.rb