inch 0.0.1 → 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (101) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +2 -0
  3. data/README.md +335 -3
  4. data/Rakefile +8 -0
  5. data/TODOS.md +12 -0
  6. data/bin/inch +17 -0
  7. data/inch.gemspec +7 -2
  8. data/lib/inch.rb +6 -1
  9. data/lib/inch/cli.rb +24 -0
  10. data/lib/inch/cli/arguments.rb +45 -0
  11. data/lib/inch/cli/command.rb +29 -0
  12. data/lib/inch/cli/command/base.rb +62 -0
  13. data/lib/inch/cli/command/base_list.rb +75 -0
  14. data/lib/inch/cli/command/base_object.rb +40 -0
  15. data/lib/inch/cli/command/console.rb +22 -0
  16. data/lib/inch/cli/command/inspect.rb +20 -0
  17. data/lib/inch/cli/command/list.rb +25 -0
  18. data/lib/inch/cli/command/options/base.rb +137 -0
  19. data/lib/inch/cli/command/options/base_list.rb +84 -0
  20. data/lib/inch/cli/command/options/base_object.rb +47 -0
  21. data/lib/inch/cli/command/options/console.rb +26 -0
  22. data/lib/inch/cli/command/options/inspect.rb +25 -0
  23. data/lib/inch/cli/command/options/list.rb +30 -0
  24. data/lib/inch/cli/command/options/show.rb +27 -0
  25. data/lib/inch/cli/command/options/stats.rb +20 -0
  26. data/lib/inch/cli/command/options/suggest.rb +61 -0
  27. data/lib/inch/cli/command/output/base.rb +32 -0
  28. data/lib/inch/cli/command/output/console.rb +45 -0
  29. data/lib/inch/cli/command/output/inspect.rb +129 -0
  30. data/lib/inch/cli/command/output/list.rb +87 -0
  31. data/lib/inch/cli/command/output/show.rb +79 -0
  32. data/lib/inch/cli/command/output/stats.rb +111 -0
  33. data/lib/inch/cli/command/output/suggest.rb +104 -0
  34. data/lib/inch/cli/command/show.rb +20 -0
  35. data/lib/inch/cli/command/stats.rb +20 -0
  36. data/lib/inch/cli/command/suggest.rb +104 -0
  37. data/lib/inch/cli/command_parser.rb +82 -0
  38. data/lib/inch/cli/sparkline_helper.rb +31 -0
  39. data/lib/inch/cli/trace_helper.rb +42 -0
  40. data/lib/inch/cli/yardopts_helper.rb +49 -0
  41. data/lib/inch/code_object.rb +8 -0
  42. data/lib/inch/code_object/docstring.rb +97 -0
  43. data/lib/inch/code_object/nodoc_helper.rb +84 -0
  44. data/lib/inch/code_object/proxy.rb +37 -0
  45. data/lib/inch/code_object/proxy/base.rb +194 -0
  46. data/lib/inch/code_object/proxy/class_object.rb +9 -0
  47. data/lib/inch/code_object/proxy/constant_object.rb +8 -0
  48. data/lib/inch/code_object/proxy/method_object.rb +118 -0
  49. data/lib/inch/code_object/proxy/method_parameter_object.rb +81 -0
  50. data/lib/inch/code_object/proxy/module_object.rb +8 -0
  51. data/lib/inch/code_object/proxy/namespace_object.rb +38 -0
  52. data/lib/inch/core_ext.rb +2 -0
  53. data/lib/inch/core_ext/string.rb +3 -0
  54. data/lib/inch/core_ext/yard.rb +4 -0
  55. data/lib/inch/evaluation.rb +35 -0
  56. data/lib/inch/evaluation/base.rb +60 -0
  57. data/lib/inch/evaluation/class_object.rb +6 -0
  58. data/lib/inch/evaluation/constant_object.rb +34 -0
  59. data/lib/inch/evaluation/file.rb +66 -0
  60. data/lib/inch/evaluation/method_object.rb +127 -0
  61. data/lib/inch/evaluation/module_object.rb +6 -0
  62. data/lib/inch/evaluation/namespace_object.rb +94 -0
  63. data/lib/inch/evaluation/role/base.rb +49 -0
  64. data/lib/inch/evaluation/role/constant.rb +43 -0
  65. data/lib/inch/evaluation/role/method.rb +60 -0
  66. data/lib/inch/evaluation/role/method_parameter.rb +46 -0
  67. data/lib/inch/evaluation/role/missing.rb +20 -0
  68. data/lib/inch/evaluation/role/namespace.rb +58 -0
  69. data/lib/inch/evaluation/role/object.rb +64 -0
  70. data/lib/inch/evaluation/score_range.rb +26 -0
  71. data/lib/inch/rake.rb +1 -0
  72. data/lib/inch/rake/suggest.rb +26 -0
  73. data/lib/inch/source_parser.rb +36 -0
  74. data/lib/inch/version.rb +1 -1
  75. data/test/fixtures/code_examples/lib/foo.rb +87 -0
  76. data/test/fixtures/readme/lib/foo.rb +17 -0
  77. data/test/fixtures/simple/README +25 -0
  78. data/test/fixtures/simple/lib/broken.rb +10 -0
  79. data/test/fixtures/simple/lib/foo.rb +214 -0
  80. data/test/fixtures/simple/lib/role_methods.rb +78 -0
  81. data/test/fixtures/simple/lib/role_namespaces.rb +68 -0
  82. data/test/fixtures/visibility/lib/foo.rb +18 -0
  83. data/test/fixtures/yardopts/.yardopts +1 -0
  84. data/test/fixtures/yardopts/foo/bar.rb +6 -0
  85. data/test/inch/cli/arguments_test.rb +70 -0
  86. data/test/inch/cli/command/console_test.rb +59 -0
  87. data/test/inch/cli/command/inspect_test.rb +59 -0
  88. data/test/inch/cli/command/list_test.rb +61 -0
  89. data/test/inch/cli/command/show_test.rb +59 -0
  90. data/test/inch/cli/command/stats_test.rb +57 -0
  91. data/test/inch/cli/command/suggest_test.rb +57 -0
  92. data/test/inch/cli/command_parser_test.rb +33 -0
  93. data/test/inch/cli/yardopts_helper_test.rb +84 -0
  94. data/test/inch/code_object/docstring_test.rb +204 -0
  95. data/test/inch/code_object/nodoc_helper_test.rb +38 -0
  96. data/test/inch/code_object/proxy_test.rb +188 -0
  97. data/test/inch/source_parser_test.rb +23 -0
  98. data/test/integration/stats_options_test.rb +34 -0
  99. data/test/integration/visibility_options_test.rb +79 -0
  100. data/test/test_helper.rb +21 -0
  101. metadata +184 -7
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 56294f89d5505f0a2a580505884d549ce0a56692
4
- data.tar.gz: b665c48327c4c9f1e92c3a99c9a85b6130063f07
3
+ metadata.gz: b7567dd076efa1061ed2fe78515e1cae97bacd0c
4
+ data.tar.gz: d56dc92a462fab56c73d1693f091aec50b29ca62
5
5
  SHA512:
6
- metadata.gz: 71bd9be4a5870d7ad7e42f77eb99d19305eb9e06e914cf8ac0a532a0fac413f77aaf373f9defd10b12de4defc5f8b76ea63b34857e09aac52e7f32958ff73d6f
7
- data.tar.gz: 10437fbaebbecd3d1edf526af898115288cd5743ec04673f31b58aa323b50b3f684b6fbc1883a7370a31ca85fee519c4c51e3cafa0880ab76ad9177e1a904b41
6
+ metadata.gz: fac873dedadc24c9d3430d2c60b921bd1b3ab16a7797ab37aca149b56897b28e53bcd021b7569fb56c1a29b3f31c12a0c72150b8092e49a40e4a1383738442d6
7
+ data.tar.gz: d3648df680260a3c7c9d450f372db7ff5eeb2477d3f9feef31f6b3380d08a6291cb295a263fe291cd91fbbbc11491fc2878f35896ae8c3e931dfb364349fa826
data/Gemfile CHANGED
@@ -2,3 +2,5 @@ source 'https://rubygems.org'
2
2
 
3
3
  # Specify your gem's dependencies in inch.gemspec
4
4
  gemspec
5
+
6
+ gem 'simplecov', :require => false, :group => :test
data/README.md CHANGED
@@ -1,6 +1,12 @@
1
1
  # Inch
2
2
 
3
- TODO: Write a gem description
3
+ Inch is a documentation measurement tool for Ruby, based on
4
+ [YARD](http://yardoc.org/).
5
+
6
+ It does not measure documentation *coverage*, but grades and
7
+ prioritizes code objects to give you hints where to improve your docs.
8
+ One Inch at a time.
9
+
4
10
 
5
11
  ## Installation
6
12
 
@@ -16,14 +22,340 @@ Or install it yourself as:
16
22
 
17
23
  $ gem install inch
18
24
 
25
+
19
26
  ## Usage
20
27
 
21
- TODO: Write usage instructions here
28
+ To run Inch, simply type
29
+
30
+ $ inch
31
+
32
+ Given a `lib` directory with the following code inside:
33
+
34
+ class Foo
35
+ # A complicated method
36
+ def complicated(o, i, *args, &block)
37
+ # ... snip ...
38
+ end
39
+
40
+ # An example of a method that takes a parameter (+param1+)
41
+ # and does nothing.
42
+ #
43
+ # Returns nil
44
+ def nothing(param1)
45
+ end
46
+
47
+ def filename
48
+ "#{self.class}_#{id}.foo"
49
+ end
50
+ end
51
+
52
+ Inch will suggest that the docs could be improved:
53
+
54
+ # Properly documented, could be improved:
55
+
56
+ ┃ B ↑ Foo#complicated
57
+
58
+ # Undocumented:
59
+
60
+ ┃ U ↑ Foo
61
+ ┃ U ↗ Foo#filename
62
+
63
+ You might want to look at these files:
64
+
65
+ ┃ lib/foo.rb
66
+
67
+ Grade distribution (undocumented, C, B, A): █ ▁ ▄ ▄
68
+
69
+ Only considering priority objects: ↑ ↗ → (use `--help` for options).
70
+
71
+ Inch does not report coverage scores for code objects. It assigns grades and shows you the grade distribution rather then an overall grade.
72
+
73
+ The grades (A, B, C) show how good the present documentation seems. The grade `U` is assigned to all undocumented objects. The arrows (↑ ↗ → ↘ ↓) hint at the importance of the object being documented.
74
+
75
+
76
+ ### Inch does not judge
77
+
78
+ Inch uses grades instead of scores to take a more relaxed approach. You can
79
+ get an `A` without employing every trick from a predetermined list of checks.
80
+
81
+ The reason for using the grade distribution instead of an overall score is
82
+ that the distribution says more about your codebase than a coverage percentage
83
+ ever could:
84
+
85
+ Grade distribution (undocumented, C, B, A): ▄ ▁ ▄ █
86
+
87
+ In this example we have a good chunk of code that is still undocumented, but
88
+ the vast majority of code is rated A or B. This tells you three things:
89
+
90
+ * There is a significant amount of documentation present.
91
+ * The present documentation seems good.
92
+ * There are still undocumented methods.
93
+
94
+ Inch does not really tell you what to do from here. It suggests objects and
95
+ files that could be improved to get a better rating, but that is all.
96
+
97
+ This way, it is perfectly reasonable to leave parts of your codebase
98
+ undocumented. Instead of reporting
99
+
100
+ coverage: 67.1% 46 ouf of 140 checks failed
101
+
102
+ and leaving you with a bad feeling, Inch tells you there are still
103
+ undocumented objects without judging.
104
+
105
+ Inch does not tell you to document all your methods. Neither does it tell you
106
+ not to. It does not tell you "a method's documentation should be a single line
107
+ under 80 characters not ending in a period".
108
+
109
+
110
+
111
+ ### Limitations
112
+
113
+ How you document your code is up to you and Inch can't actually tell you how good your docs are.
114
+
115
+ It can't tell if your code examples work or if you described parameters
116
+ correctly or if you have just added `# TODO: write docs` to each and every
117
+ method.
118
+
119
+ It is just a tool, that you can use to find parts of a codebase lacking
120
+ documentation.
121
+
122
+
123
+
124
+ ## Features
125
+
126
+ Inch is build to parse [YARD](http://yardoc.org/),
127
+ [RDoc](http://rdoc.rubyforge.org/) and [TomDoc](http://tomdoc.org/)
128
+ style documentation comments, but works reasonably well with unstructured
129
+ comments.
130
+
131
+ It comes with four sub-commands: `suggest`, `stats`, `show`, and `list`
132
+
133
+
134
+
135
+ ### inch suggest
136
+
137
+ Suggests places where a codebase suffers a lack of documentation.
138
+
139
+ $ inch suggest
140
+
141
+ # Properly documented, could be improved:
142
+
143
+ ┃ B ↑ Inch::CLI::Command::BaseObject#prepare_objects
144
+ ┃ B ↑ Inch::CLI::Command::BaseList#prepare_list
145
+ ┃ B ↑ Inch::CLI::Command::Suggest#run
146
+ ┃ B ↑ Inch::CLI::Command::List#run
147
+ ┃ B ↑ Inch::CodeObject::Proxy::MethodParameterObject#initialize
148
+ ┃ B ↗ Inch::CLI::Command::Stats#run
149
+ ┃ B ↗ Inch::CLI::CommandParser#run
150
+ ┃ B ↗ Inch::CLI::CommandParser.run
151
+
152
+ # Not properly documented:
153
+
154
+ ┃ C ↑ Inch::CodeObject::NodocHelper#implicit_nodoc_comment?
155
+ ┃ C ↑ Inch::CLI::Command::Output::Console#initialize
156
+ ┃ C ↑ Inch::CLI::Command::Output::Suggest#initialize
157
+ ┃ C ↑ Inch::Rake::Suggest#initialize
158
+
159
+ # Undocumented:
160
+
161
+ ┃ U ↑ Inch::Evaluation::NamespaceObject#evaluate
162
+ ┃ U ↑ Inch::Evaluation::ConstantObject#evaluate
163
+ ┃ U ↑ Inch::Evaluation::MethodObject#evaluate
164
+ ┃ U ↑ Inch::SourceParser#find_object
165
+
166
+ You might want to look at these files:
167
+
168
+ ┃ lib/inch/code_object/proxy/base.rb
169
+ ┃ lib/inch/code_object/proxy/method_object.rb
170
+ ┃ lib/inch/evaluation/role/constant.rb
171
+ ┃ lib/inch/evaluation/role/method_parameter.rb
172
+ ┃ lib/inch/evaluation/role/object.rb
173
+
174
+ Grade distribution (undocumented, C, B, A): █ ▃ ▁ ▄
175
+
176
+ Only considering priority objects: ↑ ↗ → (use `--help` for options).
177
+
178
+
179
+
180
+ ### inch stats
181
+
182
+ Shows you an overview of the codebase.
183
+
184
+ $ inch stats
185
+
186
+ Grade distribution: (undocumented, C, B, A)
187
+
188
+ Overall: █ ▂ ▁ ▃ 439 objects
189
+
190
+ Grade distribution by priority:
191
+
192
+ ↑ ▁ ▄ █ ▁ 10 objects
193
+
194
+ ↗ █ ▃ ▁ ▃ 302 objects
195
+
196
+ → ▆ ▂ ▁ █ 73 objects
197
+
198
+ ↘ █ ▁ ▁ ▁ 54 objects
199
+
200
+ ↓ ▁ ▁ ▁ ▁ 0 objects
201
+
202
+ Priority distribution in grades: (low to high)
203
+
204
+ ↓ ↘ → ↗ ↑
205
+ U: ▁ ▁ ▁ ▁ ▁ ▁ ▂ ▂ ▁ █ ▁ ▁ ▁ ▁ ▁ 243 objects
206
+
207
+ C: ▁ ▁ ▁ ▁ ▁ ▁ ▁ ▁ ▁ █ ▁ ▁ ▁ ▁ ▁ 73 objects
208
+
209
+ B: ▁ ▁ ▁ ▁ ▁ ▁ ▁ ▁ ▁ █ ▂ ▄ ▁ ▁ ▁ 19 objects
210
+
211
+ A: ▁ ▁ ▁ ▁ ▁ ▁ ▁ ▄ ▁ █ ▁ ▁ ▁ ▁ ▁ 104 objects
212
+
213
+
214
+ Try `--format json|yaml` for raw numbers.
215
+
216
+
217
+
218
+ ### inch show
219
+
220
+ Shows you details about what can be approved in a specific object.
221
+
222
+ $ inch show Inch::SourceParser#find_object
223
+
224
+ # Inch::SourceParser#find_object
225
+
226
+ ┃ -> lib/inch/source_parser.rb:16
227
+ ┃ ------------------------------------------------------
228
+ ┃ Grade: C - Needs work
229
+ ┃ ------------------------------------------------------
230
+ ┃ + Add a comment describing the method
231
+ ┃ + Describe the parameter 'path'
232
+ ┃ + Describe the return type of 'find_object'
233
+ ┃ + Add a code example (optional)
234
+ ┃ ------------------------------------------------------
235
+
236
+
237
+
238
+ ### inch list
239
+
240
+ Lists all objects in your codebase with their grades.
241
+
242
+ $ inch list
243
+
244
+ # Seems really good
245
+
246
+ ┃ A ↑ Inch::CLI::Command::Output::Console#object
247
+ ┃ A ↗ Inch
248
+ ┃ A ↗ Inch::CodeObject::Proxy::Base#depth
249
+ ┃ A ↗ Inch::CodeObject::Proxy::Base#height
250
+ ┃ A ↗ Inch::CLI::Command::Base#description
251
+ ┃ A ↗ Inch::CodeObject::NodocHelper#nodoc?
252
+ ┃ A ↗ Inch::CLI::YardoptsHelper#parse_yardopts_options
253
+ ┃ A ↗ Inch::Evaluation::NamespaceObject
254
+ ┃ A ↗ Inch::SourceParser
255
+ ┃ A ↗ Inch::Evaluation::ScoreRange#range=
256
+ ┃ ... (omitting 75 objects)
257
+
258
+ # Proper documentation present
259
+
260
+ ┃ B ↑ Inch::CLI::Command::Suggest#run
261
+ ┃ B ↑ Inch::CLI::Command::List#run
262
+ ┃ B ↑ Inch::CodeObject::Proxy::MethodParameterObject#initialize
263
+ ┃ B ↗ Inch::CLI::Command::Stats#run
264
+ ┃ B ↗ Inch::CLI::CommandParser#run
265
+ ┃ B ↗ Inch::CLI::CommandParser.run
266
+ ┃ B ↗ Inch::CLI::Command::Base.run
267
+ ┃ B ↗ Inch::Evaluation::Base#object=
268
+ ┃ B ↗ Inch::CodeObject::Proxy::Base#object=
269
+
270
+ # Needs work
271
+
272
+ ┃ C ↑ Inch::CLI::Command::Output::Stats#initialize
273
+ ┃ C ↑ Inch::CLI::Command::Output::Suggest#initialize
274
+ ┃ C ↑ Inch::CodeObject::NodocHelper#implicit_nodoc_comment?
275
+ ┃ C ↑ Inch::CLI::Command::Output::Console#initialize
276
+ ┃ C ↑ Inch::Evaluation::NamespaceObject#evaluate
277
+ ┃ C ↑ Inch::Evaluation::ConstantObject#evaluate
278
+ ┃ C ↑ Inch::SourceParser#find_object
279
+ ┃ C ↑ Inch::Evaluation::MethodObject#evaluate
280
+ ┃ C ↗ Inch::CLI::Command::Show#run
281
+ ┃ C ↗ Inch::CodeObject::Proxy::Base
282
+ ┃ ... (omitting 248 objects)
283
+
284
+ This output omitted 323 objects. Use `--all` to display all objects.
285
+
286
+
287
+
288
+ ### Rake task
289
+
290
+ Add this to your `Rakefile`:
291
+
292
+ require 'inch/rake'
293
+
294
+ Inch::Rake::Suggest.new
295
+
296
+ This creates a rake task named `inch`. Change the name by passing it to the constructor. Use the `args` config option to add any command-line arguments from `inch suggest --help`.
297
+
298
+ require 'inch/rake'
299
+
300
+ Inch::Rake::Suggest.new("doc:suggest") do |suggest|
301
+ suggest.args << "--private"
302
+ end
303
+
304
+
305
+
306
+ ## How is this different from ...?
307
+
308
+ ### Documentation coverage
309
+
310
+ Documentation coverage checks (like they can be found in
311
+ [cane](https://github.com/square/cane) and
312
+ [rubocop](https://github.com/bbatsov/rubocop)) look at all code objects and
313
+ determine if the found documentation meets a certain threshold/expectation.
314
+
315
+ Inch takes a different approach as it aims for "properly documented" rather
316
+ than "100% coverage".
317
+
318
+ ### Yardstick
319
+
320
+ [Yardstick](https://github.com/dkubb/yardstick) is a tool that verifies
321
+ documentation coverage of Ruby code and is specifically designed for
322
+ [YARD-style documentation](http://yardoc.org/). It is a great tool to see
323
+ where your docs could benefit from YARD's extra features over RDoc, but, at
324
+ the same time, it is very overwhelming when applied to a codebase that does
325
+ not yet adhere to YARD's standards.
326
+
327
+ Inch takes a less YARD specific, more "relaxed" approach: It recognizes
328
+ different forms of documentation (even in the same codebase) and assigns
329
+ grades instead of coverage measurements. So you can get an "A" rating without
330
+ employing every technique YARD has to offer.
331
+
332
+
22
333
 
23
334
  ## Contributing
24
335
 
25
- 1. Fork it ( http://github.com/<my-github-username>/inch/fork )
336
+ 1. [Fork it!](http://github.com/rrrene/inch/fork)
26
337
  2. Create your feature branch (`git checkout -b my-new-feature`)
27
338
  3. Commit your changes (`git commit -am 'Add some feature'`)
28
339
  4. Push to the branch (`git push origin my-new-feature`)
29
340
  5. Create new Pull Request
341
+
342
+
343
+
344
+ ## Author
345
+
346
+ René Föhring (@rrrene)
347
+
348
+
349
+
350
+ ## Credits
351
+
352
+ Inch would not exist without Loren Segal's [YARD](http://yardoc.org/).
353
+
354
+
355
+
356
+ ## License
357
+
358
+ Inch is released under the MIT License. See the LICENSE.txt file for further
359
+ details.
360
+
361
+ For YARD's licensing, see YARD's README under http://yardoc.org/
data/Rakefile CHANGED
@@ -1 +1,9 @@
1
1
  require "bundler/gem_tasks"
2
+
3
+ require 'rake/testtask'
4
+
5
+ Rake::TestTask.new do |t|
6
+ t.pattern = "test/**/*_test.rb"
7
+ end
8
+
9
+ task :default => :test
@@ -0,0 +1,12 @@
1
+ # TODOs
2
+
3
+ * Recognize all relevant options in .yardopts file
4
+ * --plugin
5
+ * --[no-]api API
6
+ * Provide reusable context that filters code objects according to the
7
+ visibility options
8
+ * Add support for multiple signatures for methods
9
+ (realized via the @overload tag in YARD)
10
+ * YARD assigns an implicit @return tag to methods ending in a question
11
+ mark -- maybe this is a problem since those methods appear as `C` in
12
+ the output, even if they don't have any other documentation
@@ -0,0 +1,17 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require 'bundler'
4
+ begin
5
+ Bundler.require
6
+ rescue Bundler::GemfileNotFound
7
+ ensure
8
+ require 'inch'
9
+ end
10
+
11
+ # hit Control + C to stop
12
+ Signal.trap("INT") do
13
+ warn " cancelled by user (INT)"
14
+ exit 1
15
+ end
16
+
17
+ Inch::CLI::CommandParser.run(*ARGV)
@@ -8,8 +8,8 @@ Gem::Specification.new do |spec|
8
8
  spec.version = Inch::VERSION
9
9
  spec.authors = ["René Föhring"]
10
10
  spec.email = ["rf@bamaru.de"]
11
- spec.summary = %q{Wrapper for YARD}
12
- spec.description = %q{Wrapper for YARD}
11
+ spec.summary = %q{Documentation measurement tool for Ruby}
12
+ spec.description = %q{Documentation measurement tool for Ruby, based on YARD.}
13
13
  spec.homepage = ""
14
14
  spec.license = "MIT"
15
15
 
@@ -20,4 +20,9 @@ Gem::Specification.new do |spec|
20
20
 
21
21
  spec.add_development_dependency "bundler", "~> 1.5"
22
22
  spec.add_development_dependency "rake"
23
+
24
+ spec.add_dependency "yard", "~> 0.8.7"
25
+ spec.add_dependency "term-ansicolor"
26
+ spec.add_dependency 'sparkr', "~> 0.2.0"
27
+ spec.add_dependency "pry"
23
28
  end
@@ -1,5 +1,10 @@
1
1
  require "inch/version"
2
2
 
3
3
  module Inch
4
- # Your code goes here...
5
4
  end
5
+
6
+ require_relative 'inch/core_ext'
7
+ require_relative 'inch/source_parser'
8
+ require_relative 'inch/code_object'
9
+ require_relative 'inch/evaluation'
10
+ require_relative 'inch/cli'