few 0.0.2 → 0.0.3
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/bin/few +42 -111
- metadata +14 -4
data/bin/few
CHANGED
@@ -3,136 +3,67 @@ require 'pathname'
|
|
3
3
|
require 'tempfile'
|
4
4
|
require 'cgi'
|
5
5
|
require 'kconv'
|
6
|
+
require 'singleton'
|
7
|
+
require 'base64'
|
6
8
|
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
system 'kfmclient', 'exec', url
|
12
|
-
elsif ENV['GNOME_DESKTOP_SESSION_ID']
|
13
|
-
system 'gnome-open', url
|
14
|
-
elsif system("exo-open -v >& /dev/null")
|
15
|
-
system 'exo-open', url
|
16
|
-
else
|
17
|
-
system 'firefox', url
|
18
|
-
end
|
19
|
-
when /darwin/
|
20
|
-
system 'open', url
|
21
|
-
when /mswin(?!ce)|mingw|bccwin/
|
22
|
-
system 'start', url
|
9
|
+
self_file =
|
10
|
+
if File.symlink?(__FILE__)
|
11
|
+
require 'pathname'
|
12
|
+
Pathname.new(__FILE__).realpath
|
23
13
|
else
|
24
|
-
|
14
|
+
__FILE__
|
25
15
|
end
|
26
|
-
|
16
|
+
$:.unshift(File.dirname(self_file) + "/../lib")
|
27
17
|
|
28
|
-
|
29
|
-
|
30
|
-
l = l.to_s
|
31
|
-
begin
|
32
|
-
if File.basename(l).include? '.'
|
33
|
-
load l
|
34
|
-
else
|
35
|
-
require l
|
36
|
-
end
|
37
|
-
rescue LoadError
|
38
|
-
end
|
39
|
-
}
|
40
|
-
end
|
18
|
+
require 'few'
|
19
|
+
include Few::Util
|
41
20
|
|
42
21
|
require_monad :rubygems, :markdown
|
43
22
|
|
44
|
-
def few(o={})
|
45
|
-
opt = {:filetype => :text, :tee => false}.merge(o)
|
46
|
-
t = Tempfile.new('few')
|
47
|
-
|
48
|
-
File.open(t.path, 'w') do |io|
|
49
|
-
if opt[:tee]
|
50
|
-
b = ''
|
51
|
-
ARGF.each do |l|
|
52
|
-
print l
|
53
|
-
b += l
|
54
|
-
end
|
55
|
-
a = CGI.escapeHTML b
|
56
|
-
else
|
57
|
-
a = CGI.escapeHTML ARGF.read.toutf8
|
58
|
-
end
|
59
|
-
a = a.gsub(/\r?\n/, "<br />\n")
|
60
|
-
|
61
|
-
a = a.gsub(/.\x08/, '')
|
62
|
-
a = a.gsub(/\x1b\[([0-9]*)m/) do
|
63
|
-
case $1
|
64
|
-
when "","39"
|
65
|
-
'</font>'
|
66
|
-
when "30"
|
67
|
-
'<font color="black">'
|
68
|
-
when "31"
|
69
|
-
'<font color="red">'
|
70
|
-
when "32"
|
71
|
-
'<font color="green">'
|
72
|
-
when "33"
|
73
|
-
'<font color="yellow">'
|
74
|
-
when "34"
|
75
|
-
'<font color="blue">'
|
76
|
-
when "35"
|
77
|
-
'<font color="magenta">'
|
78
|
-
when "36"
|
79
|
-
'<font color="cyan">'
|
80
|
-
when "37"
|
81
|
-
'<font color="white">'
|
82
|
-
else
|
83
|
-
''
|
84
|
-
end
|
85
|
-
end
|
86
|
-
|
87
|
-
io.puts <<-EOF
|
88
|
-
<html>
|
89
|
-
<head>
|
90
|
-
<title>few: #{ARGF.filename} (#{opt[:filetype].to_s})</title>
|
91
|
-
<style type="text/css">
|
92
|
-
body {
|
93
|
-
white-space: pre;
|
94
|
-
line-height: 7px;
|
95
|
-
font-size: 12pt;
|
96
|
-
font-family: "menlo regular", "monaco", "courier", monospace;
|
97
|
-
}
|
98
|
-
</style>
|
99
|
-
</head>
|
100
|
-
<body>
|
101
|
-
#{a}
|
102
|
-
</body>
|
103
|
-
</html>
|
104
|
-
EOF
|
105
|
-
end
|
106
|
-
|
107
|
-
t.close
|
108
|
-
|
109
|
-
File.rename(t.path, html = t.path + '.html')
|
110
|
-
|
111
|
-
open_browser(html)
|
112
|
-
end
|
113
|
-
|
114
23
|
case ARGV[0]
|
115
24
|
when '-h', '--help'
|
116
|
-
puts
|
117
|
-
|
118
|
-
|
119
|
-
|
25
|
+
puts <<-EOH
|
26
|
+
[USAGE]: few [option] [filename]
|
27
|
+
[EXAMPLE]:
|
28
|
+
few foobar.txt
|
29
|
+
make test | few
|
30
|
+
make |& few --tee
|
31
|
+
[ARGUMENTS]:
|
32
|
+
--version, -v | Show version information.
|
33
|
+
--selfupdate | Update few. This feature is disabled temporally. :-(
|
34
|
+
--filetype= | Set filetype. Filetype feature will be used for style.
|
35
|
+
--tee, -t, -T | Put strings to terminal, then open it to browser.
|
36
|
+
--server, -r, -s | Start server and standing for remote.
|
37
|
+
--server-daemon, -d | Start --server and daemonize myself.
|
38
|
+
--gen-key | Generate key pair for remote feature.
|
39
|
+
EOH
|
120
40
|
when '-v', '--version'
|
121
41
|
puts "0.0.2"
|
122
42
|
when '--selfupdate'
|
43
|
+
puts "This feature is temporally disabled."
|
123
44
|
require 'open-uri'
|
124
|
-
code =
|
45
|
+
code =
|
46
|
+
open('http://github.com/ujihisa/few/raw/master/bin/few') {|io| io.read }
|
125
47
|
raise unless /^#!/ =~ code
|
126
48
|
File.open(__FILE__, 'w') {|io| io.print code }
|
127
49
|
system __FILE__, '-v'
|
128
|
-
when /--filetype=(
|
50
|
+
when /--filetype=(\w+)/
|
129
51
|
ARGV.shift
|
130
|
-
|
52
|
+
Few(:filetype => $1.to_sym)
|
131
53
|
when '--tee', '-t', '-T'
|
132
54
|
ARGV.shift
|
133
|
-
|
55
|
+
Few(:tee => true, :filetype => :tee)
|
56
|
+
when '--remote-standing', '-r', '--server', '-s'
|
57
|
+
Few.new(:remote_standing => true).start
|
58
|
+
when '--remote-daemon', '-d','--daemon-standing', '--server-daemon'
|
59
|
+
Few.new(:remote_standing => true).start(true)
|
60
|
+
when '--gen-keys', '--generate-keys', '--generate-key-pair', '--gen-key'
|
61
|
+
print 'Generating new key pair for remote... '
|
62
|
+
f = Few.new.generate_remote_key_pair
|
63
|
+
puts 'done.'
|
64
|
+
puts "Send #{f.fewdir(f.config.public_key)} to remote host ~/.few ~/fewfiles, and write `config.remote = true` to remote ~/.fewrc ."
|
65
|
+
puts 'To standby to recieve, start few with `-r` or `-d` (-r with daemon) option.'
|
134
66
|
else
|
135
|
-
|
67
|
+
Few()
|
136
68
|
end
|
137
|
-
|
138
69
|
# vim: set filetype=ruby : set tabstop=2 : set shiftwidth=2
|
metadata
CHANGED
@@ -1,7 +1,12 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: few
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
|
4
|
+
prerelease: false
|
5
|
+
segments:
|
6
|
+
- 0
|
7
|
+
- 0
|
8
|
+
- 3
|
9
|
+
version: 0.0.3
|
5
10
|
platform: ruby
|
6
11
|
authors:
|
7
12
|
- ujihisa
|
@@ -24,6 +29,7 @@ extra_rdoc_files:
|
|
24
29
|
- README.md
|
25
30
|
files:
|
26
31
|
- README.md
|
32
|
+
- bin/few
|
27
33
|
has_rdoc: true
|
28
34
|
homepage: https://github.com/ujihisa/few
|
29
35
|
licenses: []
|
@@ -34,21 +40,25 @@ rdoc_options: []
|
|
34
40
|
require_paths:
|
35
41
|
- bin
|
36
42
|
required_ruby_version: !ruby/object:Gem::Requirement
|
43
|
+
none: false
|
37
44
|
requirements:
|
38
45
|
- - ">="
|
39
46
|
- !ruby/object:Gem::Version
|
47
|
+
segments:
|
48
|
+
- 0
|
40
49
|
version: "0"
|
41
|
-
version:
|
42
50
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
51
|
+
none: false
|
43
52
|
requirements:
|
44
53
|
- - ">="
|
45
54
|
- !ruby/object:Gem::Version
|
55
|
+
segments:
|
56
|
+
- 0
|
46
57
|
version: "0"
|
47
|
-
version:
|
48
58
|
requirements: []
|
49
59
|
|
50
60
|
rubyforge_project:
|
51
|
-
rubygems_version: 1.3.
|
61
|
+
rubygems_version: 1.3.7
|
52
62
|
signing_key:
|
53
63
|
specification_version: 3
|
54
64
|
summary: more -> less -> few
|