codnar 0.1.64

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.
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