guide-em-up 0.2.0 → 0.3.0

Sign up to get free protection for your applications and to get access to all the features.
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