remi-syntax-on 0.1.7 → 0.1.8
Sign up to get free protection for your applications and to get access to all the features.
- data/TODO +3 -0
- data/lib/syntax-on/browser.rb +83 -0
- metadata +3 -1
data/TODO
ADDED
@@ -0,0 +1,83 @@
|
|
1
|
+
class SyntaxOn::Browser
|
2
|
+
|
3
|
+
attr_accessor :request, :response, :current_theme
|
4
|
+
|
5
|
+
def initialize directory = '.'
|
6
|
+
@directory = directory || '.'
|
7
|
+
end
|
8
|
+
|
9
|
+
def call env
|
10
|
+
@pwd = Dir.pwd
|
11
|
+
Dir.chdir @directory
|
12
|
+
|
13
|
+
@response = Rack::Response.new
|
14
|
+
@request = Rack::Request.new env
|
15
|
+
|
16
|
+
@current_theme = request['theme'] if request['theme'] and SyntaxOn.theme_names.include? request['theme']
|
17
|
+
|
18
|
+
if request.path_info[/^\/styles\/(.*)\.css$/]
|
19
|
+
response['Content-Type'] = 'text/css'
|
20
|
+
response.body = SyntaxOn::theme request.path_info.match(/^\/styles\/(.*)\.css$/)[1]
|
21
|
+
else
|
22
|
+
response.body = response_for env
|
23
|
+
end
|
24
|
+
|
25
|
+
Dir.chdir @pwd
|
26
|
+
|
27
|
+
response.finish
|
28
|
+
end
|
29
|
+
|
30
|
+
def response_for env
|
31
|
+
path = env['PATH_INFO'].sub '/',''
|
32
|
+
|
33
|
+
if File.file? path
|
34
|
+
code_layout SyntaxOn.new( nil, :file => path ).to_html
|
35
|
+
else
|
36
|
+
code_layout
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
40
|
+
def file_list
|
41
|
+
'<ul>' + Dir['**/*'].map { |file_or_dir| %{<li><a href="/#{file_or_dir}">#{file_or_dir}</a></li>} }.join + '</ul>'
|
42
|
+
end
|
43
|
+
|
44
|
+
def theme_selector
|
45
|
+
<<HTML
|
46
|
+
<select id="theme-selector" onchange="javascript:window.location = window.location.toString().replace(/\\?.*/,'') + '?theme=' + document.getElementById('theme-selector').value">
|
47
|
+
<option>... select a theme ...</option>
|
48
|
+
#{ SyntaxOn::theme_names.map { |theme| "<option>#{theme}</option>" } }
|
49
|
+
</select>
|
50
|
+
HTML
|
51
|
+
end
|
52
|
+
|
53
|
+
def code_layout code = ''
|
54
|
+
<<HTML
|
55
|
+
<html>
|
56
|
+
<head>
|
57
|
+
<script src="http://jquery.com/src/jquery-latest.js" type="text/javascript"></script>
|
58
|
+
<style type="text/css">
|
59
|
+
<!--
|
60
|
+
select { position: absolute; top: 5px; right: 5px; }
|
61
|
+
-->
|
62
|
+
</style>
|
63
|
+
<link rel="stylesheet" href="/styles/#{ current_theme }.css" type="text/css" />
|
64
|
+
<head>
|
65
|
+
<body>
|
66
|
+
<h1>#{ @request.path_info }</h1>
|
67
|
+
#{ theme_selector }
|
68
|
+
<hr />
|
69
|
+
<pre>
|
70
|
+
#{ code }
|
71
|
+
</pre>
|
72
|
+
<hr />
|
73
|
+
#{ file_list }
|
74
|
+
</body>
|
75
|
+
</html>
|
76
|
+
HTML
|
77
|
+
end
|
78
|
+
|
79
|
+
def css # need to fix this ... can't seem to find the theme directory when running in thin ...
|
80
|
+
SyntaxOn::theme :murphy
|
81
|
+
end
|
82
|
+
|
83
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: remi-syntax-on
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.8
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- remi Taylor
|
@@ -33,6 +33,7 @@ files:
|
|
33
33
|
- bin/syntax-on
|
34
34
|
- lib/syntax-on.rb
|
35
35
|
- lib/syntax-on/bin.rb
|
36
|
+
- lib/syntax-on/browser.rb
|
36
37
|
- themes/rubyblue.css
|
37
38
|
- themes/peachpuff.css
|
38
39
|
- themes/blue.css
|
@@ -54,6 +55,7 @@ files:
|
|
54
55
|
- themes/torte.css
|
55
56
|
- themes/shine.css
|
56
57
|
- README
|
58
|
+
- TODO
|
57
59
|
has_rdoc: true
|
58
60
|
homepage: http://github.com/remi/syntax-on
|
59
61
|
post_install_message:
|