twim 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.
data/.gitignore ADDED
@@ -0,0 +1 @@
1
+ pkg/
data/README.markdown ADDED
@@ -0,0 +1,43 @@
1
+ # twim
2
+
3
+ `twim` lets you post status updates to your Twitter from Vim.
4
+
5
+ # Installation
6
+
7
+ gem install twim
8
+
9
+ # Setup
10
+
11
+ Before using twim, you must first get a Twitter API key and authorize
12
+ the `twurl` command (note that this is a different command from `twim`)
13
+ to access your Twitter account. Type
14
+
15
+ twurl -T
16
+
17
+ for instructions.
18
+
19
+
20
+ # Usage
21
+
22
+ twim
23
+
24
+ This will invoke vim, where you can compose your tweet. Look at the Vim status
25
+ line to see how many characters you have left before reaching the character
26
+ limit.
27
+
28
+ If you paste or type in a long URL, `twim` can convert it into a TinyURL. Just
29
+ put the cursor somewhere on the URL and type `<Leader>,` (the leader key
30
+ followed by a comma). Note that this feature assumes you have `curl` install on
31
+ your system.
32
+
33
+ # About
34
+
35
+ Twim is really just a convenience wrapper around the awesome [twurl][twurl]
36
+ program.
37
+
38
+ [twurl]:https://github.com/marcel/twurl
39
+
40
+ My name is Daniel Choi. I'm a big fan of Vim and the command line. You can
41
+ follow me on Twitter at <http://twitter.com/danchoi>.
42
+
43
+
data/Rakefile ADDED
@@ -0,0 +1,7 @@
1
+ require 'rake'
2
+ require 'rake/testtask'
3
+ require 'bundler'
4
+ Bundler::GemHelper.install_tasks
5
+
6
+ $LOAD_PATH.unshift File.join(File.dirname(__FILE__), 'lib')
7
+
data/bin/twim ADDED
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env ruby
2
+ require 'twim'
3
+ Twim.run
data/lib/twim.rb ADDED
@@ -0,0 +1,39 @@
1
+ #!/usr/bin/env ruby
2
+ require 'twurl'
3
+ require 'tempfile'
4
+
5
+ class Twim
6
+ class << self
7
+ def run
8
+ options = Twurl::CLI.parse_options ["/1/statuses/update.xml"]
9
+ vimscript = File.expand_path '../twim.vim', __FILE__
10
+ f = Tempfile.new('twitter-msg')
11
+ msg = begin
12
+ system "vim -S %s %s" % [vimscript, f.path]
13
+ f.read
14
+ ensure
15
+ f.close
16
+ end
17
+ msg = msg.strip.gsub(/\s+/, ' ')
18
+ if msg.empty?
19
+ puts "No tweet to post."
20
+ exit
21
+ end
22
+ puts "Posting update (%s characters):" % msg.length
23
+ puts msg
24
+ options.data['status'] = msg
25
+ Twurl::CLI.dispatch options
26
+ end
27
+ end
28
+ end
29
+
30
+ if __FILE__ == $0
31
+ if Twurl::OAuthClient.rcfile.empty?
32
+ puts '-' * 70
33
+ puts "You must first get an API key and authorize twurl to use it."
34
+ puts "Type twurl -T for instructions."
35
+ puts '-' * 70
36
+ exit 1
37
+ end
38
+ Twim.run
39
+ end
data/lib/twim.vim ADDED
@@ -0,0 +1,38 @@
1
+ function! CountChars()
2
+ let lnum = 1
3
+ let n = 0
4
+ while lnum <= line("$")
5
+ let n = n + len(getline(lnum))
6
+ if lnum < line("$")
7
+ let n = n + 1 " because wordwrap eliminates a space
8
+ endif
9
+ let lnum = lnum + 1
10
+ endwhile
11
+ return n
12
+ endfunction
13
+
14
+ function! TwimStatusLine()
15
+ let filled = CountChars()
16
+ let remaining = 130 - filled
17
+ let line = "%<Number of characters: " . filled . " Remaining: " . remaining . " %r%=%-14.(%l,%c%V%)\ %P"
18
+ return line
19
+ endfunc
20
+
21
+ function! TinyUrl()
22
+ let url = shellescape(expand("<cWORD>"))
23
+ let cmd = "curl -s http://tinyurl.com/api-create.php?url=" . url
24
+ echom "Converting URL to TinyURL..."
25
+ let tinyurl = system(cmd)
26
+ " this works fine except at beginning of line, but ok
27
+ exec "normal caW " . tinyurl
28
+ endfunc
29
+
30
+
31
+ set textwidth=72
32
+ setlocal statusline=%!TwimStatusLine()
33
+
34
+ noremap <silent> <buffer> <leader>, <Esc>:call TinyUrl()<CR>
35
+
36
+
37
+
38
+
data/twim.gemspec ADDED
@@ -0,0 +1,23 @@
1
+ # -*- encoding: utf-8 -*-
2
+ $:.push File.expand_path("../lib", __FILE__)
3
+ Gem::Specification.new do |s|
4
+ s.name = "twim"
5
+ s.version = '0.0.1'
6
+ s.platform = Gem::Platform::RUBY
7
+ s.required_ruby_version = '>= 1.9.0'
8
+
9
+ s.authors = ["Daniel Choi"]
10
+ s.email = ["dhchoi@gmail.com"]
11
+ s.homepage = "https://github.com/danchoi/twim"
12
+ s.summary = %q{tail your Twitter timeslines}
13
+ s.description = %q{tail your Twitter timeslines}
14
+
15
+ s.rubyforge_project = "twim"
16
+
17
+ s.files = `git ls-files`.split("\n")
18
+ s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
19
+ s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
20
+ s.require_paths = ["lib"]
21
+
22
+ s.add_dependency 'twurl', '>= 0.6.3'
23
+ end
metadata ADDED
@@ -0,0 +1,73 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: twim
3
+ version: !ruby/object:Gem::Version
4
+ prerelease:
5
+ version: 0.0.1
6
+ platform: ruby
7
+ authors:
8
+ - Daniel Choi
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+
13
+ date: 2011-05-05 00:00:00 -04:00
14
+ default_executable:
15
+ dependencies:
16
+ - !ruby/object:Gem::Dependency
17
+ name: twurl
18
+ prerelease: false
19
+ requirement: &id001 !ruby/object:Gem::Requirement
20
+ none: false
21
+ requirements:
22
+ - - ">="
23
+ - !ruby/object:Gem::Version
24
+ version: 0.6.3
25
+ type: :runtime
26
+ version_requirements: *id001
27
+ description: tail your Twitter timeslines
28
+ email:
29
+ - dhchoi@gmail.com
30
+ executables:
31
+ - twim
32
+ extensions: []
33
+
34
+ extra_rdoc_files: []
35
+
36
+ files:
37
+ - .gitignore
38
+ - README.markdown
39
+ - Rakefile
40
+ - bin/twim
41
+ - lib/twim.rb
42
+ - lib/twim.vim
43
+ - twim.gemspec
44
+ has_rdoc: true
45
+ homepage: https://github.com/danchoi/twim
46
+ licenses: []
47
+
48
+ post_install_message:
49
+ rdoc_options: []
50
+
51
+ require_paths:
52
+ - lib
53
+ required_ruby_version: !ruby/object:Gem::Requirement
54
+ none: false
55
+ requirements:
56
+ - - ">="
57
+ - !ruby/object:Gem::Version
58
+ version: 1.9.0
59
+ required_rubygems_version: !ruby/object:Gem::Requirement
60
+ none: false
61
+ requirements:
62
+ - - ">="
63
+ - !ruby/object:Gem::Version
64
+ version: "0"
65
+ requirements: []
66
+
67
+ rubyforge_project: twim
68
+ rubygems_version: 1.6.1
69
+ signing_key:
70
+ specification_version: 3
71
+ summary: tail your Twitter timeslines
72
+ test_files: []
73
+