few 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.
Files changed (3) hide show
  1. data/README.md +49 -0
  2. data/bin/few +108 -0
  3. metadata +55 -0
data/README.md ADDED
@@ -0,0 +1,49 @@
1
+ # Few
2
+
3
+ When you're trying to build an application on your terminal, how would you see
4
+ the README file? `less` is common. But `less` uses a whole screen. These days
5
+ most terminal emulator softwares support transparency. You can see other
6
+ softwares under the terminal. If you can open the README file under the terminal
7
+ beautifully, it must be useful. That's the reason why `few` was created.
8
+
9
+ ## USAGE
10
+
11
+ $ few README
12
+
13
+ $ cat README | few
14
+
15
+ $ few -v
16
+ 0.0.1
17
+
18
+ $ few --selfupdate
19
+ 0.0.2
20
+
21
+ ## DEVELOPERS
22
+
23
+ The principles of `few`
24
+
25
+ * Does not require any non-standard libraries
26
+ * Works every Ruby from 1.8.6 to 1.9.2
27
+ * Which means you have to avoid Enumerators and to care about Encodings
28
+
29
+ Future plan
30
+
31
+ * markdown
32
+ * vim syntax highlight
33
+ * ssh over few
34
+
35
+ ## LICENCE
36
+
37
+ Ruby's Licence (GPL + MIT)
38
+
39
+ ## TWITTER BOT
40
+
41
+ [@fewc](http://twitter.com/fewc)
42
+
43
+ ## AUTHORS
44
+
45
+ * Tatsuhiro Ujihisa <http://ujihisa.blogspot.com/>
46
+ * Sora Harakami <http://codnote.net/>
47
+ * Haruo Nanki <http://blog.netswitch.jp/>
48
+
49
+ vim: filetype=markdown
data/bin/few ADDED
@@ -0,0 +1,108 @@
1
+ #!/usr/bin/env ruby
2
+ require 'pathname'
3
+ require 'tempfile'
4
+ require 'cgi'
5
+ require 'kconv'
6
+
7
+ def open_browser(path)
8
+ case RUBY_PLATFORM
9
+ when /darwin/
10
+ system 'open', path
11
+ when /mswin(?!ce)|mingw|cygwin|bccwin/
12
+ system 'start', path
13
+ else
14
+ system 'firefox', path
15
+ end
16
+ end
17
+
18
+ def require_monad(*libraries)
19
+ libraries.all? {|l|
20
+ begin
21
+ require l.to_s
22
+ rescue LoadError
23
+ end
24
+ }
25
+ end
26
+
27
+ require_monad :rubygems, :markdown
28
+
29
+ def few(filetype = 'text')
30
+ t = Tempfile.new('few')
31
+
32
+ File.open(t.path, 'w') do |io|
33
+ a = CGI.escapeHTML ARGF.read.toutf8
34
+ a = a.gsub(/\r?\n/, "<br />\n")
35
+
36
+ # NOTE: Currently "&nbsp;" doesn't work on ujihisa's environment.
37
+ # This may be because of the font you use.
38
+
39
+ a = a.gsub(/^(\s+)(.+)<br \/>$/) { '<p style="text-indent: ' + ($1.size/2.0).to_s + 'em;">' + $2 + '</p>' }
40
+ a = a.gsub(/\s{2,}/) {|m| '&nbsp;'*(m.size*1.5).to_i }
41
+ a = a.gsub(/.\x08/, '')
42
+ a = a.gsub(/\x1b\[([0-9]*)m/) do
43
+ case $1
44
+ when "","39"
45
+ '</font>'
46
+ when "30"
47
+ '<font color="black">'
48
+ when "31"
49
+ '<font color="red">'
50
+ when "32"
51
+ '<font color="green">'
52
+ when "33"
53
+ '<font color="yellow">'
54
+ when "34"
55
+ '<font color="blue">'
56
+ when "35"
57
+ '<font color="magenta">'
58
+ when "36"
59
+ '<font color="cyan">'
60
+ when "37"
61
+ '<font color="white">'
62
+ else
63
+ ''
64
+ end
65
+ end
66
+
67
+ io.puts <<-EOF
68
+ <html>
69
+ <head>
70
+ <title>few: #{ARGF.filename} (#{filetype})</title>
71
+ <style type="text/css">
72
+ p { margin: 0; }
73
+ </style>
74
+ </head>
75
+ <body>
76
+ #{a}
77
+ </body>
78
+ </html>
79
+ EOF
80
+ end
81
+
82
+ t.close
83
+
84
+ File.rename(t.path, html = t.path + '.html')
85
+
86
+ open_browser(html)
87
+ end
88
+
89
+ case ARGV[0]
90
+ when '-h', '--help'
91
+ puts "[USAGE]: few {filename}"
92
+ puts " cat {filename} | few"
93
+ when '-v', '--version'
94
+ puts "0.0.1"
95
+ when '--selfupdate'
96
+ require 'open-uri'
97
+ code = open('http://github.com/ujihisa/few/raw/master/few') {|io| io.read }
98
+ raise unless /^#!/ =~ code
99
+ File.open(__FILE__, 'w') {|io| io.print code }
100
+ system __FILE__, '-v'
101
+ when /--filetype=([a-zA-Z0-9]+)/
102
+ ARGV.shift
103
+ few $1
104
+ else
105
+ few
106
+ end
107
+
108
+ # vim: set filetype=ruby : set tabstop=2 : set shiftwidth=2
metadata ADDED
@@ -0,0 +1,55 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: few
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ platform: ruby
6
+ authors:
7
+ - ujihisa
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+
12
+ date: 2010-01-06 00:00:00 -08:00
13
+ default_executable:
14
+ dependencies: []
15
+
16
+ description: more -> less -> few
17
+ email: ujihisa at gmail.com
18
+ executables:
19
+ - few
20
+ extensions: []
21
+
22
+ extra_rdoc_files:
23
+ - README.md
24
+ files:
25
+ - README.md
26
+ has_rdoc: true
27
+ homepage: https://github.com/ujihisa/few
28
+ licenses: []
29
+
30
+ post_install_message:
31
+ rdoc_options: []
32
+
33
+ require_paths:
34
+ - bin
35
+ required_ruby_version: !ruby/object:Gem::Requirement
36
+ requirements:
37
+ - - ">="
38
+ - !ruby/object:Gem::Version
39
+ version: "0"
40
+ version:
41
+ required_rubygems_version: !ruby/object:Gem::Requirement
42
+ requirements:
43
+ - - ">="
44
+ - !ruby/object:Gem::Version
45
+ version: "0"
46
+ version:
47
+ requirements: []
48
+
49
+ rubyforge_project:
50
+ rubygems_version: 1.3.5
51
+ signing_key:
52
+ specification_version: 3
53
+ summary: more -> less -> few
54
+ test_files: []
55
+