few 0.0.2 → 0.0.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (2) hide show
  1. data/bin/few +42 -111
  2. 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
- def open_browser(url)
8
- case RUBY_PLATFORM.downcase
9
- when /linux/
10
- if ENV['KDE_FULL_SESSION'] == 'true'
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
- system 'firefox', url
14
+ __FILE__
25
15
  end
26
- end
16
+ $:.unshift(File.dirname(self_file) + "/../lib")
27
17
 
28
- def require_monad(*libraries)
29
- libraries.all? {|l|
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 "[USAGE]: few [-h|--help|-v|--version|--selfupdate|--filetype=([a-zA-Z0-9]+)|-t|-T|--tee] [filename]"
117
- puts "[EXAMPLES]: few {filename}"
118
- puts " cat {filename} | few"
119
- puts " make |& few --tee"
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 = open('http://github.com/ujihisa/few/raw/master/bin/few') {|io| io.read }
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=([a-zA-Z0-9]+)/
50
+ when /--filetype=(\w+)/
129
51
  ARGV.shift
130
- few(:filetype => $1.to_sym)
52
+ Few(:filetype => $1.to_sym)
131
53
  when '--tee', '-t', '-T'
132
54
  ARGV.shift
133
- few(:tee => true, :filetype => :tee)
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
- few
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
- version: 0.0.2
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.5
61
+ rubygems_version: 1.3.7
52
62
  signing_key:
53
63
  specification_version: 3
54
64
  summary: more -> less -> few