rdoc-view 0.0.5 → 0.0.7

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.rdoc CHANGED
@@ -8,17 +8,29 @@ RDocView is a real-time viewer of RDoc/Markdown/Textile which used WebSocket.
8
8
 
9
9
  = Usage
10
10
 
11
- rdoc-view [-p port] [-o addr] [-t type] filename
11
+ rdoc-view [-p port] [-o addr] [-t type] [--html] filename
12
12
 
13
13
  -p port set the port (default is 4567)
14
14
  -o addr set the host (default is 0.0.0.0)
15
15
  -t type set the document type (rdoc or md or textile)
16
16
  if omits, judging from the extension
17
+ -h, --html convert to html.
17
18
 
18
19
  browse http://localhost:4567/
19
20
  and edit filename by your favorite editor.
20
21
  Change of a file is detected and a rendering is carried out in real time.
21
22
 
23
+ == Example.1 (Realtime Viewer)
24
+
25
+ $ rdoc-view README.md
26
+ $ google-chrome http://localhost:4567/ &
27
+ $ vim README.md
28
+ ....
29
+
30
+ == Example.2 (Convert to HTML)
31
+
32
+ $ rdoc-view --html README.md > README.html
33
+
22
34
  = Blog post
23
35
  Japanese: http://mt.orz.at/archives/2012/11/realtimeviewerr.html
24
36
 
@@ -1,3 +1,3 @@
1
1
  module RDocView
2
- VERSION = "0.0.5"
2
+ VERSION = "0.0.7"
3
3
  end
data/lib/rdoc-view.rb CHANGED
@@ -11,7 +11,7 @@ require "rdoc/markup/to_html"
11
11
 
12
12
  require "sinatra/base"
13
13
  require "sinatra-websocket"
14
- require "fssm"
14
+ require "listen"
15
15
  require "RedCloth"
16
16
 
17
17
  module RDocView
@@ -40,20 +40,22 @@ module RDocView
40
40
  module_function :convert
41
41
 
42
42
  class ViewApp < Sinatra::Base
43
-
43
+
44
+ opt_html = false
44
45
  opt_type = nil
45
46
  OptionParser.new { |op |
46
47
  op.on('-p port', 'set the port (default is 4567)') { |val| set :port, Integer(val) }
47
48
  op.on('-o addr', 'set the host (default is 0.0.0.0)') { |val| set :bind, val }
48
49
  op.on('-t type', 'set the document type (rdoc or md or textile)',
49
50
  'if omits, judging from the extension') { |val| opt_type = val.downcase }
51
+ op.on('-h', '--html', 'convert to html.') { |val| opt_html = true }
50
52
  }.parse!(ARGV)
51
53
  set :environment, :production
52
54
 
53
55
  raise "ARGV is empty." if ARGV.empty?
54
56
  raise "File Not Found:#{ARGV[0]}" unless File.exists?(ARGV[0])
55
-
56
- set :target_file, ARGV[0]
57
+
58
+ set :target_file, File.expand_path(ARGV[0])
57
59
  set :server, "thin"
58
60
  set :sockets, []
59
61
 
@@ -61,6 +63,16 @@ module RDocView
61
63
  set :type, opt_type
62
64
  set :type, File.extname(ARGV[0]).downcase().slice(1..-1) unless support_extensions.include?(opt_type)
63
65
 
66
+ # HTMLに変換して終了する
67
+ if opt_html then
68
+ html = RDocView.convert(settings.target_file, settings.type)
69
+ html.force_encoding("utf-8")
70
+ tmpl_file = File.expand_path(File.dirname(__FILE__) + "/views/index-html.erb")
71
+ tmpl = ERB.new(open(tmpl_file){|f|f.read})
72
+ puts tmpl.result(binding)
73
+ exit
74
+ end
75
+
64
76
  send_func = Proc.new do | ws |
65
77
  if File.exists?(settings.target_file) then
66
78
  # convert to html
@@ -79,14 +91,13 @@ module RDocView
79
91
  end
80
92
  end
81
93
 
82
- # blockingしちゃうので。
83
- th = Thread.new(send_func) do | send_func |
84
- FSSM.monitor(File.dirname(settings.target_file), File.basename(settings.target_file)) do
85
- update {|b,r| send_func.call()}
86
- delete {|b,r| }
87
- create {|b,r| send_func.call()}
94
+ # ファイル監視
95
+ listener = Listen::Listener.new(File.dirname(settings.target_file)) do |modified, added, removed|
96
+ if modified.include?(settings.target_file) || added.include?(settings.target_file) then
97
+ send_func.call()
88
98
  end
