wtails 0.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.
@@ -0,0 +1,30 @@
1
+ var Wtails = {
2
+ run: function(host, port, filter) {
3
+ var self = this;
4
+ jQuery(function($) {
5
+ var url = 'ws://' + host + ':' + port;
6
+ console.log(url);
7
+ var socket = new (WebSocket || MozWebSocket)(url);
8
+ var context = { port: port };
9
+
10
+ socket.onmessage = function(message) {
11
+ $('.port-' + context.port).each(function() {
12
+ var curr = $(this);
13
+
14
+ // To ignore serial empty lines
15
+ if (message.data == '\n' && curr.find('pre:last').text() == '\n') return;
16
+
17
+ // apply filter
18
+ var line = $('<pre>').text(message.data);
19
+ line = filter(line);
20
+
21
+ // Insert a new line
22
+ curr.append(line);
23
+
24
+ // Scroll to bottom of the page
25
+ curr.parent().scrollTop(curr.height());
26
+ });
27
+ };
28
+ });
29
+ },
30
+ };
data/views/_init.erb ADDED
@@ -0,0 +1,14 @@
1
+ <script type="text/javascript">
2
+ var filter = function(line) {
3
+ <% if wtailsrc %>
4
+ <%= wtailsrc %>
5
+ <% end %>
6
+ return line;
7
+ };
8
+ <% files.each do |file, port| %>
9
+ Wtails.run('<%= host %>', <%= port %>, filter);
10
+ <% end %>
11
+ $(function() {
12
+ $('.slider').lemmonSlider({'infinite':false, 'focusCenter': true});
13
+ });
14
+ </script>
data/views/_pane.erb ADDED
@@ -0,0 +1,33 @@
1
+ <div class="slider">
2
+ <ul>
3
+ <% files.each do |file, port| %>
4
+ <li>
5
+ <div class="terminal-title">
6
+ <%= file == '-' ? '&lt;STDIN&gt;' : file %>
7
+ </div>
8
+ <div class="terminal-place">
9
+ <div class="terminal-frame">
10
+ <div class="terminal port-<%= port %>">
11
+ </div>
12
+ </div>
13
+ </div>
14
+ </li>
15
+ <% end %>
16
+ </ul>
17
+ </div>
18
+ <div class="controls">
19
+ <a class="prev-slide floating-button" href="#">
20
+ <span>
21
+ <svg class="left-button" viewBox="0 0 32 32" preserveAspectRatio="none">
22
+ <polygon points="32,0 0,16, 32,32" style="fill:#ccc"/>
23
+ </svg>
24
+ </span>
25
+ </a>
26
+ <a class="next-slide floating-button" href="#">
27
+ <span>
28
+ <svg class="right-button" viewBox="0 0 32 32" preserveAspectRatio="none">
29
+ <polygon points="0,0 32,16, 0,32" style="fill:#ccc"/>
30
+ </svg>
31
+ </span>
32
+ </a>
33
+ </div>
data/views/dual.erb ADDED
@@ -0,0 +1,45 @@
1
+ <!DOCTYPE HTML>
2
+ <html>
3
+ <head>
4
+ <meta charset="UTF-8">
5
+ <title>Wtails</title>
6
+ <link rel="stylesheet" href="/css/style.css"/>
7
+ <link rel="icon" href="/images/favicon.ico">
8
+ <script type="text/javascript" src="/js/jquery.min.js"></script>
9
+ <script type="text/javascript" src="/js/lemmon-slider.js"></script>
10
+ <script type="text/javascript" src="/js/tinycon.js"></script>
11
+ <script type="text/javascript" src="/js/wtails.js"></script>
12
+ <%= erb :_init, :locals => { :files => files, :wtailsrc => wtailsrc, :host => host } %>
13
+ <style>
14
+ .terminal-place {
15
+ width: 240px;
16
+ }
17
+ .terminal-frame {
18
+ width: 200%;
19
+ height: 200%;
20
+ transform: scale(0.5);
21
+ -moz-transform: scale(0.5);
22
+ -webkit-transform: scale(0.5);
23
+ transform-origin: 0 0;
24
+ -moz-transform-origin: 0 0;
25
+ -webkit-transform-origin: 0 0;
26
+ }
27
+ </style>
28
+ </head>
29
+ <body>
30
+ <header>
31
+ <div>
32
+ <a href="/single">single view</a>
33
+ </div>
34
+ </header>
35
+ <div class="main-view">
36
+ <% even, odd = (0...files.size).partition { |x| x%2 == 0 }.map { |s| s.map { |x| files[x] } } %>
37
+ <div class="pane-half">
38
+ <%= erb :_pane, :locals => { :files => even, :terminal_width => 240 } %>
39
+ </div>
40
+ <div class="pane-half">
41
+ <%= erb :_pane, :locals => { :files => odd, :terminal_width => 240 } %>
42
+ </div>
43
+ </div>
44
+ </body>
45
+ </html>
data/views/single.erb ADDED
@@ -0,0 +1,31 @@
1
+ <!DOCTYPE HTML>
2
+ <html>
3
+ <head>
4
+ <meta charset="UTF-8">
5
+ <title>Wtails</title>
6
+ <link rel="stylesheet" href="/css/style.css"/>
7
+ <link rel="icon" href="/images/favicon.ico">
8
+ <script type="text/javascript" src="/js/jquery.min.js"></script>
9
+ <script type="text/javascript" src="/js/lemmon-slider.js"></script>
10
+ <script type="text/javascript" src="/js/tinycon.js"></script>
11
+ <script type="text/javascript" src="/js/wtails.js"></script>
12
+ <%= erb :_init, :locals => { :files => files, :wtailsrc => wtailsrc, :host => host } %>
13
+ <style>
14
+ .terminal-place {
15
+ width: 480px;
16
+ }
17
+ </style>
18
+ </head>
19
+ <body>
20
+ <header>
21
+ <div>
22
+ <a href="/dual">dual view</a>
23
+ </div>
24
+ </header>
25
+ <div class="main-view">
26
+ <div class="pane-full">
27
+ <%= erb :_pane, :locals => { :files => files, :terminal_width => 480 } %>
28
+ </div>
29
+ </div>
30
+ </body>
31
+ </html>
data/views/test.erb ADDED
@@ -0,0 +1,30 @@
1
+ <!doctype html>
2
+ <html>
3
+ <head>
4
+ <meta charset="utf-8">
5
+ <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
6
+ <meta name="viewport" content="width=device-width, minimum-scale=1.0, maximum-scale=1.0">
7
+
8
+ <title>Carousel With Variable Elements Widths | Lemmon jQuery</title>
9
+
10
+ <script src="http://static.lemmonjuice.com/public/jquery/jquery-1.6.min.js"></script>
11
+ <script>
12
+ $(function() {
13
+ $('#baz').appendTo('#bar');
14
+ });
15
+ </script>
16
+ </head>
17
+
18
+ <body>
19
+ <div id="foo">
20
+ foo
21
+ <div id="baz">
22
+ baz
23
+ </div>
24
+ </div>
25
+ <div id="bar">
26
+ bar
27
+ </div>
28
+
29
+ </body>
30
+ </html>
data/wtails.gemspec ADDED
@@ -0,0 +1,24 @@
1
+ # -*- encoding: utf-8 -*-
2
+ require File.expand_path('../lib/wtails/version', __FILE__)
3
+
4
+ Gem::Specification.new do |gem|
5
+ gem.authors = ["Naoyuki HIRAYAMA"]
6
+ gem.email = ["naoyuki.hirayama@gmail.com"]
7
+ gem.description = "Webserver acts like 'tails -f'"
8
+ gem.summary = "wtails ..."
9
+ gem.homepage = "https://github.com/jonigata/wtails"
10
+
11
+ gem.files = `git ls-files`.split($\)
12
+ gem.executables = gem.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
13
+ gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
14
+ gem.name = "wtails"
15
+ gem.require_paths = ["lib"]
16
+ gem.version = Wtails::VERSION
17
+
18
+ gem.add_dependency "eventmachine"
19
+ gem.add_dependency "websocket-eventmachine-server"
20
+ gem.add_dependency "eventmachine-tail"
21
+ gem.add_dependency "sinatra"
22
+ gem.add_dependency "trollop"
23
+ gem.add_dependency "launchy", ">= 2.0.6"
24
+ end
metadata ADDED
@@ -0,0 +1,173 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: wtails
3
+ version: !ruby/object:Gem::Version
4
+ hash: 29
5
+ prerelease:
6
+ segments:
7
+ - 0
8
+ - 0
9
+ - 1
10
+ version: 0.0.1
11
+ platform: ruby
12
+ authors:
13
+ - Naoyuki HIRAYAMA
14
+ autorequire:
15
+ bindir: bin
16
+ cert_chain: []
17
+
18
+ date: 2013-01-10 00:00:00 Z
19
+ dependencies:
20
+ - !ruby/object:Gem::Dependency
21
+ name: eventmachine
22
+ prerelease: false
23
+ requirement: &id001 !ruby/object:Gem::Requirement
24
+ none: false
25
+ requirements:
26
+ - - ">="
27
+ - !ruby/object:Gem::Version
28
+ hash: 3
29
+ segments:
30
+ - 0
31
+ version: "0"
32
+ type: :runtime
33
+ version_requirements: *id001
34
+ - !ruby/object:Gem::Dependency
35
+ name: websocket-eventmachine-server
36
+ prerelease: false
37
+ requirement: &id002 !ruby/object:Gem::Requirement
38
+ none: false
39
+ requirements:
40
+ - - ">="
41
+ - !ruby/object:Gem::Version
42
+ hash: 3
43
+ segments:
44
+ - 0
45
+ version: "0"
46
+ type: :runtime
47
+ version_requirements: *id002
48
+ - !ruby/object:Gem::Dependency
49
+ name: eventmachine-tail
50
+ prerelease: false
51
+ requirement: &id003 !ruby/object:Gem::Requirement
52
+ none: false
53
+ requirements:
54
+ - - ">="
55
+ - !ruby/object:Gem::Version
56
+ hash: 3
57
+ segments:
58
+ - 0
59
+ version: "0"
60
+ type: :runtime
61
+ version_requirements: *id003
62
+ - !ruby/object:Gem::Dependency
63
+ name: sinatra
64
+ prerelease: false
65
+ requirement: &id004 !ruby/object:Gem::Requirement
66
+ none: false
67
+ requirements:
68
+ - - ">="
69
+ - !ruby/object:Gem::Version
70
+ hash: 3
71
+ segments:
72
+ - 0
73
+ version: "0"
74
+ type: :runtime
75
+ version_requirements: *id004
76
+ - !ruby/object:Gem::Dependency
77
+ name: trollop
78
+ prerelease: false
79
+ requirement: &id005 !ruby/object:Gem::Requirement
80
+ none: false
81
+ requirements:
82
+ - - ">="
83
+ - !ruby/object:Gem::Version
84
+ hash: 3
85
+ segments:
86
+ - 0
87
+ version: "0"
88
+ type: :runtime
89
+ version_requirements: *id005
90
+ - !ruby/object:Gem::Dependency
91
+ name: launchy
92
+ prerelease: false
93
+ requirement: &id006 !ruby/object:Gem::Requirement
94
+ none: false
95
+ requirements:
96
+ - - ">="
97
+ - !ruby/object:Gem::Version
98
+ hash: 3
99
+ segments:
100
+ - 2
101
+ - 0
102
+ - 6
103
+ version: 2.0.6
104
+ type: :runtime
105
+ version_requirements: *id006
106
+ description: Webserver acts like 'tails -f'
107
+ email:
108
+ - naoyuki.hirayama@gmail.com
109
+ executables:
110
+ - wtails
111
+ extensions: []
112
+
113
+ extra_rdoc_files: []
114
+
115
+ files:
116
+ - README.md
117
+ - bin/wtails
118
+ - doc/img/dual_view.png
119
+ - doc/img/single_view.png
120
+ - lib/wtails.rb
121
+ - lib/wtails/browser.rb
122
+ - lib/wtails/stdin.rb
123
+ - lib/wtails/tail.rb
124
+ - lib/wtails/version.rb
125
+ - lib/wtails/web_server.rb
126
+ - lib/wtails/web_socket.rb
127
+ - public/css/style.css
128
+ - public/images/favicon.ico
129
+ - public/js/jquery.min.js
130
+ - public/js/lemmon-slider.js
131
+ - public/js/tinycon.js
132
+ - public/js/wtails.js
133
+ - views/_init.erb
134
+ - views/_pane.erb
135
+ - views/dual.erb
136
+ - views/single.erb
137
+ - views/test.erb
138
+ - wtails.gemspec
139
+ homepage: https://github.com/jonigata/wtails
140
+ licenses: []
141
+
142
+ post_install_message:
143
+ rdoc_options: []
144
+
145
+ require_paths:
146
+ - lib
147
+ required_ruby_version: !ruby/object:Gem::Requirement
148
+ none: false
149
+ requirements:
150
+ - - ">="
151
+ - !ruby/object:Gem::Version
152
+ hash: 3
153
+ segments:
154
+ - 0
155
+ version: "0"
156
+ required_rubygems_version: !ruby/object:Gem::Requirement
157
+ none: false
158
+ requirements:
159
+ - - ">="
160
+ - !ruby/object:Gem::Version
161
+ hash: 3
162
+ segments:
163
+ - 0
164
+ version: "0"
165
+ requirements: []
166
+
167
+ rubyforge_project:
168
+ rubygems_version: 1.7.2
169
+ signing_key:
170
+ specification_version: 3
171
+ summary: wtails ...
172
+ test_files: []
173
+