webapidoc 0.0.4 → 0.0.5

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.
data/README.md CHANGED
@@ -1,4 +1,4 @@
1
- # WebApiDoc
1
+ # Webapidoc
2
2
 
3
3
  ## Installation
4
4
 
@@ -11,7 +11,7 @@
11
11
  namespace :webapidoc do
12
12
 
13
13
  task :build do
14
- WebApiDoc.build({:title => "WebApiDoc"})
14
+ Webapidoc.build({:title => "Webapidoc"})
15
15
  end
16
16
 
17
17
  end
data/Rakefile ADDED
@@ -0,0 +1,8 @@
1
+ require "bundler/gem_tasks"
2
+ require 'webapidoc'
3
+
4
+ namespace :webapidoc do
5
+ task :build do
6
+ Webapidoc.build({:title => "Webapidoc"})
7
+ end
8
+ end
@@ -0,0 +1,25 @@
1
+ #lib/generators/gemname/install_generator.rb
2
+ require 'rails/generators'
3
+ require "webapidoc"
4
+
5
+ module Webapidoc
6
+ module Generators
7
+ class InstallGenerator < Rails::Generators::Base
8
+ desc "generate api documentation sample"
9
+
10
+ def copy_files
11
+ source_root ||= File.join(File.dirname(__FILE__), 'templates')
12
+
13
+ # create paths
14
+ FileUtils.mkdir_p "app/documentation"
15
+
16
+ # copy files
17
+ FileUtils.copy(source_root + "/index.md.erb", "app/documentation")
18
+ FileUtils.copy(source_root + "/sample.md.erb", "app/documentation")
19
+ FileUtils.copy(source_root + "/webapidoc.yml", "config")
20
+
21
+ puts "done"
22
+ end
23
+ end
24
+ end
25
+ end
@@ -11,5 +11,5 @@ the aid of their country.
11
11
  ### Table of contents
12
12
 
13
13
  <% @chapters.each_with_index do |chapter, idx| %>
14
- <%= idx %>. [<%= chapter[:name] %>](<%= chapter[:out] %>)
14
+ <%= idx %>. [<%= chapter[:name] %>](/documentation/<%= chapter[:out] %>)
15
15
  <% end %>
@@ -39,7 +39,7 @@ Support for ERB
39
39
  Table of contents generated via ERB:
40
40
 
41
41
  <% @chapters.each_with_index do |chapter, idx| %>
42
- <%= idx %>. [<%= chapter[:name] %>](<%= chapter[:out] %>)
42
+ <%= idx %>. [<%= chapter[:name] %>](/documentation/<%= chapter[:out] %>)
43
43
  <% end %>
44
44
 
45
45
  Some code
@@ -2,6 +2,9 @@ title: "WebAPIDoc"
2
2
  description: "Static HTML Documentation for JSON APIs"
3
3
 
4
4
  chapters:
5
+ -
6
+ file: "index"
7
+ name: "Index Page"
5
8
  -
6
9
  file: "sample"
7
10
  name: "Sample Page"
