clickatell 0.7.0 → 0.7.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.
@@ -0,0 +1,6 @@
1
+ doc/*
2
+ website/*
3
+ pkg/*
4
+ .specification
5
+ pkg
6
+ rdoc
@@ -1,3 +1,7 @@
1
+ == 0.7.1
2
+
3
+ * Fixed broken -b (balance) command
4
+
1
5
  == 0.7.0
2
6
 
3
7
  * Added support for sending SMS to multiple recipients.
@@ -0,0 +1,95 @@
1
+ require "rubygems"
2
+ require "rake/rdoctask"
3
+ require File.join(File.dirname(__FILE__), *%w[lib clickatell version])
4
+
5
+ begin
6
+ require 'jeweler'
7
+
8
+ Jeweler::Tasks.new do |gemspec|
9
+ gemspec.name = "clickatell"
10
+ gemspec.summary = "Ruby interface to the Clickatell SMS gateway service."
11
+ gemspec.email = "luke@lukeredpath.co.uk"
12
+ gemspec.homepage = "http://clickatell.rubyforge.org"
13
+ gemspec.authors = ["Luke Redpath"]
14
+ gemspec.executables = %w{sms}
15
+ gemspec.extra_rdoc_files = %w{RDOC_README.txt History.txt License.txt}
16
+ gemspec.has_rdoc = true
17
+ gemspec.rdoc_options = %w{--main RDOC_README.txt}
18
+ gemspec.version = Clickatell::VERSION
19
+ end
20
+
21
+ Jeweler::GemcutterTasks.new
22
+
23
+ rescue LoadError
24
+ puts "Jeweler not available. Install it with: gem install jeweler"
25
+ end
26
+
27
+ task :default => :spec
28
+
29
+ require "spec"
30
+ require "spec/rake/spectask"
31
+
32
+ Spec::Rake::SpecTask.new do |t|
33
+ t.spec_opts = %w(--format specdoc --colour)
34
+ t.libs = ["spec"]
35
+ end
36
+
37
+ Spec::Rake::SpecTask.new("spec_html") do |t|
38
+ t.spec_opts = %w(--format html)
39
+ t.libs = ["spec"]
40
+ end
41
+
42
+ # Rake::RDocTask.new do |rd|
43
+ # rd.main = "RDOC_README.txt"
44
+ # rd.rdoc_files.include("lib/**/*.rb", *$gemspec.extra_rdoc_files)
45
+ # rd.rdoc_dir = "rdoc"
46
+ # end
47
+
48
+ desc 'Generate website files'
49
+ task :website do
50
+ Dir['website/**/*.txt'].each do |txt|
51
+ sh %{ ruby scripts/txt2html #{txt} > #{txt.gsub(/txt$/,'html')} }
52
+ end
53
+ sh "rake -s spec_html > website/specs.html"
54
+ end
55
+
56
+ desc 'Clear out RDoc and generated packages'
57
+ task :clean => [:clobber_rdoc, :clobber_package]
58
+
59
+ begin
60
+ require "rake/contrib/sshpublisher"
61
+ namespace :rubyforge do
62
+
63
+ desc "Release gem and RDoc documentation to RubyForge"
64
+ task :release => ["rubyforge:release:gem", "rubyforge:release:docs"]
65
+
66
+ namespace :release do
67
+ desc "Release a new version of this gem"
68
+ task :gem => [:package] do
69
+ require 'rubyforge'
70
+ rubyforge = RubyForge.new
71
+ rubyforge.configure
72
+ rubyforge.login
73
+ rubyforge.userconfig['release_notes'] = $gemspec.summary
74
+ path_to_gem = File.join(File.dirname(__FILE__), "pkg", "#{$gemspec.name}-#{$gemspec.version}.gem")
75
+ puts "Publishing #{$gemspec.name}-#{$gemspec.version.to_s} to Rubyforge..."
76
+ rubyforge.add_release($gemspec.rubyforge_project, $gemspec.name, $gemspec.version.to_s, path_to_gem)
77
+ end
78
+
79
+ desc "Publish RDoc to RubyForge."
80
+ task :docs => [:rdoc, :website] do
81
+ config = YAML.load(
82
+ File.read(File.expand_path('~/.rubyforge/user-config.yml'))
83
+ )
84
+
85
+ host = "#{config['username']}@rubyforge.org"
86
+ remote_dir = "/var/www/gforge-projects/clickatell/"
87
+
88
+ Rake::SshDirPublisher.new(host, remote_dir, 'website').upload
89
+ Rake::SshDirPublisher.new(host, File.join(remote_dir, 'rdoc'), 'rdoc').upload
90
+ end
91
+ end
92
+ end
93
+ rescue LoadError
94
+ puts "Rake SshDirPublisher is unavailable or your rubyforge environment is not configured."
95
+ end
@@ -6,7 +6,7 @@ module Clickatell
6
6
  class Options #:nodoc:
7
7
  class << self
8
8
 
9
- def parse(args)
9
+ def parse(args)
10
10
  @options = self.default_options
11
11
  parser = OptionParser.new do |opts|
12
12
  opts.banner = "Usage: sms [options] recipient(s) message"
@@ -64,18 +64,17 @@ module Clickatell
64
64
  exit
65
65
  end
66
66
  end
67
-
67
+
68
+ @options.recipient = args[-2].split(',') rescue nil
69
+ @options.message = args[-1]
70
+
68
71
  parser.parse!(args)
69
- @options.recipient = ARGV[-2]
70
- @options.message = ARGV[-1]
71
72
 
72
73
  if (@options.message.nil? || @options.recipient.nil?) && send_message?
73
74
  puts "You must specify a recipient and message!"
74
75
  puts parser
75
76
  exit
76
77
  end
77
-
78
- @options.recipient = @options.recipient.split(",")
79
78
 
80
79
  return @options
81
80
 
@@ -2,7 +2,7 @@ module Clickatell #:nodoc:
2
2
  module VERSION #:nodoc:
3
3
  MAJOR = 0
4
4
  MINOR = 7
5
- TINY = 0
5
+ TINY = 1
6
6
 
7
7
  STRING = [MAJOR, MINOR, TINY].join('.')
8
8
 
@@ -0,0 +1,67 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require 'rubygems'
4
+ require 'redcloth'
5
+ require 'syntax/convertors/html'
6
+ require 'erb'
7
+ require File.dirname(__FILE__) + '/../lib/clickatell/version.rb'
8
+
9
+ version = Clickatell::VERSION::STRING
10
+ download = 'http://rubyforge.org/projects/clickatell'
11
+
12
+ class Fixnum
13
+ def ordinal
14
+ # teens
15
+ return 'th' if (10..19).include?(self % 100)
16
+ # others
17
+ case self % 10
18
+ when 1: return 'st'
19
+ when 2: return 'nd'
20
+ when 3: return 'rd'
21
+ else return 'th'
22
+ end
23
+ end
24
+ end
25
+
26
+ class Time
27
+ def pretty
28
+ return "#{mday}#{mday.ordinal} #{strftime('%B')} #{year}"
29
+ end
30
+ end
31
+
32
+ def convert_syntax(syntax, source)
33
+ return Syntax::Convertors::HTML.for_syntax(syntax).convert(source).gsub(%r!^<pre>|</pre>$!,'')
34
+ end
35
+
36
+ if ARGV.length >= 1
37
+ src, template = ARGV
38
+ template ||= File.dirname(__FILE__) + '/../website/template.rhtml'
39
+
40
+ else
41
+ puts("Usage: #{File.split($0).last} source.txt [template.rhtml] > output.html")
42
+ exit!
43
+ end
44
+
45
+ template = ERB.new(File.open(template).read)
46
+
47
+ title = nil
48
+ body = nil
49
+ File.open(src) do |fsrc|
50
+ title_text = fsrc.readline
51
+ body_text = fsrc.read
52
+ syntax_items = []
53
+ body_text.gsub!(%r!<(pre|code)[^>]*?syntax=['"]([^'"]+)[^>]*>(.*?)</>!m){
54
+ ident = syntax_items.length
55
+ element, syntax, source = $1, $2, $3
56
+ syntax_items << "<#{element} class='syntax'>#{convert_syntax(syntax, source)}</#{element}>"
57
+ "syntax-temp-#{ident}"
58
+ }
59
+ title = RedCloth.new(title_text).to_html.gsub(%r!<.*?>!,'').strip
60
+ body = RedCloth.new(body_text).to_html
61
+ body.gsub!(%r!(?:<pre><code>)?syntax-temp-(d+)(?:</code></pre>)?!){ syntax_items[$1.to_i] }
62
+ end
63
+ stat = File.stat(src)
64
+ created = stat.ctime
65
+ modified = stat.mtime
66
+
67
+ $stdout << template.result(binding)
@@ -0,0 +1,26 @@
1
+ require 'test/unit'
2
+ require 'shoulda'
3
+ require File.join(File.dirname(__FILE__), *%w[.. lib clickatell utility])
4
+
5
+ class CliOptionsTest < Test::Unit::TestCase
6
+
7
+ context "Sending a message" do
8
+ should "allow single recipients" do
9
+ options = Clickatell::Utility::Options.parse(%w{07944123456 testing})
10
+ assert_equal %w{07944123456}, options.recipient
11
+ end
12
+
13
+ should "allow multiple, comma-separated recipients" do
14
+ options = Clickatell::Utility::Options.parse(%w{07944123456,07944123457 testing})
15
+ assert_equal %w{07944123456 07944123457}, options.recipient
16
+ end
17
+ end
18
+
19
+ context "Checking balance" do
20
+ should "not require a recipient" do
21
+ options = Clickatell::Utility::Options.parse(%w{-b})
22
+ assert_nil options.recipient
23
+ end
24
+ end
25
+
26
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: clickatell
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.7.0
4
+ version: 0.7.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Luke Redpath
@@ -9,19 +9,10 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2009-10-07 00:00:00 +01:00
12
+ date: 2009-12-01 00:00:00 +00:00
13
13
  default_executable: sms
14
- dependencies:
15
- - !ruby/object:Gem::Dependency
16
- name: rspec
17
- type: :development
18
- version_requirement:
19
- version_requirements: !ruby/object:Gem::Requirement
20
- requirements:
21
- - - ">="
22
- - !ruby/object:Gem::Version
23
- version: "0"
24
- version:
14
+ dependencies: []
15
+
25
16
  description:
26
17
  email: luke@lukeredpath.co.uk
27
18
  executables:
@@ -29,32 +20,45 @@ executables:
29
20
  extensions: []
30
21
 
31
22
  extra_rdoc_files:
32
- - RDOC_README.txt
33
23
  - History.txt
34
24
  - License.txt
25
+ - RDOC_README.txt
35
26
  files:
27
+ - .gitignore
36
28
  - History.txt
37
29
  - License.txt
38
30
  - RDOC_README.txt
39
31
  - README.textile
32
+ - Rakefile
40
33
  - bin/sms
41
- - spec/api_spec.rb
42
- - spec/command_executor_spec.rb
43
- - spec/hash_ext_spec.rb
44
- - spec/response_spec.rb
45
- - spec/spec.opts
46
- - spec/spec_helper.rb
34
+ - lib/clickatell.rb
35
+ - lib/clickatell/api.rb
47
36
  - lib/clickatell/api/command.rb
48
37
  - lib/clickatell/api/command_executor.rb
49
38
  - lib/clickatell/api/error.rb
50
39
  - lib/clickatell/api/message_status.rb
51
- - lib/clickatell/api.rb
52
40
  - lib/clickatell/response.rb
53
- - lib/clickatell/utility/options.rb
54
41
  - lib/clickatell/utility.rb
42
+ - lib/clickatell/utility/options.rb
55
43
  - lib/clickatell/version.rb
56
- - lib/clickatell.rb
57
44
  - lib/core-ext/hash.rb
45
+ - scripts/txt2html
46
+ - spec/api_spec.rb
47
+ - spec/cli_options_test.rb
48
+ - spec/command_executor_spec.rb
49
+ - spec/hash_ext_spec.rb
50
+ - spec/response_spec.rb
51
+ - spec/spec.opts
52
+ - spec/spec_helper.rb
53
+ - website/images/footer_bg.gif
54
+ - website/index.txt
55
+ - website/javascripts/codehighlighter/code_highlighter.js
56
+ - website/javascripts/codehighlighter/ruby.js
57
+ - website/javascripts/rounded_corners_lite.inc.js
58
+ - website/stylesheets/limechoc.css
59
+ - website/stylesheets/rdoc.css
60
+ - website/stylesheets/screen.css
61
+ - website/template.rhtml
58
62
  has_rdoc: true
59
63
  homepage: http://clickatell.rubyforge.org
60
64
  licenses: []
@@ -79,10 +83,15 @@ required_rubygems_version: !ruby/object:Gem::Requirement
79
83
  version:
80
84
  requirements: []
81
85
 
82
- rubyforge_project: clickatell
86
+ rubyforge_project:
83
87
  rubygems_version: 1.3.5
84
88
  signing_key:
85
- specification_version: 2
89
+ specification_version: 3
86
90
  summary: Ruby interface to the Clickatell SMS gateway service.
87
- test_files: []
88
-
91
+ test_files:
92
+ - spec/api_spec.rb
93
+ - spec/cli_options_test.rb
94
+ - spec/command_executor_spec.rb
95
+ - spec/hash_ext_spec.rb
96
+ - spec/response_spec.rb
97
+ - spec/spec_helper.rb