guide-em-up 0.2.0 → 0.3.0

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
@@ -15,6 +15,9 @@ It's really simple:
15
15
  3. Launch `guide-em-up` and open http://localhost:9000 in your browser
16
16
  4. Select your guide and enjoy :-)
17
17
 
18
+ You must also install [pygments](http://pygments.org/) if you want syntax
19
+ highlighting.
20
+
18
21
 
19
22
  Issues or Suggestions
20
23
  ---------------------
@@ -6,6 +6,8 @@
6
6
  <link href='http://fonts.googleapis.com/css?family=Ubuntu&v2' rel='stylesheet' type='text/css'>
7
7
  <link href='http://fonts.googleapis.com/css?family=Droid+Sans+Mono&v2' rel='stylesheet' type='text/css'>
8
8
  <style>
9
+ section, article { display: block; }
10
+
9
11
  #container {
10
12
  margin: 0 auto;
11
13
  max-width: 920px;
@@ -31,10 +33,7 @@
31
33
  </head>
32
34
  <body>
33
35
  <section id="container">
34
- <header>
35
- <h1><%= title %></h1>
36
- <h2><%= Date.today.strftime "%d/%m/%Y" %></h2>
37
- </header>
36
+ <h1><%= title %> &ndash; <%= Date.today.strftime "%d/%m/%Y" %></h1>
38
37
  <article>
39
38
  <%= content %>
40
39
  </article>
@@ -18,7 +18,7 @@ module GuideEmUp
18
18
  filename = File.join(@root, path_info)
19
19
  datafile = File.join(@data, path_info)
20
20
  if File.file?(filename)
21
- serve_guide(filename)
21
+ serve_file(filename)
22
22
  elsif filename.include? ".."
23
23
  unauthorized_access
24
24
  elsif File.directory?(filename)
@@ -35,6 +35,15 @@ module GuideEmUp
35
35
 
36
36
  protected
37
37
 
38
+ def serve_file(filename)
39
+ mime = Rack::Mime.mime_type(File.extname filename)
40
+ if mime =~ /^(audio|image|video)\//
41
+ serve_data(filename, mime)
42
+ else
43
+ serve_guide(filename)
44
+ end
45
+ end
46
+
38
47
  def serve_guide(filename)
39
48
  body = Guide.new(filename, @theme.template).html
40
49
  [200, {
@@ -51,11 +60,12 @@ module GuideEmUp
51
60
  }, [body] ]
52
61
  end
53
62
 
54
- def serve_data(filename)
63
+ def serve_data(filename, mime=nil)
55
64
  if File.exists?(filename)
56
- body = File.read(filename)
65
+ body = File.read(filename)
66
+ mime ||= Rack::Mime.mime_type(File.extname filename)
57
67
  [200, {
58
- "Content-Type" => Rack::Mime.mime_type(File.extname filename),
68
+ "Content-Type" => mime,
59
69
  "Content-Length" => Rack::Utils.bytesize(body).to_s,
60
70
  }, [body] ]
61
71
  else
@@ -6,11 +6,12 @@ require "yajl"
6
6
 
7
7
 
8
8
  module GuideEmUp
9
- class Guide < Struct.new(:filename, :title, :template)
9
+ class Guide < Struct.new(:filename, :directory, :title, :template)
10
10
  def initialize(filename, template)
11
- self.filename = filename
12
- self.title = File.basename(filename)
13
- self.template = template
11
+ self.filename = filename
12
+ self.directory = File.dirname(filename)
13
+ self.title = File.basename(filename)
14
+ self.template = template
14
15
  @codemap = {}
15
16
  end
16
17
 
@@ -27,11 +28,20 @@ module GuideEmUp
27
28
 
28
29
  def content
29
30
  raw = File.read(filename)
30
- tmp = extract_code(raw)
31
- red = Redcarpet.new(tmp, :autolink, :generate_toc, :smart, :strikethrough, :tables)
31
+ tmp = extract_code(insert_include raw, directory)
32
+ ext = [:autolink, :generate_toc, :no_intraemphasis, :smart, :strikethrough, :tables]
33
+ red = Redcarpet.new(tmp, *ext)
32
34
  process_code red.to_html
33
35
  end
34
36
 
37
+ def insert_include(md, dir)
38
+ md.gsub(/!INCLUDE (\S+)/) do
39
+ file = File.join(dir, $1)
40
+ idir = File.dirname(file)
41
+ insert_include File.read(file), idir
42
+ end
43
+ end
44
+
35
45
  # Code taken from gollum (http://github.com/github/gollum)
36
46
  def extract_code(md)
37
47
  md.gsub(/^``` ?(.+?)\r?\n(.+?)\r?\n```\r?$/m) do
@@ -1,3 +1,3 @@
1
1
  module GuideEmUp
2
- VERSION = "0.2.0"
2
+ VERSION = "0.3.0"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: guide-em-up
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.3.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,11 +9,11 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2011-08-23 00:00:00.000000000Z
12
+ date: 2011-09-08 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: goliath
16
- requirement: &74069870 !ruby/object:Gem::Requirement
16
+ requirement: &76805740 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ~>
@@ -21,10 +21,10 @@ dependencies:
21
21
  version: '0.9'
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *74069870
24
+ version_requirements: *76805740
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: redcarpet
27
- requirement: &74069400 !ruby/object:Gem::Requirement
27
+ requirement: &76805410 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ~>
@@ -32,10 +32,10 @@ dependencies:
32
32
  version: '1.17'
33
33
  type: :runtime
34
34
  prerelease: false
35
- version_requirements: *74069400
35
+ version_requirements: *76805410
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: erubis
38
- requirement: &74068770 !ruby/object:Gem::Requirement
38
+ requirement: &76805140 !ruby/object:Gem::Requirement
39
39
  none: false
40
40
  requirements:
41
41
  - - ~>
@@ -43,10 +43,10 @@ dependencies:
43
43
  version: '2.7'
44
44
  type: :runtime
45
45
  prerelease: false
46
- version_requirements: *74068770
46
+ version_requirements: *76805140
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: yajl-ruby
49
- requirement: &74068390 !ruby/object:Gem::Requirement
49
+ requirement: &76804850 !ruby/object:Gem::Requirement
50
50
  none: false
51
51
  requirements:
52
52
  - - ~>
@@ -54,10 +54,10 @@ dependencies:
54
54
  version: '0.8'
55
55
  type: :runtime
56
56
  prerelease: false
57
- version_requirements: *74068390
57
+ version_requirements: *76804850
58
58
  - !ruby/object:Gem::Dependency
59
59
  name: albino
60
- requirement: &74068030 !ruby/object:Gem::Requirement
60
+ requirement: &76804560 !ruby/object:Gem::Requirement
61
61
  none: false
62
62
  requirements:
63
63
  - - ~>
@@ -65,10 +65,10 @@ dependencies:
65
65
  version: '1.3'
66
66
  type: :runtime
67
67
  prerelease: false
68
- version_requirements: *74068030
68
+ version_requirements: *76804560
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: minitest
71
- requirement: &74067710 !ruby/object:Gem::Requirement
71
+ requirement: &76804290 !ruby/object:Gem::Requirement
72
72
  none: false
73
73
  requirements:
74
74
  - - ~>
@@ -76,7 +76,7 @@ dependencies:
76
76
  version: '2.3'
77
77
  type: :development
78
78
  prerelease: false
79
- version_requirements: *74067710
79
+ version_requirements: *76804290
80
80
  description: Slide'em up is a tool for writing guides in markdown
81
81
  email: bruno.michel@af83.com
82
82
  executables:
@@ -137,7 +137,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
137
137
  version: '0'
138
138
  requirements: []
139
139
  rubyforge_project:
140
- rubygems_version: 1.8.5
140
+ rubygems_version: 1.8.9
141
141
  signing_key:
142
142
  specification_version: 3
143
143
  summary: Slide'em up is a tool for writing guides in markdown and generates one-page