annyong 0.1
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/LICENSE +3 -0
- data/README.mkd +9 -0
- data/assets/css/annyong.css +90 -0
- data/assets/rack/config.ru +4 -0
- data/bin/annyong +39 -0
- data/lib/annyong.rb +4 -0
- data/lib/annyong/middleware.rb +31 -0
- metadata +87 -0
data/LICENSE
ADDED
data/README.mkd
ADDED
@@ -0,0 +1,90 @@
|
|
1
|
+
/* Basic # {{{ */
|
2
|
+
|
3
|
+
* {
|
4
|
+
padding: 0;
|
5
|
+
margin: 0;
|
6
|
+
}
|
7
|
+
|
8
|
+
html {
|
9
|
+
font-size: 62.5%;
|
10
|
+
}
|
11
|
+
|
12
|
+
body {
|
13
|
+
font-family: Helvetica, Arial, sans-serif;
|
14
|
+
white-space: nowrap;
|
15
|
+
font-size: 145%;
|
16
|
+
padding: 30px;
|
17
|
+
background: #fff;
|
18
|
+
color: #555;
|
19
|
+
}
|
20
|
+
|
21
|
+
a {
|
22
|
+
color: #508AD7;
|
23
|
+
}
|
24
|
+
|
25
|
+
hr {
|
26
|
+
display: none;
|
27
|
+
}
|
28
|
+
|
29
|
+
h1 {
|
30
|
+
margin: 0 0 15px;
|
31
|
+
font-size: 150%;
|
32
|
+
}
|
33
|
+
|
34
|
+
/* }}} */
|
35
|
+
|
36
|
+
/* Tables # {{{ */
|
37
|
+
|
38
|
+
table {
|
39
|
+
border-collapse: collapse;
|
40
|
+
background: #fff;
|
41
|
+
box-shadow: 0 0 10px rgba(0,0,0,0.1);
|
42
|
+
background: #fafafa;
|
43
|
+
border: 1px solid #ccc;
|
44
|
+
font-family: monospace;
|
45
|
+
}
|
46
|
+
|
47
|
+
table tr:nth-child(2) {
|
48
|
+
background: #fafafa !important;
|
49
|
+
}
|
50
|
+
|
51
|
+
table tr:nth-child(2) a {
|
52
|
+
color: #999;
|
53
|
+
}
|
54
|
+
|
55
|
+
table td, table th {
|
56
|
+
border-bottom: 1px solid #ccc;
|
57
|
+
padding: 6px 8px;
|
58
|
+
width: auto;
|
59
|
+
font-weight: normal;
|
60
|
+
text-align: left;
|
61
|
+
}
|
62
|
+
|
63
|
+
table th {
|
64
|
+
background: #eee;
|
65
|
+
color: #888;
|
66
|
+
}
|
67
|
+
|
68
|
+
table tr:hover {
|
69
|
+
background: rgba(255,255,0,0.1);
|
70
|
+
}
|
71
|
+
|
72
|
+
table td.name {
|
73
|
+
}
|
74
|
+
|
75
|
+
/* }}} */
|
76
|
+
|
77
|
+
/* Footer # {{{ */
|
78
|
+
|
79
|
+
footer {
|
80
|
+
padding: 16px 2px 6px;
|
81
|
+
text-align: right;
|
82
|
+
font-size: 90%;
|
83
|
+
color: #999;
|
84
|
+
}
|
85
|
+
|
86
|
+
footer a {
|
87
|
+
color: #aaa;
|
88
|
+
}
|
89
|
+
|
90
|
+
/* }}} */
|
data/bin/annyong
ADDED
@@ -0,0 +1,39 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
$:.unshift File.join(File.dirname(__FILE__), *%w[.. lib])
|
4
|
+
|
5
|
+
require "rubygems"
|
6
|
+
require 'optparse'
|
7
|
+
require "rack"
|
8
|
+
require "annyong"
|
9
|
+
|
10
|
+
options = {
|
11
|
+
:port => 9292,
|
12
|
+
:host => "0.0.0.0"
|
13
|
+
}
|
14
|
+
opts = OptionParser.new do |opts|
|
15
|
+
opts.banner = "Usage: annyong [options]
|
16
|
+
|
17
|
+
Options:
|
18
|
+
"
|
19
|
+
opts.on("--port [PORT]", "The port to use (default: 9292)") do |port|
|
20
|
+
options[:port] = port
|
21
|
+
end
|
22
|
+
|
23
|
+
opts.on("--host [HOST]", "The port to use (default: 0.0.0.0)") do |host|
|
24
|
+
options[:host] = host
|
25
|
+
end
|
26
|
+
|
27
|
+
#opts.on("--path [PATH]", "The directory to serve") do |path|
|
28
|
+
#options[:path] = path
|
29
|
+
#end
|
30
|
+
|
31
|
+
end
|
32
|
+
opts.parse!
|
33
|
+
|
34
|
+
Rack::Server.start({
|
35
|
+
:config => File.join(File.dirname(__FILE__), "../assets/rack/config.ru"),
|
36
|
+
:Port => options[:port],
|
37
|
+
:Host => options[:host],
|
38
|
+
:AccessLog => [],
|
39
|
+
})
|
data/lib/annyong.rb
ADDED
@@ -0,0 +1,31 @@
|
|
1
|
+
module Annyong
|
2
|
+
class Middleware
|
3
|
+
|
4
|
+
attr_reader :styles
|
5
|
+
|
6
|
+
def initialize(app) # {{{
|
7
|
+
@app = app
|
8
|
+
@styles = File.read(File.join(File.dirname(__FILE__), "../../assets/css/annyong.css"))
|
9
|
+
end # }}}
|
10
|
+
|
11
|
+
def inject(body) # {{{
|
12
|
+
body = body.sub(/<html>/, "<!doctype html>\n<html>")
|
13
|
+
body = body.sub(/<\/head>/, "<style type='text/css'>#{@styles}</style>")
|
14
|
+
body = body.sub(/<\/body>/, "<footer><code>#{`pwd`.chomp}</code>, <a target='_blank' title='Powered by annyong' href='https://github.com/remiprev/annyong'>annyong</a>!</footer></body")
|
15
|
+
body
|
16
|
+
end # }}}
|
17
|
+
|
18
|
+
def call(env) # {{{
|
19
|
+
status, headers, response = @app.call(env)
|
20
|
+
|
21
|
+
response_body = ""
|
22
|
+
response.each { |part| response_body += part }
|
23
|
+
response_body = inject(response_body)
|
24
|
+
|
25
|
+
headers["Content-Length"] = response_body.length.to_s
|
26
|
+
|
27
|
+
[status, headers, response_body]
|
28
|
+
end # }}}
|
29
|
+
|
30
|
+
end
|
31
|
+
end
|
metadata
ADDED
@@ -0,0 +1,87 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: annyong
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
hash: 9
|
5
|
+
prerelease:
|
6
|
+
segments:
|
7
|
+
- 0
|
8
|
+
- 1
|
9
|
+
version: "0.1"
|
10
|
+
platform: ruby
|
11
|
+
authors:
|
12
|
+
- "R\xC3\xA9mi Pr\xC3\xA9vost"
|
13
|
+
autorequire:
|
14
|
+
bindir: bin
|
15
|
+
cert_chain: []
|
16
|
+
|
17
|
+
date: 2011-04-03 00:00:00 -04:00
|
18
|
+
default_executable:
|
19
|
+
dependencies:
|
20
|
+
- !ruby/object:Gem::Dependency
|
21
|
+
name: rack
|
22
|
+
prerelease: false
|
23
|
+
requirement: &id001 !ruby/object:Gem::Requirement
|
24
|
+
none: false
|
25
|
+
requirements:
|
26
|
+
- - ">="
|
27
|
+
- !ruby/object:Gem::Version
|
28
|
+
hash: 19
|
29
|
+
segments:
|
30
|
+
- 1
|
31
|
+
- 1
|
32
|
+
- 0
|
33
|
+
version: 1.1.0
|
34
|
+
type: :runtime
|
35
|
+
version_requirements: *id001
|
36
|
+
description: Annyong starts a public static Web server in the current directory, allowing people in your local network to browse your files.
|
37
|
+
email: remi@exomel.com
|
38
|
+
executables:
|
39
|
+
- annyong
|
40
|
+
extensions: []
|
41
|
+
|
42
|
+
extra_rdoc_files: []
|
43
|
+
|
44
|
+
files:
|
45
|
+
- lib/annyong/middleware.rb
|
46
|
+
- lib/annyong.rb
|
47
|
+
- README.mkd
|
48
|
+
- LICENSE
|
49
|
+
- bin/annyong
|
50
|
+
- assets/css/annyong.css
|
51
|
+
- assets/rack/config.ru
|
52
|
+
has_rdoc: true
|
53
|
+
homepage: http://github.com/remiprev/annyong
|
54
|
+
licenses: []
|
55
|
+
|
56
|
+
post_install_message:
|
57
|
+
rdoc_options: []
|
58
|
+
|
59
|
+
require_paths:
|
60
|
+
- lib
|
61
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
62
|
+
none: false
|
63
|
+
requirements:
|
64
|
+
- - ">="
|
65
|
+
- !ruby/object:Gem::Version
|
66
|
+
hash: 3
|
67
|
+
segments:
|
68
|
+
- 0
|
69
|
+
version: "0"
|
70
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
71
|
+
none: false
|
72
|
+
requirements:
|
73
|
+
- - ">="
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
hash: 3
|
76
|
+
segments:
|
77
|
+
- 0
|
78
|
+
version: "0"
|
79
|
+
requirements: []
|
80
|
+
|
81
|
+
rubyforge_project:
|
82
|
+
rubygems_version: 1.6.0
|
83
|
+
signing_key:
|
84
|
+
specification_version: 3
|
85
|
+
summary: Start a public static Web server in the current directory.
|
86
|
+
test_files: []
|
87
|
+
|