@@ -0,0 +1,98 @@
1
+
2
+ module Webapidoc
3
+
4
+ def self.gem_libdir
5
+ t = ["#{File.dirname(File.expand_path($0))}/../lib/#{Webapidoc::NAME}",
6
+ "#{Gem.dir}/gems/#{Webapidoc::NAME}-#{Webapidoc::VERSION}/lib/#{Webapidoc::NAME}"]
7
+ t.each {|i| return i if File.readable?(i) }
8
+ raise "both paths are invalid: #{t}"
9
+ end
10
+
11
+ def self.build(data=nil)
12
+
13
+ @data = data
14
+
15
+ publicDir = "public/documentation"
16
+ docDir = "app/documentation"
17
+ libDir = gem_libdir
18
+
19
+ # get config hash
20
+ configFile = 'config/webapidoc.yml'
21
+ config = YAML.load_file(configFile).freeze
22
+
23
+ puts "building webapidoc for " + config["title"]
24
+
25
+ # clean up
26
+ FileUtils.remove_dir publicDir if File.exists?(publicDir)
27
+
28
+ # create paths
29
+ FileUtils.mkdir_p publicDir
30
+ FileUtils.mkdir publicDir + "/css"
31
+ FileUtils.mkdir publicDir + "/js"
32
+
33
+ # copy jquery
34
+ FileUtils.copy(libDir + "/js/jquery.js", publicDir + "/js/jquery.js")
35
+
36
+ # copy highlighter
37
+ FileUtils.copy(libDir + "/js/highlight.js", publicDir + "/js/highlight.js")
38
+
39
+ # compile webapidoc style
40
+ sass_filename = libDir + "/css/webapidoc.scss"
41
+ css = Sass::Engine.for_file(sass_filename, {:style => :compressed}).render
42
+ File.open(publicDir + "/css/webapidoc.css", "wb") {|f| f.write(css) }
43
+
44
+ # parse chapters and create html from md
45
+ @chapters = []
46
+
47
+ # get chapter info
48
+ config["chapters"].each_with_index do | chapter, idx|
49
+
50
+ inFile = "#{docDir}/#{chapter["file"]}.md"
51
+ outFile = chapter["file"] + ".html"
52
+
53
+ if File.exists?(inFile + ".erb" )
54
+ inFile = inFile + ".erb"
55
+ end
56
+
57
+ if File.exists?(inFile)
58
+ contents = File.open(inFile, 'r').read
59
+ else
60
+ puts "file not found: #{inFile}"
61
+ next
62
+ end
63
+
64
+ @chapters << { :name => chapter["name"], :out => outFile, :in => inFile}
65
+ end
66
+
67
+ @chapters.each_with_index do | chapter, idx|
68
+
69
+ contents = ERB.new(File.open(chapter[:in], 'r').read).result(binding)
70
+ maruku = Maruku.new(contents)
71
+
72
+ # get content info for subsections ( side pane navigation )
73
+ sections = []
74
+ maruku.each_element(:header) do | el |
75
+ next unless el.meta_priv[:level] == 2
76
+ sections << el.children[0]
77
+ end
78
+
79
+ chapter[:html] = maruku.to_html
80
+ chapter[:sections] = sections
81
+
82
+ end
83
+
84
+ # open template
85
+ template = "#{libDir}/template.html.erb"
86
+
87
+ # build chapter files
88
+ @chapters.each do | chapter |
89
+
90
+ # bindings
91
+ @html = chapter[:html]
92
+ @current = chapter
93
+ puts "building #{chapter[:name]}"
94
+ # write it
95
+ File.open("#{publicDir}/#{chapter[:out]}", 'w') { |file| file.write(ERB.new(File.open(template, 'r').read).result(binding)) }
96
+ end
97
+ end
98
+ end
@@ -550,7 +550,7 @@ pre {
550
550
  code {
551
551
  font-family: monospace;
552
552
  background: $color-code;
553
- color: #141414;
553
+ color: #718c00;
554
554
  border-radius: 4px;
555
555
  box-shadow: 1px 1px 10px #fff;
556
556
  text-shadow: none;
@@ -2,7 +2,7 @@
2
2
  <html lang="en">
3
3
  <head>
4
4
  <meta charset="utf-8">
5
- <title>WebApiDoc for <%= @data[:title] %></title>
5
+ <title>Webapidoc for <%= @data[:title] %></title>
6
6
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
7
7
  <meta name="description" content="in-depth WebAPI documentation for <%= @data[:title] %>">
8
8
  <meta name="author" content="the nice guys from <%= @data[:title] %>">
@@ -21,16 +21,16 @@
21
21
  <link href='http://fonts.googleapis.com/css?family=Lato:300,400,700' rel='stylesheet' type='text/css'>
22
22
 
23
23
  <!-- Le styles -->
24
- <link href="css/webapidoc.css" rel="stylesheet">
24
+ <link href="/documentation/css/webapidoc.css" rel="stylesheet">
25
25
 
26
26
  <!-- HTML5 shim, for IE6-8 support of HTML5 elements -->
27
27
  <!--[if lt IE 9]>
28
- <script src="js/html5.js"></script>
28
+ <script src="/documentation/js/html5.js"></script>
29
29
  <![endif]-->
30
30
 
31
31
  <!-- Les javascripts -->
32
- <script src="js/jquery.js"></script>
33
- <script src="js/highlight.js"></script>
32
+ <script src="/documentation/js/jquery.js"></script>
33
+ <script src="/documentation/js/highlight.js"></script>
34
34
 
35
35
  <!-- enable script highlighting -->
36
36
  <script>
@@ -50,12 +50,10 @@
50
50
  <div class="four columns offset-by-one" id="nav">
51
51
  <ul class="nav-list">
52
52
 
53
- <li class="nav-header <%= "active" if !@current[:name] %>"><a href="index.html">Home</a></li>
54
-
55
53
  <% @chapters.each do |chapter| %>
56
54
 
57
55
  <li class="nav-header <%= "active" if chapter[:name] == @current[:name] %>">
58
- <a href="<%= chapter[:out] %>"><%= chapter[:name] %></a></li>
56
+ <a href="/documentation/<%= chapter[:out] %>"><%= chapter[:name] %></a></li>
59
57
 
60
58
  <% chapter[:sections].each do |section| %>
61
59
  <li class="nav-item" >
@@ -0,0 +1,4 @@
1
+ module Webapidoc
2
+ NAME = "webapidoc"
3
+ VERSION = "0.0.5"
4
+ end
data/lib/webapidoc.rb CHANGED
@@ -1,117 +1,9 @@
1
- # WebApiDoc
2
- # Static HTML Documentation for JSON APIs
3
-
4
- #
5
- # Example:
6
- # >> WebApiDoc.build({:title => "WebApiDoc"})
7
- #
8
- # Arguments:
9
- # - data object accessible via @data in templates
10
- #
11
- # Info
12
- # - chapter info is accessible via @chapters in templates
13
- #
14
-
15
1
  require 'maruku'
16
2
  require 'yaml'
17
3
  require 'fileutils'
18
4
  require 'erb'
19
5
  require 'sass'
20
6
 
21
- module WebApiDoc
22
-
23
- def self.build(data=nil)
24
-
25
- @data = data
26
-
27
- publicDir = "public/documentation"
28
- docDir = "app/documentation"
29
- libDir = "lib/webapidoc"
30
-
31
- # get config hash
32
- config = YAML.load_file('config/webapidoc.yml').freeze
33
-
34
- puts "building webapidoc for " + config["title"]
35
-
36
- # clean up
37
- FileUtils.remove_dir publicDir if File.exists?(publicDir)
38
-
39
- # create paths
40
- FileUtils.mkdir_p publicDir
41
- FileUtils.mkdir publicDir + "/css"
42
- FileUtils.mkdir publicDir + "/js"
43
-
44
- # copy jquery
45
- FileUtils.copy(libDir + "/js/jquery.js", publicDir + "/js/jquery.js")
46
-
47
- # copy highlighter
48
- FileUtils.copy(libDir + "/js/highlight.js", publicDir + "/js/highlight.js")
49
-
50
- # compile webapidoc style
51
- sass_filename = libDir + "/css/webapidoc.scss"
52
- css = Sass::Engine.for_file(sass_filename, {:style => :compressed}).render
53
- File.open(publicDir + "/css/webapidoc.css", "wb") {|f| f.write(css) }
54
-
55
- # parse chapters and create html from md
56
- @chapters = []
57
-
58
- # get chapter info
59
- config["chapters"].each_with_index do | chapter, idx|
60
-
61
- inFile = "#{docDir}/#{chapter["file"]}.md"
62
- outFile = "%02d_%s.html" % [idx.to_s, chapter["file"]]
63
-
64
- if File.exists?(inFile + ".erb" )
65
- inFile = inFile + ".erb"
66
- end
67
-
68
- if File.exists?(inFile)
69
- contents = File.open(inFile, 'r').read
70
- else
71
- puts "file not found: #{inFile}"
72
- next
73
- end
74
-
75
- @chapters << { :name => chapter["name"], :out => outFile, :in => inFile}
76
- end
77
-
78
- @chapters.each_with_index do | chapter, idx|
79
-
80
- contents = ERB.new(File.open(chapter[:in], 'r').read).result(binding)
81
- maruku = Maruku.new(contents)
82
-
83
- # get content info for subsections ( side pane navigation )
84
- sections = []
85
- maruku.each_element(:header) do | el |
86
- next unless el.meta_priv.to_s == "level2"
87
- sections << el.children[0]
88
- end
89
-
90
- chapter[:html] = maruku.to_html
91
- chapter[:sections] = sections
92
- end
93
-
94
- # open template
95
- template = "#{libDir}/template.html.erb"
96
-
97
- # build chapter files
98
- @chapters.each do | chapter |
99
-
100
- # bindings
101
- @html = chapter[:html]
102
- @current = chapter
103
- puts "building #{chapter[:name]}"
104
- # write it
105
- File.open("#{publicDir}/#{chapter[:out]}", 'w') { |file| file.write(ERB.new(File.open(template, 'r').read).result(binding)) }
106
- end
107
-
108
- # build index file, reset bindings
109
- contents = ERB.new(File.open("#{libDir}/index.md.erb", 'r').read).result(binding)
110
-
111
- @html = Maruku.new(contents).to_html
112
- @current = {}
113
- File.open("#{publicDir}/index.html", 'w') { |file| file.write(ERB.new(File.open(template, 'r').read).result(binding)) }
114
-
115
- end
7
+ require 'webapidoc/version'
8
+ require 'webapidoc/base'
116
9
 
117
- end
data/webapidoc.gemspec CHANGED
@@ -1,8 +1,11 @@
1
+ # -*- encoding: utf-8 -*-
1
2
  $:.push File.expand_path("../lib", __FILE__)
3
+ require "webapidoc/version"
2
4
 
3
5
  Gem::Specification.new do |s|
4
- s.name = 'webapidoc'
5
- s.version = '0.0.4'
6
+ s.name = Webapidoc::NAME
7
+ s.version = Webapidoc::VERSION
8
+ s.platform = Gem::Platform::RUBY
6
9
  s.date = '2012-12-03'
7
10
 
8
11
  s.summary = "Static HTML Documentation for JSON Web APIs."
@@ -11,11 +14,14 @@ Gem::Specification.new do |s|
11
14
  s.email = 'aliasng@gmail.com'
12
15
 
13
16
  s.files = `git ls-files`.split("\n")
14
-
17
+ s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
18
+ s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
15
19
  s.require_paths = ["lib"]
16
20
 
17
21
  s.add_dependency('maruku', '>= 0.6.1')
18
22
  s.add_dependency('sass', '>= 3.1.19')
19
23
 
20
- s.homepage = 'http://rubygems.org/gems/webapidoc'
24
+ s.add_development_dependency 'rake'
25
+
26
+ s.homepage = 'https://github.com/otty/webapidoc'
21
27
  end
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: webapidoc
3
3
  version: !ruby/object:Gem::Version
4
- hash: 23
4
+ hash: 21
5
5
  prerelease:
6
6
  segments:
7
7
  - 0
8
8
  - 0
9
- - 4
10
- version: 0.0.4
9
+ - 5
10
+ version: 0.0.5
11
11
  platform: ruby
12
12
  authors:
13
13
  - Adrian Fuhrmann
@@ -49,6 +49,20 @@ dependencies:
49
49
  version: 3.1.19
50
50
  type: :runtime
51
51
  version_requirements: *id002
52
+ - !ruby/object:Gem::Dependency
53
+ name: rake
54
+ prerelease: false
55
+ requirement: &id003 !ruby/object:Gem::Requirement
56
+ none: false
57
+ requirements:
58
+ - - ">="
59
+ - !ruby/object:Gem::Version
60
+ hash: 3
61
+ segments:
62
+ - 0
63
+ version: "0"
64
+ type: :development
65
+ version_requirements: *id003
52
66
  description: Create a static HTML Documentation for your JSON Web API.
53
67
  email: aliasng@gmail.com
54
68
  executables: []
@@ -60,17 +74,21 @@ extra_rdoc_files: []
60
74
  files:
61
75
  - .gitignore
62
76
  - README.md
63
- - app/documentation/sample.md.erb
64
- - config/webapidoc.yml
77
+ - Rakefile
78
+ - lib/generators/webapidoc/install_generator.rb
79
+ - lib/generators/webapidoc/templates/index.md.erb
80
+ - lib/generators/webapidoc/templates/sample.md.erb
81
+ - lib/generators/webapidoc/templates/webapidoc.yml
65
82
  - lib/webapidoc.rb
83
+ - lib/webapidoc/base.rb
66
84
  - lib/webapidoc/css/webapidoc.scss
67
- - lib/webapidoc/index.md.erb
68
85
  - lib/webapidoc/js/highlight.js
69
86
  - lib/webapidoc/js/html5.js
70
87
  - lib/webapidoc/js/jquery.js
71
88
  - lib/webapidoc/template.html.erb
89
+ - lib/webapidoc/version.rb
72
90
  - webapidoc.gemspec
73
- homepage: http://rubygems.org/gems/webapidoc
91
+ homepage: https://github.com/otty/webapidoc
74
92
  licenses: []
75
93
 
76
94
  post_install_message: