doc2json 1.0.0.pre.alpha.1

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.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 762219781b46ca4db9d85ca3d83a798a31021744
4
+ data.tar.gz: fb798ecaf0c747cd1bed1f4d348f68d59eac5643
5
+ SHA512:
6
+ metadata.gz: 637cccc00eed782c08e77baebb448da382cc558fcbecab9ca070a128de95aba8bf18df8e9f6adfa85924be8350381ae2acfea544ea6690e658a1b5f372e72520
7
+ data.tar.gz: ea1ff7a5a0ffde423286c3c183e52473938c19ecc1e85499544f9ac22e998417be59ea8fcc339af70c00f53e35bd0996f827c4308452fca4b4620e0f9c3ac2a4
data/.gitignore ADDED
@@ -0,0 +1,8 @@
1
+ .yardoc/
2
+ doc/
3
+ Gemfile.lock
4
+ *.swp
5
+ rdoc/
6
+ .bundle/
7
+ coverage
8
+ tags
data/CONTRIBUTING.md ADDED
File without changes
data/Gemfile ADDED
@@ -0,0 +1,2 @@
1
+ source 'https://rubygems.org'
2
+ gemspec
data/LICENSE.md ADDED
File without changes
data/README.md ADDED
@@ -0,0 +1,27 @@
1
+ Overview
2
+ ========
3
+ doc2json generates a JSON based ruby documentation with YARD.
4
+
5
+ Installation
6
+ ============
7
+
8
+ ```bash
9
+ gem install doc2json
10
+ ```
11
+
12
+ Afterwards you can generate a machine friendly documentation for
13
+ your project.
14
+
15
+ Usage
16
+ =====
17
+
18
+ ```bash
19
+ doc2json "lib/**/.rb" "doc/json"
20
+ ```
21
+ This will generate a json based documentation for all `*.rb` files inside
22
+ your `lib` directory and outputs the files in `./doc/json`
23
+
24
+ License
25
+ =======
26
+ Licensed under the MIT License
27
+ (c) Jens Nazarenus, 2014
data/Rakefile ADDED
@@ -0,0 +1,35 @@
1
+ require 'rubygems'
2
+ require 'rake'
3
+ require 'rdoc'
4
+
5
+ $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), *%w[lib]))
6
+
7
+ # Returns the name of the project
8
+ def name
9
+ @name ||= Dir['*.gemspec'].first.split('.').first
10
+ end
11
+
12
+ # Returns the version number of the project
13
+ def version
14
+ line = File.read("lib/#{name}/version.rb")[/^\s*VERSION\s*=\s*.*/]
15
+ line.match(/.*VERSION\s*=\s*['"](.*)['"]/)[1]
16
+ end
17
+
18
+ task :default => [:test]
19
+
20
+ # << test
21
+ require 'rake/testtask'
22
+ Rake::TestTask.new(:test) do |test|
23
+ test.libs << 'lib' << 'test'
24
+ test.pattern = 'test/**/test_*.rb'
25
+ test.verbose = true
26
+ end
27
+
28
+ # << rdoc
29
+ require 'rdoc/task'
30
+ Rake::RDocTask.new do |rdoc|
31
+ rdoc.rdoc_dir = 'rdoc'
32
+ rdoc.title = "#{name} #{version}"
33
+ rdoc.rdoc_files.include('README*')
34
+ rdoc.rdoc_files.include('lib/**/*.rb')
35
+ end
data/bin/doc2json ADDED
@@ -0,0 +1,7 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require 'doc2json'
4
+
5
+ input = [ARGV[0]]
6
+ generator = Doc2Json::Generator.new(input, ARGV[1])
7
+ generator.generate
data/doc2json.gemspec ADDED
@@ -0,0 +1,29 @@
1
+ # -*- encoding: utf-8 -*-
2
+ $:.push File.expand_path("../lib", __FILE__)
3
+ require "doc2json/version"
4
+
5
+ Gem::Specification.new do |s|
6
+ s.name = "doc2json"
7
+ s.version = Doc2Json::VERSION
8
+ s.platform = Gem::Platform::RUBY
9
+ s.authors = ["Jens Nazarenus"]
10
+ s.email = ["me@jens-na.de"]
11
+ s.homepage = "https://github.com/jens-na/doc2json"
12
+ s.summary = %q{Generate JSON based Ruby documentation}
13
+ s.description = %q{Generate JSON based Ruby documentations with yard}
14
+
15
+ s.add_runtime_dependency("yard", "~> 0.8.7.4")
16
+ s.add_runtime_dependency("json", "~> 1.8.1")
17
+
18
+ s.add_development_dependency("rspec", "~>2.14.1")
19
+ s.add_development_dependency('rake', "~> 10.1.1")
20
+ s.add_development_dependency('redgreen', "~> 1.2.2")
21
+ s.add_development_dependency('shoulda-context', "~> 1.1.6")
22
+ s.add_development_dependency('rr', "~> 1.1.2")
23
+
24
+ s.files = `git ls-files`.split("\n")
25
+ s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
26
+ s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
27
+ s.require_paths = ["lib"]
28
+ end
29
+
data/lib/doc2json.rb ADDED
@@ -0,0 +1,2 @@
1
+ require 'doc2json/generator'
2
+ require 'doc2json/version'
@@ -0,0 +1,72 @@
1
+ module Doc2Json
2
+
3
+ require 'yard'
4
+ require 'json'
5
+ require 'fileutils'
6
+
7
+ class Generator
8
+
9
+ attr_reader :input
10
+ attr_reader :output
11
+ attr_reader :options
12
+
13
+ # Creates a new generator to output documentation in JSON
14
+ #
15
+ # input- the input file pattern as an array which will be passed to Yard
16
+ # output - the output directory where to store the JSON files, defaults to doc/json
17
+ # options - an options hash
18
+ def initialize(input = ["{lib,app}/**/*.rb", "ext/**/*.c"], output = "doc/json", options = {})
19
+ @input = input
20
+ @output = output
21
+ @options = options
22
+ end
23
+
24
+ # Generates the JSON API and outputs the data to the output
25
+ # directory.
26
+ def generate
27
+ classes = registry.all(:class)
28
+ classes.each do |c|
29
+ data = methods(c)
30
+ output(data, c.to_s)
31
+ end
32
+ end
33
+
34
+ private
35
+
36
+ # Outputs the data for the given class name to file.
37
+ # Creates directories where neccessary.
38
+ #
39
+ # data - the data to write (a hash)
40
+ # classname - the classname which is used as filename
41
+ def output(data, classname)
42
+ sanitized = File.join(@output, classname.gsub('::', '/')).downcase
43
+ path = Pathname(sanitized).dirname
44
+ FileUtils.mkdir_p path.to_s unless path.exist?
45
+
46
+ File.open("#{sanitized}.json", "w") do |f|
47
+ f.write(JSON.pretty_generate(data))
48
+ end
49
+ end
50
+
51
+ # Creates a hash with all the methods inside a class
52
+ #
53
+ # c - the class object of Yard
54
+ #
55
+ # Returns a hash. For example:
56
+ # "generate" => "Generates the JSON API"
57
+ def methods(c)
58
+ data = Hash.new
59
+ c.children.each do |m|
60
+ data[m.name] = m.base_docstring
61
+ end
62
+ data
63
+ end
64
+
65
+ # Generates a Yard registry with the specified input file pattern,
66
+ # passed in the constructor
67
+ def registry
68
+ YARD::Registry.load(@input, true)
69
+ end
70
+
71
+ end
72
+ end
@@ -0,0 +1,3 @@
1
+ module Doc2Json
2
+ VERSION = "1.0.0-alpha.1"
3
+ end
data/test/.keep ADDED
File without changes
metadata ADDED
@@ -0,0 +1,157 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: doc2json
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.0.0.pre.alpha.1
5
+ platform: ruby
6
+ authors:
7
+ - Jens Nazarenus
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2014-06-15 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: yard
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: 0.8.7.4
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: 0.8.7.4
27
+ - !ruby/object:Gem::Dependency
28
+ name: json
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: 1.8.1
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: 1.8.1
41
+ - !ruby/object:Gem::Dependency
42
+ name: rspec
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: 2.14.1
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: 2.14.1
55
+ - !ruby/object:Gem::Dependency
56
+ name: rake
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: 10.1.1
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: 10.1.1
69
+ - !ruby/object:Gem::Dependency
70
+ name: redgreen
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - "~>"
74
+ - !ruby/object:Gem::Version
75
+ version: 1.2.2
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - "~>"
81
+ - !ruby/object:Gem::Version
82
+ version: 1.2.2
83
+ - !ruby/object:Gem::Dependency
84
+ name: shoulda-context
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - "~>"
88
+ - !ruby/object:Gem::Version
89
+ version: 1.1.6
90
+ type: :development
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - "~>"
95
+ - !ruby/object:Gem::Version
96
+ version: 1.1.6
97
+ - !ruby/object:Gem::Dependency
98
+ name: rr
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - "~>"
102
+ - !ruby/object:Gem::Version
103
+ version: 1.1.2
104
+ type: :development
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - "~>"
109
+ - !ruby/object:Gem::Version
110
+ version: 1.1.2
111
+ description: Generate JSON based Ruby documentations with yard
112
+ email:
113
+ - me@jens-na.de
114
+ executables:
115
+ - doc2json
116
+ extensions: []
117
+ extra_rdoc_files: []
118
+ files:
119
+ - ".gitignore"
120
+ - CONTRIBUTING.md
121
+ - Gemfile
122
+ - Gemfile.lock
123
+ - LICENSE.md
124
+ - README.md
125
+ - Rakefile
126
+ - bin/doc2json
127
+ - doc2json.gemspec
128
+ - lib/doc2json.rb
129
+ - lib/doc2json/generator.rb
130
+ - lib/doc2json/version.rb
131
+ - test/.keep
132
+ homepage: https://github.com/jens-na/doc2json
133
+ licenses: []
134
+ metadata: {}
135
+ post_install_message:
136
+ rdoc_options: []
137
+ require_paths:
138
+ - lib
139
+ required_ruby_version: !ruby/object:Gem::Requirement
140
+ requirements:
141
+ - - ">="
142
+ - !ruby/object:Gem::Version
143
+ version: '0'
144
+ required_rubygems_version: !ruby/object:Gem::Requirement
145
+ requirements:
146
+ - - ">"
147
+ - !ruby/object:Gem::Version
148
+ version: 1.3.1
149
+ requirements: []
150
+ rubyforge_project:
151
+ rubygems_version: 2.2.2
152
+ signing_key:
153
+ specification_version: 4
154
+ summary: Generate JSON based Ruby documentation
155
+ test_files:
156
+ - test/.keep
157
+ has_rdoc: