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.
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