guider 0.0.5 → 0.0.6
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/Rakefile +47 -0
- data/bin/guider +21 -1
- data/guider.gemspec +1 -1
- data/lib/guider/app.rb +1 -1
- data/lib/guider/config.rb +1 -1
- data/lib/guider/guide.rb +6 -2
- data/lib/guider/index.rb +5 -1
- data/lib/guider/inline_tags.rb +9 -2
- data/template/guide.html +13 -1
- data/template/index.html +11 -1
- data/template/sencha-logo.png +0 -0
- data/template/styles.css +57 -5
- metadata +4 -2
data/Rakefile
ADDED
@@ -0,0 +1,47 @@
|
|
1
|
+
require 'rubygems'
|
2
|
+
require 'rake'
|
3
|
+
require 'rspec'
|
4
|
+
require 'rspec/core/rake_task'
|
5
|
+
|
6
|
+
# prints command to standard out and executes it
|
7
|
+
def echo_cmd(cmd)
|
8
|
+
puts cmd
|
9
|
+
system cmd
|
10
|
+
end
|
11
|
+
|
12
|
+
desc "Bumps Guider minor version number"
|
13
|
+
task :bump do
|
14
|
+
# Extract version number and increment it
|
15
|
+
version_line = IO.read("guider.gemspec").lines.grep(/s\.version = /)[0]
|
16
|
+
version_line =~ /([0-9]+)\.([0-9]+).([0-9]+)/
|
17
|
+
old_version = "#{$1}.#{$2}.#{$3}"
|
18
|
+
new_version = "#{$1}.#{$2}.#{$3.to_i + 1}"
|
19
|
+
puts "Bumping from #{old_version} to #{new_version}"
|
20
|
+
|
21
|
+
# Replace it in guider.gemspec
|
22
|
+
contents = IO.read("guider.gemspec")
|
23
|
+
contents.sub!(/s\.version = '#{old_version}'/, "s.version = '#{new_version}'")
|
24
|
+
File.open("guider.gemspec", "w") {|f| f.write(contents) }
|
25
|
+
|
26
|
+
# Replace it in bin/guider
|
27
|
+
contents = IO.read("bin/guider")
|
28
|
+
contents.sub!(/VERSION = '#{old_version}'/, "VERSION = '#{new_version}'")
|
29
|
+
File.open("bin/guider", "w") {|f| f.write(contents) }
|
30
|
+
|
31
|
+
# Create a commit
|
32
|
+
echo_cmd("git commit guider.gemspec bin/guider -m 'Up version to #{new_version}.'")
|
33
|
+
# Create a tag
|
34
|
+
echo_cmd("git tag -a v#{new_version} -m 'Tagging #{new_version} release.'")
|
35
|
+
end
|
36
|
+
|
37
|
+
desc "Build Guider gem"
|
38
|
+
task :gem do
|
39
|
+
system "gem build guider.gemspec"
|
40
|
+
end
|
41
|
+
|
42
|
+
RSpec::Core::RakeTask.new(:spec) do |spec|
|
43
|
+
spec.rspec_opts = ["--color"]
|
44
|
+
spec.pattern = "spec/**/*_spec.rb"
|
45
|
+
end
|
46
|
+
|
47
|
+
task :default => :spec
|
data/bin/guider
CHANGED
@@ -7,8 +7,18 @@ require "rubygems"
|
|
7
7
|
require "optparse"
|
8
8
|
require "guider/app"
|
9
9
|
|
10
|
+
VERSION = '0.0.6'
|
11
|
+
|
12
|
+
def format_footer(text)
|
13
|
+
guider = "<a href='https://github.com/nene/guider'>Guider</a>"
|
14
|
+
date = Time.new.strftime('%a %d %b %Y %H:%M:%S')
|
15
|
+
text.gsub(/\{VERSION\}/, VERSION).gsub(/\{GUIDER\}/, guider).gsub(/\{DATE\}/, date)
|
16
|
+
end
|
17
|
+
|
10
18
|
options = {
|
11
19
|
:output => Dir.pwd + "/out",
|
20
|
+
:title => "Guides",
|
21
|
+
:footer => format_footer("Generated on {DATE} by {GUIDER} {VERSION}."),
|
12
22
|
:link_url => "http://localhost/extjs/",
|
13
23
|
:tpl_dir => File.dirname(File.dirname(__FILE__)) + "/template",
|
14
24
|
:warnings => false,
|
@@ -23,6 +33,16 @@ input_files = OptionParser.new do |opts|
|
|
23
33
|
options[:output] = File.absolute_path(dir)
|
24
34
|
end
|
25
35
|
|
36
|
+
opts.on("--title=TEXT", "The title for the whole set of guides.",
|
37
|
+
"Defaults to: Guides.") do |title|
|
38
|
+
options[:title] = title
|
39
|
+
end
|
40
|
+
|
41
|
+
opts.on("--footer=TEXT", "The footer text.",
|
42
|
+
"Defaults to: Generated on {DATE} by {GUIDER} {VERSION}.") do |footer|
|
43
|
+
options[:footer] = format_footer(footer)
|
44
|
+
end
|
45
|
+
|
26
46
|
opts.on("--link-url=URL", "Base path for links created by {@link} tags.",
|
27
47
|
"Defaults to http://localhost/extjs/") do |url|
|
28
48
|
options[:link_url] = url
|
@@ -42,7 +62,7 @@ input_files = OptionParser.new do |opts|
|
|
42
62
|
end
|
43
63
|
|
44
64
|
opts.on("--version", "Prints guider version number.") do
|
45
|
-
puts "Guider
|
65
|
+
puts "Guider #{VERSION}"
|
46
66
|
exit
|
47
67
|
end
|
48
68
|
end.parse!
|
data/guider.gemspec
CHANGED
@@ -2,7 +2,7 @@ Gem::Specification.new do |s|
|
|
2
2
|
s.required_rubygems_version = ">= 1.3.5"
|
3
3
|
|
4
4
|
s.name = 'guider'
|
5
|
-
s.version = '0.0.
|
5
|
+
s.version = '0.0.6'
|
6
6
|
s.date = Time.new.strftime('%Y-%m-%d')
|
7
7
|
s.summary = "Sencha guide generator"
|
8
8
|
s.description = "JSDuck-compatible guides generator"
|
data/lib/guider/app.rb
CHANGED
@@ -46,7 +46,7 @@ module Guider
|
|
46
46
|
|
47
47
|
# Copies over main template resources
|
48
48
|
def copy_template_files
|
49
|
-
Dir[@options[:tpl_dir]+"/*.{js,css,ico}"].each do |fname|
|
49
|
+
Dir[@options[:tpl_dir]+"/*.{js,css,ico,png}"].each do |fname|
|
50
50
|
FileUtils.cp(fname, @options[:output])
|
51
51
|
end
|
52
52
|
end
|
data/lib/guider/config.rb
CHANGED
@@ -20,7 +20,7 @@ module Guider
|
|
20
20
|
|
21
21
|
items.each do |guide|
|
22
22
|
if guide["items"]
|
23
|
-
list << "<li>" + guide["title"] + "
|
23
|
+
list << "<li><span>" + guide["title"] + "</span>\n" + to_list(guide["items"]) + "</li>"
|
24
24
|
else
|
25
25
|
list << "<li>#{to_link(guide)}</li>"
|
26
26
|
end
|
data/lib/guider/guide.rb
CHANGED
@@ -8,6 +8,7 @@ module Guider
|
|
8
8
|
@template = tpl
|
9
9
|
@inline_tags = inline_tags
|
10
10
|
@input_filename = filename
|
11
|
+
@options = options
|
11
12
|
@markdown = IO.read(filename)
|
12
13
|
@rel_path = relative_path(options[:input], filename)
|
13
14
|
@html = Kramdown::Document.new(@markdown).to_html
|
@@ -15,10 +16,13 @@ module Guider
|
|
15
16
|
|
16
17
|
def write(filename)
|
17
18
|
Logger.context = @input_filename
|
19
|
+
@inline_tags.base_url = @rel_path
|
18
20
|
html = @inline_tags.replace(@html)
|
19
21
|
html = @template.apply({
|
20
22
|
:content => html,
|
21
|
-
:title => title,
|
23
|
+
:title => @options[:title],
|
24
|
+
:footer => @options[:footer],
|
25
|
+
:guide_name => guide_name,
|
22
26
|
:path => @rel_path,
|
23
27
|
})
|
24
28
|
File.open(filename, 'w') {|f| f.write(html) }
|
@@ -29,7 +33,7 @@ module Guider
|
|
29
33
|
end
|
30
34
|
|
31
35
|
# Extracts the first line from markdown
|
32
|
-
def
|
36
|
+
def guide_name
|
33
37
|
@markdown =~ /\A(.*?)$/
|
34
38
|
result = $1.sub(/^#/, '').strip
|
35
39
|
|
data/lib/guider/index.rb
CHANGED
@@ -10,7 +10,11 @@ module Guider
|
|
10
10
|
end
|
11
11
|
|
12
12
|
def write
|
13
|
-
html = @tpl.apply(
|
13
|
+
html = @tpl.apply({
|
14
|
+
:title => @options[:title],
|
15
|
+
:footer => @options[:footer],
|
16
|
+
:content => @config.to_html,
|
17
|
+
})
|
14
18
|
File.open(@options[:output] + "/index.html", 'w') {|f| f.write(html) }
|
15
19
|
end
|
16
20
|
|
data/lib/guider/inline_tags.rb
CHANGED
@@ -4,9 +4,12 @@ module Guider
|
|
4
4
|
class InlineTags
|
5
5
|
# The base URL for links created by {@link} tags.
|
6
6
|
attr_accessor :link_url
|
7
|
+
# The base URL for referencing guides from root dir.
|
8
|
+
attr_accessor :base_url
|
7
9
|
|
8
10
|
def initialize
|
9
11
|
@link_url = ""
|
12
|
+
@base_url = "."
|
10
13
|
end
|
11
14
|
|
12
15
|
def replace(html)
|
@@ -49,8 +52,12 @@ module Guider
|
|
49
52
|
end
|
50
53
|
|
51
54
|
def replace_old_guide_links!(html)
|
52
|
-
replace!(html, /<a href="#!?\/guide\/(
|
53
|
-
|
55
|
+
replace!(html, /<a href="#!?\/guide\/([^"]+)">/) do |name|
|
56
|
+
# Transform links to .md files into .html file links
|
57
|
+
name.sub!(/README\.md$/, "index.html")
|
58
|
+
name.sub!(/\.md$/, ".html")
|
59
|
+
|
60
|
+
"<a href='#{@base_url}/#{name}'>"
|
54
61
|
end
|
55
62
|
end
|
56
63
|
|
data/template/guide.html
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
<!DOCTYPE html>
|
2
2
|
<html>
|
3
3
|
<head>
|
4
|
-
<title>{title}</title>
|
4
|
+
<title>{guide_name} - {title}</title>
|
5
5
|
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
6
6
|
<link rel="shortcut icon" type="image/ico" href="{path}/favicon.ico" />
|
7
7
|
<link rel="stylesheet" type="text/css" href="{path}/styles.css" />
|
@@ -10,7 +10,19 @@
|
|
10
10
|
</head>
|
11
11
|
<body>
|
12
12
|
|
13
|
+
<div id="container">
|
14
|
+
<div id="header">
|
15
|
+
<h1><a href="{path}">{title}</a></h1>
|
16
|
+
</div>
|
17
|
+
|
18
|
+
<div id="content">
|
13
19
|
{content}
|
20
|
+
</div>
|
21
|
+
</div>
|
22
|
+
|
23
|
+
<div id="footer">
|
24
|
+
<p>{footer}</p>
|
25
|
+
</div>
|
14
26
|
|
15
27
|
<script type="text/javascript">
|
16
28
|
(function(){
|
data/template/index.html
CHANGED
@@ -8,9 +8,19 @@
|
|
8
8
|
</head>
|
9
9
|
<body id="index-page">
|
10
10
|
|
11
|
-
<
|
11
|
+
<div id="container">
|
12
|
+
<div id="header">
|
13
|
+
<h1><a href="{path}">{title}</a></h1>
|
14
|
+
</div>
|
12
15
|
|
16
|
+
<div id="content">
|
13
17
|
{content}
|
18
|
+
</div>
|
19
|
+
</div>
|
20
|
+
|
21
|
+
<div id="footer">
|
22
|
+
<p>{footer}</p>
|
23
|
+
</div>
|
14
24
|
|
15
25
|
<script type="text/javascript">
|
16
26
|
(function(){
|
Binary file
|
data/template/styles.css
CHANGED
@@ -4,8 +4,8 @@ body {
|
|
4
4
|
line-height: 1.231;
|
5
5
|
color: #484848;
|
6
6
|
background: #f8f8f8;
|
7
|
-
|
8
|
-
|
7
|
+
margin: 0;
|
8
|
+
padding: 0;
|
9
9
|
}
|
10
10
|
|
11
11
|
h1 {
|
@@ -39,10 +39,62 @@ img {
|
|
39
39
|
margin: 0 auto;
|
40
40
|
}
|
41
41
|
|
42
|
+
/* Page header and content sections */
|
43
|
+
|
44
|
+
#header {
|
45
|
+
background: #074E7C url(sencha-logo.png) 5px center no-repeat;
|
46
|
+
padding-left: 30px;
|
47
|
+
}
|
48
|
+
#header h1 {
|
49
|
+
margin: 0;
|
50
|
+
font-size: 16px;
|
51
|
+
line-height: 40px;
|
52
|
+
}
|
53
|
+
#header a {
|
54
|
+
color: white;
|
55
|
+
}
|
56
|
+
|
57
|
+
#content {
|
58
|
+
max-width: 900px;
|
59
|
+
margin: 0 auto;
|
60
|
+
padding: 1em;
|
61
|
+
}
|
62
|
+
|
63
|
+
/* Create sticky footer */
|
64
|
+
html, body, #container {
|
65
|
+
height: 100%;
|
66
|
+
}
|
67
|
+
body > #container {
|
68
|
+
height: auto;
|
69
|
+
min-height: 100%;
|
70
|
+
}
|
71
|
+
#footer {
|
72
|
+
clear: both;
|
73
|
+
position: relative;
|
74
|
+
z-index: 10;
|
75
|
+
height: 20px;
|
76
|
+
margin-top: -20px;
|
77
|
+
}
|
78
|
+
|
79
|
+
/* Other footer styles */
|
80
|
+
#footer {
|
81
|
+
text-align: right;
|
82
|
+
font-size: 10px;
|
83
|
+
width: 100%;
|
84
|
+
}
|
85
|
+
#footer p {
|
86
|
+
padding-right: 20px;
|
87
|
+
margin: 0;
|
88
|
+
}
|
42
89
|
|
43
90
|
/* Special styles for guides list in index page */
|
44
91
|
|
45
|
-
body#index-page > ul > li {margin-bottom: 0.5em;}
|
46
|
-
body#index-page > ul > li > ul {margin: 0.5em 0; font-size: smaller;}
|
47
|
-
body#index-page > ul > li > a:link {font-weight: bold; }
|
92
|
+
body#index-page #content > ul > li {margin-bottom: 0.5em; }
|
93
|
+
body#index-page #content > ul > li > ul {margin: 0.5em 0; font-size: smaller; }
|
94
|
+
body#index-page #content > ul > li > a:link {font-weight: bold; }
|
48
95
|
|
96
|
+
body#index-page #content > ul > li > span {
|
97
|
+
color: #66ab16;
|
98
|
+
font-family: "Exo", sans-serif;
|
99
|
+
font-weight: bold;
|
100
|
+
}
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: guider
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.6
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2013-03-
|
12
|
+
date: 2013-03-26 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: kramdown
|
@@ -53,6 +53,7 @@ files:
|
|
53
53
|
- .gitignore
|
54
54
|
- COPYING
|
55
55
|
- README.md
|
56
|
+
- Rakefile
|
56
57
|
- bin/guider
|
57
58
|
- guider.gemspec
|
58
59
|
- lib/guider/app.rb
|
@@ -68,6 +69,7 @@ files:
|
|
68
69
|
- template/index.html
|
69
70
|
- template/prettify.css
|
70
71
|
- template/prettify.js
|
72
|
+
- template/sencha-logo.png
|
71
73
|
- template/styles.css
|
72
74
|
homepage: https://github.com/nene/guider
|
73
75
|
licenses: []
|