Top Level Namespace

Defined Under Namespace

Modules: Readline, Termtter, Yharian Classes: Array, Symbol

Constant Summary collapse

URL_SHORTTERS =
[
  { :host => "tinyurl.com", :pattern => %r'(http://tinyurl\.com(/[\w/]+))' },
  { :host => "is.gd", :pattern => %r'(http://is\.gd(/[\w/]+))' },
#  { :host => "bit.ly", :pattern => %r'(http://bit\.ly(/[\w/]+))' }
]

Instance Method Summary collapse

Instance Method Details

#april_foolObject



4
# File 'lib/plugins/april_fool.rb', line 4

def april_fool;april_fool? ? "今日はエイプリルフールではありません。" : "今日はエイプリルフールです。";end

#april_fool?Boolean

Returns:

  • (Boolean)


3
# File 'lib/plugins/april_fool.rb', line 3

def april_fool?;true;end

#configObject



56
57
58
# File 'lib/termtter/config.rb', line 56

def config
  Termtter::Config.instance
end

#configatronObject



60
61
62
63
64
# File 'lib/termtter/config.rb', line 60

def configatron
  # remove this method until Termtter-1.2.0
  warn "configatron method will be removed. Use config instead. (#{caller.first})"
  Termtter::Config.instance
end

#create_favorite(id) ⇒ Object



3
4
5
6
# File 'lib/plugins/favorite.rb', line 3

def create_favorite(id)
  r = Termtter::API.twitter.favorite id
  puts "Favorited status ##{r.id} on user @#{r.user.screen_name} #{r.text}"
end

#expand_url(host, path) ⇒ Object



22
23
24
25
26
27
28
29
30
31
32
33
# File 'lib/plugins/expand-tinyurl.rb', line 22

def expand_url(host, path)
  http_class = Net::HTTP
  unless config.proxy.host.nil? or config.proxy.host.empty?
    http_class = Net::HTTP::Proxy(config.proxy.host,
                                  config.proxy.port,
                                  config.proxy.user_name,
                                  config.proxy.password)
  end
  res = http_class.new('tinyurl.com').head(path)
  return nil unless res.code == "301" or res.code == "302"
  res['Location']
end

#fib(n) ⇒ Object



3
# File 'lib/plugins/fib.rb', line 3

def fib(n)i=0;j=1;n.times{j=i+i=j};i end

#filter(name, init = {}) ⇒ Object



19
20
21
22
# File 'lib/termtter/system_extensions.rb', line 19

def filter(name, init = {})
  warn "filter method will be removed. Use plugin instead."
  plugin(name, init)
end

#get_icon_path(s) ⇒ Object



18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
# File 'lib/plugins/growl.rb', line 18

def get_icon_path(s)
  cache_file = "%s/%s%s" % [  config.plugins.growl.icon_cache_dir, 
                              s.user_screen_name, 
                              File.extname(s.)  ]
  if File.exist?(cache_file) && (File.atime(cache_file) + 24*60*60) > Time.now
    return cache_file
  else
    Thread.new do
      File.open(cache_file, "wb") do |f|
        f << open(URI.escape(s.)).read
      end
    end
    return nil
  end
end

#out_put_status(status, color) ⇒ Object



10
11
12
13
14
15
# File 'lib/plugins/system_status.rb', line 10

def out_put_status(status, color)
  formatted_status = ERB.new(config.plugins.system_status.format).result(binding)
  colored_status = color(formatted_status, color)
  print "\e[s\e[1000G\e[#{status.size - 1}D#{colored_status}\e[u"
  $stdout.flush
end

#plugin(name, init = {}) ⇒ Object



3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# File 'lib/termtter/system_extensions.rb', line 3

def plugin(name, init = {})
  unless init.empty?
    init.each do |key, value|
      config.plugins.__refer__(name.to_sym).__assign__(key.to_sym, value)
    end
  end
  # FIXME: below path should be replaced by optparsed path
  if File.exist?(path = File.expand_path("~/.termtter/plugins/#{name}"))
    require path
  else
    require "plugins/#{name}"
  end
rescue LoadError => e
  Termtter::Client.handle_error(e)
end

#primes(n) ⇒ Object



3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
# File 'lib/plugins/primes.rb', line 3

def primes(n)
  return "" if n < 3
  table = []
  (2 .. n).each do |i|
    table << i
  end

  prime = []
  loop do
    prime << table[0]
    table = table.delete_if {|x| x % prime.max == 0 }
    break if table.max < (prime.max ** 2)
  end

  r = (table+prime).sort {|a, b| a<=>b }
  r.join(', ')
end


111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
# File 'lib/termtter/system_extensions.rb', line 111

def print(str)
  str.to_s.gsub("\xef\xbd\x9e", "\xe3\x80\x9c").split(/(\e\[\d*[a-zA-Z])/).each do |token|
    case token
    when /\e\[(\d+)m/
      $wSetConsoleTextAttribute.call $hStdOut, $colorMap[$1.to_i].to_i
 when /\e\[\d*[a-zA-Z]/
      # do nothing
    else
      loop do
        begin
          STDOUT.print $iconv_u8_to_sj.iconv(token)
          break
        rescue Iconv::Failure
          STDOUT.print "#{$!.success}?"
          token = $!.failed[1..-1]
        end
      end
    end
  end
  $wSetConsoleTextAttribute.call $hStdOut, $oldColor
  $iconv_u8_to_sj.iconv(nil)
end

#puts(str) ⇒ Object



133
134
135
136
# File 'lib/termtter/system_extensions.rb', line 133

def puts(str)
  print str
  STDOUT.puts
end

#quicklook(url) ⇒ Object



12
13
14
15
16
17
18
19
20
21
22
# File 'lib/plugins/quicklook.rb', line 12

def quicklook(url)
  tmpdir = Pathname.new(config.plugins.quicklook.quicklook_tmpdir)
  path   = tmpdir + Pathname.new(url).basename

  Thread.new do
    open(path, 'w') do |f|
      f.write(open(url).read)
    end
    system("qlmanage -p #{path} > /dev/null 2>&1")
  end
end

#say(who, what) ⇒ Object

say

String -> String -> IO ()



6
7
8
9
10
# File 'lib/plugins/say.rb', line 6

def say(who, what)
  voices = %w(Alex Alex Bruce Fred Ralph Agnes Kathy Vicki)
  voice = voices[who.hash % voices.size]
  system 'say', '-v', voice, what
end

#translate(text, langpair) ⇒ Object



8
9
10
11
12
13
14
15
16
17
18
# File 'lib/plugins/translation.rb', line 8

def translate(text, langpair)
  req = Net::HTTP::Post.new('/translate_t')
  req.add_field('Content-Type', 'application/x-www-form-urlencoded')
  req.add_field('User-Agent', 'Mozilla/5.0')
  Net::HTTP.version_1_2 # Proxy に対応してない
  Net::HTTP.start('translate.google.co.jp', 80) {|http|
    response = http.request(req, "langpair=#{langpair}&text=#{URI.escape(text)}")
    doc = Nokogiri::HTML.parse(response.body, nil, 'utf-8')
    return doc.css('#result_box').text
  }
end

#win?Boolean

Returns:

  • (Boolean)


50
51
52
# File 'lib/termtter/system_extensions.rb', line 50

def win?
  RUBY_PLATFORM.downcase =~ /mswin(?!ce)|mingw|bccwin/
end