89
99
  end
100
+ listener.start(false)
90
101
 
91
102
  # 簡易的なTimer。定期的にPingを飛ばす。
92
103
  th_timer = Thread.new() do
@@ -0,0 +1,51 @@
1
+ <!DOCTYPE html>
2
+ <html lang="ja">
3
+ <head>
4
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
5
+ <title>RDoc Document Viewer</title>
6
+ <link href="http://developer.github.com/css/reset.css" rel="stylesheet" type="text/css" />
7
+ <link href="http://developer.github.com/css/960.css" rel="stylesheet" type="text/css" />
8
+ <link href="http://developer.github.com/css/uv_active4d.css" rel="stylesheet" type="text/css" />
9
+ <link href="http://developer.github.com/shared/css/documentation.css" rel="stylesheet" type="text/css">
10
+ <link href="http://developer.github.com/shared/css/pygments.css" rel="stylesheet" type="text/css">
11
+ <style>
12
+ .logo {
13
+ padding-top: 10px;
14
+ font-size: 48px;
15
+ }
16
+ .closed {
17
+ color: #e91000;
18
+ }
19
+ .error {
20
+ color: #e91000;
21
+ }
22
+ .opened {
23
+ color: #0065e9;
24
+ }
25
+ div.content {
26
+ width: 100%;
27
+ }
28
+ </style>
29
+ <style media="style">
30
+ #status {
31
+ display: none;
32
+ }
33
+ </style>
34
+ </head>
35
+ <body class="api">
36
+
37
+ <div id="header-wrapper">
38
+ <div id="header">
39
+ <a class="logo"><%=File.basename(settings.target_file)%></a>
40
+ </div>
41
+ </div>
42
+
43
+ <div id="wrapper">
44
+ <div class="content">
45
+ <%=html%>
46
+ </div>
47
+ </div>
48
+
49
+ </body>
50
+ </html>
51
+
data/rdoc-view.gemspec CHANGED
@@ -19,7 +19,8 @@ Gem::Specification.new do |gem|
19
19
 
20
20
  gem.add_dependency "sinatra"
21
21
  gem.add_dependency "sinatra-websocket"
22
- gem.add_dependency "fssm"
22
+ gem.add_dependency "listen"
23
+ gem.add_dependency "rb-inotify", "~> 0.8.8"
23
24
  gem.add_dependency "rdoc"
24
25
  gem.add_dependency "RedCloth"
25
26
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rdoc-view
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.5
4
+ version: 0.0.7
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-01-25 00:00:00.000000000 Z
12
+ date: 2013-01-28 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: sinatra
@@ -44,7 +44,7 @@ dependencies:
44
44
  - !ruby/object:Gem::Version
45
45
  version: '0'
46
46
  - !ruby/object:Gem::Dependency
47
- name: fssm
47
+ name: listen
48
48
  requirement: !ruby/object:Gem::Requirement
49
49
  none: false
50
50
  requirements:
@@ -59,6 +59,22 @@ dependencies:
59
59
  - - ! '>='
60
60
  - !ruby/object:Gem::Version
61
61
  version: '0'
62
+ - !ruby/object:Gem::Dependency
63
+ name: rb-inotify
64
+ requirement: !ruby/object:Gem::Requirement
65
+ none: false
66
+ requirements:
67
+ - - ~>
68
+ - !ruby/object:Gem::Version
69
+ version: 0.8.8
70
+ type: :runtime
71
+ prerelease: false
72
+ version_requirements: !ruby/object:Gem::Requirement
73
+ none: false
74
+ requirements:
75
+ - - ~>
76
+ - !ruby/object:Gem::Version
77
+ version: 0.8.8
62
78
  - !ruby/object:Gem::Dependency
63
79
  name: rdoc
64
80
  requirement: !ruby/object:Gem::Requirement
@@ -106,6 +122,7 @@ files:
106
122
  - bin/rdoc-view
107
123
  - lib/rdoc-view.rb
108
124
  - lib/rdoc-view/version.rb
125
+ - lib/views/index-html.erb
109
126
  - lib/views/index.erb
110
127
  - rdoc-view.gemspec
111
128
  homepage: ''