crystal-dash-docset-generator 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 80ccd5f37e0ccaecedffac9dec9b90e6f271f86b
4
+ data.tar.gz: 290aeed6e3cb0b5b3e97bf8803c25ea0b3cd428b
5
+ SHA512:
6
+ metadata.gz: 4a34c055775e4b66e49b632850d1f8e3784ee4eb430a9b731167e9965f6f413505869b281a2c14ccfcb4f621259406d699ba408d64d1ad911b6f6faf3b2cc09f
7
+ data.tar.gz: 661e6fe5350d1a87f2b0f1330d254d5d81e7068cd320ee8416a820e275c348f37a9a9654ab87de3dc0ef62df40ed2447e8023196a83d2ec700876145183a4901
data/.gitignore ADDED
@@ -0,0 +1,9 @@
1
+ /.bundle/
2
+ /.yardoc
3
+ /Gemfile.lock
4
+ /_yardoc/
5
+ /coverage/
6
+ /doc/
7
+ /pkg/
8
+ /spec/reports/
9
+ /tmp/
data/.travis.yml ADDED
@@ -0,0 +1,4 @@
1
+ language: ruby
2
+ rvm:
3
+ - 2.2.3
4
+ before_install: gem install bundler -v 1.10.6
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source 'https://rubygems.org'
2
+
3
+ # Specify your gem's dependencies in crystal-dash-docset-generator.gemspec
4
+ gemspec
data/README.md ADDED
@@ -0,0 +1,3 @@
1
+ # Crystal::Dash::Docset::Generator
2
+
3
+ This is a docset generator for Crystal API documents using [Dashing](https://github.com/technosophos/dashing).
data/Rakefile ADDED
@@ -0,0 +1,10 @@
1
+ require "bundler/gem_tasks"
2
+ require "rake/testtask"
3
+
4
+ Rake::TestTask.new(:test) do |t|
5
+ t.libs << "test"
6
+ t.libs << "lib"
7
+ t.test_files = FileList['test/**/*_test.rb']
8
+ end
9
+
10
+ task :default => :test
data/bin/console ADDED
@@ -0,0 +1,14 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require "bundler/setup"
4
+ require "crystal/dash/docset/generator"
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
data/bin/setup ADDED
@@ -0,0 +1,7 @@
1
+ #!/bin/bash
2
+ set -euo pipefail
3
+ IFS=$'\n\t'
4
+
5
+ bundle install
6
+
7
+ # Do any other automated setup that you need to do here
@@ -0,0 +1,26 @@
1
+ # coding: utf-8
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require 'crystal/dash/docset/generator/version'
5
+
6
+ Gem::Specification.new do |spec|
7
+ spec.name = "crystal-dash-docset-generator"
8
+ spec.version = Crystal::Dash::Docset::Generator::VERSION
9
+ spec.authors = ["Hirofumi Wakasugi"]
10
+ spec.email = ["baenej@gmail.com"]
11
+
12
+ spec.summary = "This is a docset generator for Crystal API documents using Dashing"
13
+ spec.description = "Run crystal-dash-docset-generator to build the crystal docset from the latest Crystal API documents."
14
+ spec.homepage = "https://github.com/5t111111/crystal-dash-docset-generator"
15
+
16
+ spec.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
17
+ spec.bindir = "exe"
18
+ spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
19
+ spec.require_paths = ["lib"]
20
+
21
+ spec.add_development_dependency "nokogiri", "~> 1.6"
22
+
23
+ spec.add_development_dependency "bundler", "~> 1.10"
24
+ spec.add_development_dependency "rake", "~> 10.0"
25
+ spec.add_development_dependency "minitest"
26
+ end
@@ -0,0 +1,14 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require "crystal/dash/docset/generator"
4
+
5
+ @generator = Crystal::Dash::Docset::Generator::Generator.new(
6
+ root_url: "http://crystal-lang.org/api/",
7
+ package_name: "crystal"
8
+ )
9
+ @generator.prepare_directory
10
+ @generator.create_css
11
+ @generator.set_page_urls
12
+ @generator.create_source_docs { |file| puts file }
13
+ @generator.copy_dashing_config
14
+ @generator.generate_dash_docset
@@ -0,0 +1,18 @@
1
+ {
2
+ "name": "Crystal",
3
+ "package": "crystal",
4
+ "index": "index.html",
5
+ "selectors": {
6
+ "title": {
7
+ "type":"Class",
8
+ "regexp": " - github.com/manastech/crystal",
9
+ "replacement": ""
10
+ },
11
+ "div.signature": "Method"
12
+ },
13
+ "ignore": [
14
+ "ABOUT"
15
+ ],
16
+ "icon32x32": "crystal-icon.png",
17
+ "allowJS": false
18
+ }
@@ -0,0 +1,94 @@
1
+ require "crystal/dash/docset/generator/version"
2
+ require "open-uri"
3
+ require "nokogiri"
4
+ require "fileutils"
5
+
6
+ module Crystal::Dash::Docset::Generator
7
+ class Generator
8
+ attr_accessor :root_url
9
+ attr_accessor :package_name
10
+ attr_accessor :output_directory
11
+
12
+ def initialize(root_url: nil, package_name: nil)
13
+ @root_url = root_url
14
+ @package_name = package_name
15
+ @path_to_this = File.expand_path(File.dirname(__FILE__))
16
+ @output_directory = File.expand_path(File.join(Dir.pwd, @package_name))
17
+ end
18
+
19
+ def dashing_installed?
20
+ system("hash dashing 2>/dev/null")
21
+ $?.exitstatus == 0 ? true : false
22
+ end
23
+
24
+ def prepare_directory
25
+ return nil if File.exist?(@package_name)
26
+ Dir.mkdir(@package_name)
27
+ Dir.chdir(@package_name)
28
+ end
29
+
30
+ def create_css
31
+ Dir.chdir(@output_directory)
32
+ Dir.mkdir("css")
33
+ open("css/style.css", "wb") do |output|
34
+ open("#{root_url}css/style.css") do |f|
35
+ content = f.read
36
+ # Remove unwanted styles
37
+ content.gsub!(/left: 20%;/, "")
38
+ content.gsub!(/right: 0;/, "")
39
+ content.gsub!(/position: absolute;/, "")
40
+ content.gsub!(/overflow: hidden;/, "")
41
+ output.write(content)
42
+ end
43
+ end
44
+ end
45
+
46
+ def set_page_urls
47
+ charset = nil
48
+ root_html = open(@root_url) do |f|
49
+ charset = f.charset
50
+ f.read
51
+ end
52
+ root_doc = Nokogiri::HTML.parse(root_html, nil, charset)
53
+ types_list = root_doc.css("div#types-list")
54
+ @page_urls = types_list.css('a').inject([]) do |result, anchor|
55
+ result << anchor[:href]
56
+ end
57
+ end
58
+
59
+ def create_source_docs
60
+ Dir.chdir(@output_directory)
61
+ @page_urls.each do |url|
62
+ yield url if block_given?
63
+ charset = nil
64
+ FileUtils.mkdir_p(File.dirname(url))
65
+ open(url, "wb") do |output|
66
+ html = open(URI.join(@root_url, url)) do |f|
67
+ charset = f.charset
68
+ f.read
69
+ end
70
+ doc = Nokogiri::HTML.parse(html, nil, charset)
71
+ doc.css("div#types-list").remove
72
+ doc.css("a.method-permalink").remove
73
+ doc.css("script").remove
74
+ doc.css("a").each do |node|
75
+ node.remove if node.attr("href") == "https://travis-ci.org/manastech/crystal"
76
+ node.remove if node.attr("href") == "https://www.bountysource.com/teams/crystal-lang/fundraisers/702-crystal-language"
77
+ end
78
+ output.write(doc.to_html)
79
+ end
80
+ end
81
+ end
82
+
83
+ def copy_dashing_config
84
+ Dir.chdir(@output_directory)
85
+ FileUtils.cp(File.join(@path_to_this, "dashing.json"), "dashing.json")
86
+ FileUtils.cp(File.join(@path_to_this, "crystal-icon.png"), "crystal-icon.png")
87
+ end
88
+
89
+ def generate_dash_docset
90
+ Dir.chdir(@output_directory)
91
+ `dashing build #{@package_name}`
92
+ end
93
+ end
94
+ end
@@ -0,0 +1,9 @@
1
+ module Crystal
2
+ module Dash
3
+ module Docset
4
+ module Generator
5
+ VERSION = "0.1.0"
6
+ end
7
+ end
8
+ end
9
+ end
metadata ADDED
@@ -0,0 +1,114 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: crystal-dash-docset-generator
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ platform: ruby
6
+ authors:
7
+ - Hirofumi Wakasugi
8
+ autorequire:
9
+ bindir: exe
10
+ cert_chain: []
11
+ date: 2015-12-03 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: nokogiri
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '1.6'
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '1.6'
27
+ - !ruby/object:Gem::Dependency
28
+ name: bundler
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '1.10'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '1.10'
41
+ - !ruby/object:Gem::Dependency
42
+ name: rake
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '10.0'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: '10.0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: minitest
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ">="
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ">="
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
69
+ description: Run crystal-dash-docset-generator to build the crystal docset from the
70
+ latest Crystal API documents.
71
+ email:
72
+ - baenej@gmail.com
73
+ executables:
74
+ - crystal-dash-docset-generator
75
+ extensions: []
76
+ extra_rdoc_files: []
77
+ files:
78
+ - ".gitignore"
79
+ - ".travis.yml"
80
+ - Gemfile
81
+ - README.md
82
+ - Rakefile
83
+ - bin/console
84
+ - bin/setup
85
+ - crystal-dash-docset-generator.gemspec
86
+ - exe/crystal-dash-docset-generator
87
+ - lib/crystal/dash/docset/crystal-icon.png
88
+ - lib/crystal/dash/docset/dashing.json
89
+ - lib/crystal/dash/docset/generator.rb
90
+ - lib/crystal/dash/docset/generator/version.rb
91
+ homepage: https://github.com/5t111111/crystal-dash-docset-generator
92
+ licenses: []
93
+ metadata: {}
94
+ post_install_message:
95
+ rdoc_options: []
96
+ require_paths:
97
+ - lib
98
+ required_ruby_version: !ruby/object:Gem::Requirement
99
+ requirements:
100
+ - - ">="
101
+ - !ruby/object:Gem::Version
102
+ version: '0'
103
+ required_rubygems_version: !ruby/object:Gem::Requirement
104
+ requirements:
105
+ - - ">="
106
+ - !ruby/object:Gem::Version
107
+ version: '0'
108
+ requirements: []
109
+ rubyforge_project:
110
+ rubygems_version: 2.4.5.1
111
+ signing_key:
112
+ specification_version: 4
113
+ summary: This is a docset generator for Crystal API documents using Dashing
114
+ test_files: []