├── .gitignore ├── .rspec ├── .travis.yml ├── Gemfile ├── LICENSE ├── README.md ├── Rakefile ├── bin ├── console └── setup ├── lib ├── snazzy.rb └── snazzy │ └── version.rb ├── snazzy.gemspec └── spec ├── snazzy_spec.rb └── spec_helper.rb /.gitignore: -------------------------------------------------------------------------------- 1 | /.bundle/ 2 | /.yardoc 3 | /Gemfile.lock 4 | /_yardoc/ 5 | /coverage/ 6 | /doc/ 7 | /pkg/ 8 | /spec/reports/ 9 | /tmp/ 10 | *.gem 11 | *.rbc 12 | /.config 13 | /coverage/ 14 | /InstalledFiles 15 | /pkg/ 16 | /spec/reports/ 17 | /spec/examples.txt 18 | /test/tmp/ 19 | /test/version_tmp/ 20 | /tmp/ 21 | 22 | ## Specific to RubyMotion: 23 | .dat* 24 | .repl_history 25 | build/ 26 | 27 | ## Documentation cache and generated files: 28 | /.yardoc/ 29 | /_yardoc/ 30 | /doc/ 31 | /rdoc/ 32 | 33 | ## Environment normalization: 34 | /.bundle/ 35 | /vendor/bundle 36 | /lib/bundler/man/ 37 | 38 | # for a library or gem, you might want to ignore these files since the code is 39 | # intended to run in multiple environments; otherwise, check them in: 40 | # Gemfile.lock 41 | # .ruby-version 42 | # .ruby-gemset 43 | 44 | # unless supporting rvm < 1.11.0 or doing something fancy, ignore this: 45 | .rvmrc 46 | -------------------------------------------------------------------------------- /.rspec: -------------------------------------------------------------------------------- 1 | --format documentation 2 | --color 3 | -------------------------------------------------------------------------------- /.travis.yml: -------------------------------------------------------------------------------- 1 | language: ruby 2 | rvm: 3 | - 2.1.3 4 | before_install: gem install bundler -v 1.11.2 5 | -------------------------------------------------------------------------------- /Gemfile: -------------------------------------------------------------------------------- 1 | source 'https://rubygems.org' 2 | 3 | # Specify your gem's dependencies in snazzy.gemspec 4 | gemspec 5 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) 2016 Orta 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Snazzy 2 | 3 | The younger brother of [Realm's Jazzy](https://github.com/realm/jazzy). Jazzy is a documentation engine for building a site that covers all of the documentation of a Swift/Objective-C project. 4 | 5 | Snazzy on the other hand is to help you generate a README from the documentation instead. It aims for brevity, and readbility on a smaller scale, for projects that are not big enough to warrent all the overhead of a separate website. 6 | 7 | Snazzy sits on-top of [SourceKitten](https://github.com/jpsim/SourceKitten), and works with the JSON API. 8 | 9 | This currently does nothing. This is [README driven development](http://tom.preston-werner.com/2010/08/23/readme-driven-development.html). It's based on some work I [did for RxSwiftCommunity](https://github.com/RxSwiftCommunity/RxSwiftExt/issues/39). 10 | 11 | ## Installation 12 | 13 | Install using 14 | 15 | $ gem install snazzy 16 | 17 | then run using `snazzy` 18 | 19 | ## Usage 20 | 21 | Options I'd like to see in Snazzy: 22 | 23 | * Choose specific classes to document: `snazzy --whitelist=ORStackView,ORStackType` 24 | * Choose specific subclasses ( or extensions of ) to document `snazzy --related=ARAnalyticsProvider` 25 | * Have options to automatically update a readme by declaring the top and bottom markers: `snazzy --readme=README.md --before="### API" --after="### Contributors"` 26 | * Run from a Podspec: `snazzy --podspec=Specta.podspec` 27 | * Pass in all sorts of crazy xcode options: `snazzy -- --workspace=Artsy.xcworkspace` 28 | 29 | Future: 30 | 31 | * Handle SPM once it's usable: `snazzy --use-spm` 32 | 33 | ## Development 34 | 35 | After checking out the repo, run `bin/setup` to install dependencies. Then, run `rake spec` to run the tests. You can also run `bin/console` for an interactive prompt that will allow you to experiment. 36 | 37 | To install this gem onto your local machine, run `bundle exec rake install`. To release a new version, update the version number in `version.rb`, and then run `bundle exec rake release`, which will create a git tag for the version, push git commits and tags, and push the `.gem` file to [rubygems.org](https://rubygems.org). 38 | 39 | ## Contributing 40 | 41 | Bug reports and pull requests are welcome on GitHub at https://github.com/orta/snazzy. 42 | 43 | -------------------------------------------------------------------------------- /Rakefile: -------------------------------------------------------------------------------- 1 | require "bundler/gem_tasks" 2 | require "rspec/core/rake_task" 3 | 4 | RSpec::Core::RakeTask.new(:spec) 5 | 6 | task :default => :spec 7 | -------------------------------------------------------------------------------- /bin/console: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env ruby 2 | 3 | require "bundler/setup" 4 | require "snazzy" 5 | 6 | # You can add fixtures and/or initialization code here to make experimenting 7 | # with your gem easier. You can also use a different console, if you like. 8 | 9 | # (If you use this, don't forget to add pry to your Gemfile!) 10 | # require "pry" 11 | # Pry.start 12 | 13 | require "irb" 14 | IRB.start 15 | -------------------------------------------------------------------------------- /bin/setup: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | set -euo pipefail 3 | IFS=$'\n\t' 4 | set -vx 5 | 6 | bundle install 7 | 8 | # Do any other automated setup that you need to do here 9 | -------------------------------------------------------------------------------- /lib/snazzy.rb: -------------------------------------------------------------------------------- 1 | require "snazzy/version" 2 | 3 | module Snazzy 4 | # Your code goes here... 5 | end 6 | -------------------------------------------------------------------------------- /lib/snazzy/version.rb: -------------------------------------------------------------------------------- 1 | module Snazzy 2 | VERSION = "0.0.0" 3 | end 4 | -------------------------------------------------------------------------------- /snazzy.gemspec: -------------------------------------------------------------------------------- 1 | # coding: utf-8 2 | lib = File.expand_path('../lib', __FILE__) 3 | $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib) 4 | require 'snazzy/version' 5 | 6 | Gem::Specification.new do |spec| 7 | spec.name = "snazzy" 8 | spec.version = Snazzy::VERSION 9 | spec.authors = ["Orta Therox"] 10 | spec.email = ["orta.therox@gmail.com"] 11 | 12 | spec.summary = "A Snazzy README API generator built on SourceKitten" 13 | spec.homepage = "https://github.com/orta/snazzy" 14 | 15 | spec.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) } 16 | spec.bindir = "exe" 17 | spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) } 18 | spec.require_paths = ["lib"] 19 | 20 | spec.add_development_dependency "bundler", "~> 1.11" 21 | spec.add_development_dependency "rake", "~> 10.0" 22 | spec.add_development_dependency "rspec", "~> 3.0" 23 | end 24 | -------------------------------------------------------------------------------- /spec/snazzy_spec.rb: -------------------------------------------------------------------------------- 1 | require 'spec_helper' 2 | 3 | describe Snazzy do 4 | it 'has a version number' do 5 | expect(Snazzy::VERSION).not_to be nil 6 | end 7 | 8 | it 'does something useful' do 9 | expect(false).to eq(true) 10 | end 11 | end 12 | -------------------------------------------------------------------------------- /spec/spec_helper.rb: -------------------------------------------------------------------------------- 1 | $LOAD_PATH.unshift File.expand_path('../../lib', __FILE__) 2 | require 'snazzy' 3 | --------------------------------------------------------------------------------