fuzzyclock 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 +5 -0
- data/Gemfile +4 -0
- data/README.md +22 -0
- data/Rakefile +2 -0
- data/bin/fuzzyclock +37 -0
- data/fuzzyclock.gemspec +21 -0
- data/lib/fuzzyclock/version.rb +3 -0
- data/lib/fuzzyclock.rb +61 -0
- metadata +75 -0
data/.gitignore
ADDED
data/Gemfile
ADDED
data/README.md
ADDED
@@ -0,0 +1,22 @@
|
|
1
|
+
# fuzzyclock.rb #
|
2
|
+
|
3
|
+
Class to imitate the basic functionality of the cool FuzzyClock application at http://www.objectpark.org/FuzzyClock.html
|
4
|
+
e.g. 10:34 is shown as "twenty five to eleven"
|
5
|
+
|
6
|
+
|
7
|
+
## Installation ##
|
8
|
+
|
9
|
+
gem install fuzzyclock
|
10
|
+
|
11
|
+
|
12
|
+
## Usage ##
|
13
|
+
|
14
|
+
$ fuzzyclock
|
15
|
+
twenty to four
|
16
|
+
$ fuzzyclock -a
|
17
|
+
It's about twenty to four
|
18
|
+
$ fuzzyclock --help
|
19
|
+
Usage: fuzzyclock [options]
|
20
|
+
-a, --about Say about?
|
21
|
+
|
22
|
+
|
data/Rakefile
ADDED
data/bin/fuzzyclock
ADDED
@@ -0,0 +1,37 @@
|
|
1
|
+
#! /usr/bin/env ruby
|
2
|
+
|
3
|
+
require 'rubygems'
|
4
|
+
require 'fuzzyclock'
|
5
|
+
require 'optparse'
|
6
|
+
|
7
|
+
class FuzzyClockCommand
|
8
|
+
|
9
|
+
def self.run
|
10
|
+
fc = self.new
|
11
|
+
fc.parse_options
|
12
|
+
fc.execute
|
13
|
+
end
|
14
|
+
|
15
|
+
def options
|
16
|
+
@options ||= {}
|
17
|
+
end
|
18
|
+
|
19
|
+
def execute
|
20
|
+
t = FuzzyClock.new
|
21
|
+
print "It's about " if options[:about]
|
22
|
+
puts t.to_s
|
23
|
+
end
|
24
|
+
|
25
|
+
def parse_options
|
26
|
+
OptionParser.new { |opts|
|
27
|
+
opts.banner = "Usage: #{File.basename(__FILE__)} [options]"
|
28
|
+
|
29
|
+
opts.on("-a", "--about", "Say about?") do |v|
|
30
|
+
self.options[:about] = v
|
31
|
+
end
|
32
|
+
}.parse!
|
33
|
+
end
|
34
|
+
|
35
|
+
end
|
36
|
+
|
37
|
+
FuzzyClockCommand.run
|
data/fuzzyclock.gemspec
ADDED
@@ -0,0 +1,21 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
$:.push File.expand_path("../lib", __FILE__)
|
3
|
+
require "fuzzyclock/version"
|
4
|
+
|
5
|
+
Gem::Specification.new do |s|
|
6
|
+
s.name = "fuzzyclock"
|
7
|
+
s.version = Fuzzyclock::VERSION
|
8
|
+
s.platform = Gem::Platform::RUBY
|
9
|
+
s.authors = ['Sam Grover', 'Jim Myhrberg']
|
10
|
+
# s.email = ["TODO: Write your email address"]
|
11
|
+
s.homepage = 'https://github.com/samgrover/fuzzyclock.rb'
|
12
|
+
s.summary = 'A Ruby class to imitate the basic functionality of the cool FuzzyClock application'
|
13
|
+
s.description = 'A Ruby class to imitate the basic functionality of the cool FuzzyClock application'
|
14
|
+
|
15
|
+
s.rubyforge_project = "fuzzyclock"
|
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
|
+
end
|
data/lib/fuzzyclock.rb
ADDED
@@ -0,0 +1,61 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
require 'fuzzyclock/version'
|
4
|
+
|
5
|
+
class FuzzyClock
|
6
|
+
@@HourToString = {
|
7
|
+
0 => "twelve",
|
8
|
+
1 => "one",
|
9
|
+
2 => "two",
|
10
|
+
3 => "three",
|
11
|
+
4 => "four",
|
12
|
+
5 => "five",
|
13
|
+
6 => "six",
|
14
|
+
7 => "seven",
|
15
|
+
8 => "eight",
|
16
|
+
9 => "nine",
|
17
|
+
10 => "ten",
|
18
|
+
11 => "eleven",
|
19
|
+
12 => "twelve",
|
20
|
+
}
|
21
|
+
|
22
|
+
attr_writer :time
|
23
|
+
|
24
|
+
def initialize(time=Time.now)
|
25
|
+
@time = time
|
26
|
+
end
|
27
|
+
|
28
|
+
# :s = suffix, :p = prefix
|
29
|
+
def fuzziness(min=0)
|
30
|
+
case min
|
31
|
+
when 0 then [:s, "o'clock"]
|
32
|
+
when 1..2 then [:p, "a bit after"]
|
33
|
+
when 3..7 then [:p, "five past"]
|
34
|
+
when 8..12 then [:p, "ten past"]
|
35
|
+
when 13..17 then [:p, "quarter past"]
|
36
|
+
when 18..22 then [:p, "twenty past"]
|
37
|
+
when 23..27 then [:p, "twenty five past"]
|
38
|
+
when 28..32 then rand(2) == 0 ? [:p, "half past"] : [:s, "thirty"]
|
39
|
+
when 33..37 then [:p, "twenty five to"]
|
40
|
+
when 38..42 then [:p, "twenty to"]
|
41
|
+
when 43..47 then [:p, "quarter to"]
|
42
|
+
when 48..52 then [:p, "ten to"]
|
43
|
+
when 53..57 then [:p, "five to"]
|
44
|
+
when 58..59 then rand(2) == 0 ? [:p, "almost"] : [:p, "nearly"]
|
45
|
+
end
|
46
|
+
end
|
47
|
+
|
48
|
+
def to_s
|
49
|
+
hr, min = @time.hour, @time.min
|
50
|
+
if (33..59) === min
|
51
|
+
hr += 1
|
52
|
+
end
|
53
|
+
str = @@HourToString[hr % 12]
|
54
|
+
fuzz = fuzziness(min)
|
55
|
+
if fuzz[0] == :p
|
56
|
+
str = fuzz[1] + " " + str
|
57
|
+
elsif fuzz[0] == :s
|
58
|
+
str = str + " " + fuzz[1]
|
59
|
+
end
|
60
|
+
end
|
61
|
+
end
|
metadata
ADDED
@@ -0,0 +1,75 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: fuzzyclock
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
hash: 29
|
5
|
+
prerelease:
|
6
|
+
segments:
|
7
|
+
- 0
|
8
|
+
- 0
|
9
|
+
- 1
|
10
|
+
version: 0.0.1
|
11
|
+
platform: ruby
|
12
|
+
authors:
|
13
|
+
- Sam Grover
|
14
|
+
- Jim Myhrberg
|
15
|
+
autorequire:
|
16
|
+
bindir: bin
|
17
|
+
cert_chain: []
|
18
|
+
|
19
|
+
date: 2011-04-15 00:00:00 +01:00
|
20
|
+
default_executable:
|
21
|
+
dependencies: []
|
22
|
+
|
23
|
+
description: A Ruby class to imitate the basic functionality of the cool FuzzyClock application
|
24
|
+
email:
|
25
|
+
executables:
|
26
|
+
- fuzzyclock
|
27
|
+
extensions: []
|
28
|
+
|
29
|
+
extra_rdoc_files: []
|
30
|
+
|
31
|
+
files:
|
32
|
+
- .gitignore
|
33
|
+
- Gemfile
|
34
|
+
- README.md
|
35
|
+
- Rakefile
|
36
|
+
- bin/fuzzyclock
|
37
|
+
- fuzzyclock.gemspec
|
38
|
+
- lib/fuzzyclock.rb
|
39
|
+
- lib/fuzzyclock/version.rb
|
40
|
+
has_rdoc: true
|
41
|
+
homepage: https://github.com/samgrover/fuzzyclock.rb
|
42
|
+
licenses: []
|
43
|
+
|
44
|
+
post_install_message:
|
45
|
+
rdoc_options: []
|
46
|
+
|
47
|
+
require_paths:
|
48
|
+
- lib
|
49
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
50
|
+
none: false
|
51
|
+
requirements:
|
52
|
+
- - ">="
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
hash: 3
|
55
|
+
segments:
|
56
|
+
- 0
|
57
|
+
version: "0"
|
58
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
59
|
+
none: false
|
60
|
+
requirements:
|
61
|
+
- - ">="
|
62
|
+
- !ruby/object:Gem::Version
|
63
|
+
hash: 3
|
64
|
+
segments:
|
65
|
+
- 0
|
66
|
+
version: "0"
|
67
|
+
requirements: []
|
68
|
+
|
69
|
+
rubyforge_project: fuzzyclock
|
70
|
+
rubygems_version: 1.6.1
|
71
|
+
signing_key:
|
72
|
+
specification_version: 3
|
73
|
+
summary: A Ruby class to imitate the basic functionality of the cool FuzzyClock application
|
74
|
+
test_files: []
|
75
|
+
|