gadgeto 0.1.1 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -2,8 +2,11 @@ rvm:
2
2
  - 1.8.7
3
3
  - 1.9.3
4
4
  - jruby-18mode
5
+ - jruby-19mode
5
6
  - rbx-18mode
7
+ - rbx-19mode
6
8
  - ruby-head
9
+ - ree
7
10
 
8
11
  notifications:
9
12
  email:
data/Gemfile CHANGED
@@ -1,7 +1,7 @@
1
1
  source "http://rubygems.org"
2
2
 
3
3
  group :development do
4
- gem "jeweler", "~> 1.6.4"
4
+ gem "jeweler", "~> 1.8.3"
5
5
 
6
6
  gem 'rake', ">= 0.9.2.2"
7
7
  gem 'rdoc'
@@ -0,0 +1,136 @@
1
+ Gadgeto
2
+ =======
3
+
4
+ [![Build Status](https://secure.travis-ci.org/avarteqgmbh/gadgeto.png)](http://travis-ci.org/avarteqgmbh/gadgeto)
5
+ [![Dependency Status](https://gemnasium.com/avarteqgmbh/gadgeto.png)](https://gemnasium.com/avarteqgmbh/gadgeto)
6
+
7
+ Collection of ruby code snippets.
8
+
9
+ ## Usage
10
+
11
+ All functionality is loaded issuing:
12
+
13
+ ``` ruby
14
+ require 'gadgeto/all'
15
+ ```
16
+
17
+ If you plan to use only a handful of snippets, it is recommended to require
18
+ explicitly each snippet:
19
+
20
+ ``` ruby
21
+ require 'gadgeto/<snippet>'
22
+ ```
23
+
24
+ For example:
25
+
26
+ ``` ruby
27
+ require 'gadgeto/dslable' # loads Gadgeto::Dslable
28
+ ```
29
+
30
+ ## Overview
31
+
32
+ **Gadgeto::Domain**
33
+
34
+ ``` ruby
35
+ require 'gadgeto/domain'
36
+
37
+ Gadgeto::Domain.valid?("de") #=> true
38
+ Gadgeto::Domain.valid?("test.de") #=> true
39
+ Gadgeto::Domain.valid?("-.test.de") #=> false
40
+
41
+ domain = Gadgeto::Domain.new("m.test.de")
42
+ domain.third_level_domain? #=> true
43
+ ```
44
+
45
+ **Gadgeto::Dslable**
46
+
47
+ ``` ruby
48
+ require 'gadgeto/dslable'
49
+
50
+ class Foo
51
+ include Gadgeto::Dslable
52
+ include Gadgeto::Dslable::Display
53
+
54
+ dslable_method :item, :key, '*arguments'
55
+
56
+ def inspect
57
+ attributes[:key]
58
+ end
59
+ end
60
+
61
+ f = Foo.new
62
+
63
+ f.draw do
64
+ item 'home', :baem => :bum do
65
+ item 'terms'
66
+ item 'imprint'
67
+ end
68
+
69
+ item 'products' do
70
+ item 'kitchen' do
71
+ item 'forks'
72
+ end
73
+ end
74
+ end
75
+
76
+ f.display :items
77
+ f.items[0].attributes[:key] #=> "home"
78
+ ```
79
+
80
+ **Gadgeto::Email**
81
+
82
+ ``` ruby
83
+ require 'gadgeto/email'
84
+
85
+ Gadgeto::Email.valid?("user@example.com") #=> true
86
+ Gadgeto::Email.valid?("user+name@example.com") #=> true
87
+ ```
88
+
89
+ **Gadgeto::SanitizeFilename (Module)**
90
+
91
+ ``` ruby
92
+ require 'gadgeto/sanitize_filename'
93
+
94
+ obj = Object.new
95
+ obj.extend(Gadgeto::SanitizeFilename)
96
+ obj.sanitize_filename("foo bar.zip") #=> "foo_bar.zip"
97
+ ```
98
+
99
+ **Gadgeto::TimeOfDay**
100
+
101
+ ``` ruby
102
+ require 'gadgeto/time_of_day'
103
+
104
+ Gadgeto::TimeOfDay.valid?("09:15") #=> true
105
+
106
+ t = Gadgeto::TimeOfDay.new("08:30") #=> 08:30
107
+ t.hour #=> 8
108
+ t.minute #=> 30
109
+ t.to_i #=> 480
110
+ t.add_minutes(30) #=> 09:00
111
+
112
+ t1 = Gadgeto::TimeOfDay.new("08:30") #=> 08:30
113
+ t2 = Gadgeto::TimeOfDay.new("09:30") #=> 09:30
114
+ t1 < t2 #=> true
115
+ t1 > t2 #=> false
116
+ t1.minutes_till(t2) #=> 60
117
+ t1 == t2 #=> false
118
+ ```
119
+
120
+ **Gadgeto::VideoUrl**
121
+
122
+ ``` ruby
123
+ require 'gadgeto/video_url'
124
+
125
+ Gadgeto::VideoUrl.valid?("http://vimeo.com/11384488") #=> true
126
+ Gadgeto::VideoUrl.supported_services #=> [:youtube, :vimeo]
127
+
128
+ video_url = Gadgeto::VideoUrl.new('http://www.youtube.com/watch?v=0zM3nApSvMg')
129
+ video_url.valid? #=> true
130
+ video_url.service #=> :youtube
131
+ video_url.id #=> "0zM3nApSvMg"
132
+ ```
133
+
134
+ ## Contributors
135
+
136
+ See https://github.com/avarteqgmbh/gadgeto/contributors
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.1.1
1
+ 0.2.0
@@ -5,16 +5,16 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = "gadgeto"
8
- s.version = "0.1.1"
8
+ s.version = "0.2.0"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Robert Gogolok", "Matthias Zirnstein"]
12
- s.date = "2012-01-23"
12
+ s.date = "2012-10-05"
13
13
  s.email = "rgogolok@avarteq.de"
14
14
  s.extra_rdoc_files = [
15
15
  "ChangeLog.markdown",
16
16
  "LICENSE.txt",
17
- "README.rdoc"
17
+ "README.md"
18
18
  ]
19
19
  s.files = [
20
20
  ".rspec",
@@ -22,17 +22,21 @@ Gem::Specification.new do |s|
22
22
  "ChangeLog.markdown",
23
23
  "Gemfile",
24
24
  "LICENSE.txt",
25
- "README.rdoc",
25
+ "README.md",
26
26
  "Rakefile",
27
27
  "VERSION",
28
28
  "gadgeto.gemspec",
29
29
  "lib/gadgeto/all.rb",
30
+ "lib/gadgeto/domain.rb",
31
+ "lib/gadgeto/domain/validators.rb",
30
32
  "lib/gadgeto/dslable.rb",
31
33
  "lib/gadgeto/email.rb",
32
34
  "lib/gadgeto/email/validators.rb",
33
35
  "lib/gadgeto/sanitize_filename.rb",
34
36
  "lib/gadgeto/time_of_day.rb",
35
37
  "lib/gadgeto/video_url.rb",
38
+ "spec/lib/gadgeto/domain/validators_spec.rb",
39
+ "spec/lib/gadgeto/domain_spec.rb",
36
40
  "spec/lib/gadgeto/dslable_spec.rb",
37
41
  "spec/lib/gadgeto/email_spec.rb",
38
42
  "spec/lib/gadgeto/sanitize_filename_spec.rb",
@@ -45,27 +49,27 @@ Gem::Specification.new do |s|
45
49
  s.homepage = "http://github.com/avarteqgmbh/gadgeto"
46
50
  s.licenses = ["MIT"]
47
51
  s.require_paths = ["lib"]
48
- s.rubygems_version = "1.8.10"
52
+ s.rubygems_version = "1.8.24"
49
53
  s.summary = "collection of useful code snippets"
50
54
 
51
55
  if s.respond_to? :specification_version then
52
56
  s.specification_version = 3
53
57
 
54
58
  if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
55
- s.add_development_dependency(%q<jeweler>, ["~> 1.6.4"])
59
+ s.add_development_dependency(%q<jeweler>, ["~> 1.8.3"])
56
60
  s.add_development_dependency(%q<rake>, [">= 0.9.2.2"])
57
61
  s.add_development_dependency(%q<rdoc>, [">= 0"])
58
62
  s.add_development_dependency(%q<simplecov>, [">= 0"])
59
63
  s.add_development_dependency(%q<rspec>, [">= 2.8.0"])
60
64
  else
61
- s.add_dependency(%q<jeweler>, ["~> 1.6.4"])
65
+ s.add_dependency(%q<jeweler>, ["~> 1.8.3"])
62
66
  s.add_dependency(%q<rake>, [">= 0.9.2.2"])
63
67
  s.add_dependency(%q<rdoc>, [">= 0"])
64
68
  s.add_dependency(%q<simplecov>, [">= 0"])
65
69
  s.add_dependency(%q<rspec>, [">= 2.8.0"])
66
70
  end
67
71
  else
68
- s.add_dependency(%q<jeweler>, ["~> 1.6.4"])
72
+ s.add_dependency(%q<jeweler>, ["~> 1.8.3"])
69
73
  s.add_dependency(%q<rake>, [">= 0.9.2.2"])
70
74
  s.add_dependency(%q<rdoc>, [">= 0"])
71
75
  s.add_dependency(%q<simplecov>, [">= 0"])
@@ -0,0 +1,28 @@
1
+
2
+ require File.join(File.dirname(__FILE__), '/domain/validators')
3
+
4
+ module Gadgeto
5
+ class Domain
6
+ include Domain::Validators
7
+
8
+ class << self
9
+ def valid?(object)
10
+ o = new object
11
+ o.valid?
12
+ end
13
+ end
14
+
15
+ def initialize(domain)
16
+ @domain = domain
17
+ end
18
+
19
+ def valid?
20
+ domain? @domain
21
+ end
22
+
23
+ def third_level_domain?
24
+ super(@domain)
25
+ end
26
+
27
+ end
28
+ end
@@ -0,0 +1,33 @@
1
+
2
+ module Gadgeto
3
+ class Domain
4
+ module Validators
5
+
6
+ def domain?(domain_name)
7
+ !!(domain_name =~ domain_regex(0..10))
8
+ end
9
+
10
+ def third_level_domain?(domain_name)
11
+ !!(domain_name =~ domain_regex(3))
12
+ end
13
+
14
+ protected
15
+
16
+ ##
17
+ # Validates domain names against usual pattern defined in RFC 1035.
18
+ #
19
+ # * http://tools.ietf.org/html/rfc1035
20
+ #
21
+ def domain_regex(level)
22
+ label = '(([a-z]|\d)+([a-z]|\d|-)*([a-z]|\d)+|([a-z]|\d)){1,63}'
23
+ cardinal = if level.kind_of?(Range)
24
+ "#{level.min},#{level.max}"
25
+ else
26
+ level - 1
27
+ end
28
+ %r{\A#{label}(\.#{label}){#{cardinal}}\Z}i
29
+ end
30
+
31
+ end
32
+ end
33
+ end
@@ -0,0 +1,32 @@
1
+
2
+ require 'spec_helper'
3
+ require File.join(File.dirname(__FILE__), '../../../../lib/gadgeto/domain/validators')
4
+
5
+
6
+ describe Gadgeto::Domain::Validators do
7
+
8
+ subject { Class.new.send(:include, Gadgeto::Domain::Validators).new }
9
+
10
+
11
+ context "third_level_domain" do
12
+ it "shouldn't validate other level domains" do
13
+ subject.third_level_domain?('de').should be_false
14
+ subject.third_level_domain?('test.de').should be_false
15
+ subject.third_level_domain?('test.test.test.de').should be_false
16
+ end
17
+
18
+ it "should be valid on third level domain" do
19
+ subject.third_level_domain?('test.test.de').should be_true
20
+ subject.third_level_domain?('t-t.test.de').should be_true
21
+ subject.third_level_domain?('m.test.de').should be_true
22
+ subject.third_level_domain?('m8.test.de').should be_true
23
+ subject.third_level_domain?('m8.test42.de').should be_true
24
+ end
25
+
26
+ it "should't be valid on special hyphen cases" do
27
+ subject.third_level_domain?('-t.test.de').should be_false
28
+ subject.third_level_domain?('-.test.de').should be_false
29
+ end
30
+ end
31
+
32
+ end
@@ -0,0 +1,40 @@
1
+
2
+ require 'spec_helper'
3
+ require File.join(File.dirname(__FILE__), '../../../lib/gadgeto/domain')
4
+
5
+
6
+ describe Gadgeto::Domain::Validators do
7
+
8
+ subject { Gadgeto::Domain }
9
+
10
+ context "domain" do
11
+ it "should validate domains" do
12
+ subject.new('de').should be_valid
13
+ subject.new('test.de').should be_valid
14
+ subject.new('test.test.de').should be_valid
15
+ subject.new('test.test.test.de').should be_valid
16
+ end
17
+ end
18
+
19
+ context "third_level_domain" do
20
+ it "shouldn't validate other level domains" do
21
+ subject.new('de').should_not be_third_level_domain
22
+ subject.new('test.de').should_not be_third_level_domain
23
+ subject.new('test.test.test.de').should_not be_third_level_domain
24
+ end
25
+
26
+ it "should be valid on third level domain" do
27
+ subject.new('test.test.de').should be_third_level_domain
28
+ subject.new('t-t.test.de').should be_third_level_domain
29
+ subject.new('m.test.de').should be_third_level_domain
30
+ subject.new('m8.test.de').should be_third_level_domain
31
+ subject.new('m8.test42.de').should be_third_level_domain
32
+ end
33
+
34
+ it "should't be valid on special hyphen cases" do
35
+ subject.new('-t.test.de').should_not be_third_level_domain
36
+ subject.new('-.test.de').should_not be_third_level_domain
37
+ end
38
+ end
39
+
40
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: gadgeto
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.2.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -10,22 +10,27 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2012-01-23 00:00:00.000000000 Z
13
+ date: 2012-10-05 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: jeweler
17
- requirement: &70247689182320 !ruby/object:Gem::Requirement
17
+ requirement: !ruby/object:Gem::Requirement
18
18
  none: false
19
19
  requirements:
20
20
  - - ~>
21
21
  - !ruby/object:Gem::Version
22
- version: 1.6.4
22
+ version: 1.8.3
23
23
  type: :development
24
24
  prerelease: false
25
- version_requirements: *70247689182320
25
+ version_requirements: !ruby/object:Gem::Requirement
26
+ none: false
27
+ requirements:
28
+ - - ~>
29
+ - !ruby/object:Gem::Version
30
+ version: 1.8.3
26
31
  - !ruby/object:Gem::Dependency
27
32
  name: rake
28
- requirement: &70247689181240 !ruby/object:Gem::Requirement
33
+ requirement: !ruby/object:Gem::Requirement
29
34
  none: false
30
35
  requirements:
31
36
  - - ! '>='
@@ -33,10 +38,15 @@ dependencies:
33
38
  version: 0.9.2.2
34
39
  type: :development
35
40
  prerelease: false
36
- version_requirements: *70247689181240
41
+ version_requirements: !ruby/object:Gem::Requirement
42
+ none: false
43
+ requirements:
44
+ - - ! '>='
45
+ - !ruby/object:Gem::Version
46
+ version: 0.9.2.2
37
47
  - !ruby/object:Gem::Dependency
38
48
  name: rdoc
39
- requirement: &70247689180620 !ruby/object:Gem::Requirement
49
+ requirement: !ruby/object:Gem::Requirement
40
50
  none: false
41
51
  requirements:
42
52
  - - ! '>='
@@ -44,10 +54,15 @@ dependencies:
44
54
  version: '0'
45
55
  type: :development
46
56
  prerelease: false
47
- version_requirements: *70247689180620
57
+ version_requirements: !ruby/object:Gem::Requirement
58
+ none: false
59
+ requirements:
60
+ - - ! '>='
61
+ - !ruby/object:Gem::Version
62
+ version: '0'
48
63
  - !ruby/object:Gem::Dependency
49
64
  name: simplecov
50
- requirement: &70247689179940 !ruby/object:Gem::Requirement
65
+ requirement: !ruby/object:Gem::Requirement
51
66
  none: false
52
67
  requirements:
53
68
  - - ! '>='
@@ -55,10 +70,15 @@ dependencies:
55
70
  version: '0'
56
71
  type: :development
57
72
  prerelease: false
58
- version_requirements: *70247689179940
73
+ version_requirements: !ruby/object:Gem::Requirement
74
+ none: false
75
+ requirements:
76
+ - - ! '>='
77
+ - !ruby/object:Gem::Version
78
+ version: '0'
59
79
  - !ruby/object:Gem::Dependency
60
80
  name: rspec
61
- requirement: &70247689179160 !ruby/object:Gem::Requirement
81
+ requirement: !ruby/object:Gem::Requirement
62
82
  none: false
63
83
  requirements:
64
84
  - - ! '>='
@@ -66,7 +86,12 @@ dependencies:
66
86
  version: 2.8.0
67
87
  type: :development
68
88
  prerelease: false
69
- version_requirements: *70247689179160
89
+ version_requirements: !ruby/object:Gem::Requirement
90
+ none: false
91
+ requirements:
92
+ - - ! '>='
93
+ - !ruby/object:Gem::Version
94
+ version: 2.8.0
70
95
  description:
71
96
  email: rgogolok@avarteq.de
72
97
  executables: []
@@ -74,24 +99,28 @@ extensions: []
74
99
  extra_rdoc_files:
75
100
  - ChangeLog.markdown
76
101
  - LICENSE.txt
77
- - README.rdoc
102
+ - README.md
78
103
  files:
79
104
  - .rspec
80
105
  - .travis.yml
81
106
  - ChangeLog.markdown
82
107
  - Gemfile
83
108
  - LICENSE.txt
84
- - README.rdoc
109
+ - README.md
85
110
  - Rakefile
86
111
  - VERSION
87
112
  - gadgeto.gemspec
88
113
  - lib/gadgeto/all.rb
114
+ - lib/gadgeto/domain.rb
115
+ - lib/gadgeto/domain/validators.rb
89
116
  - lib/gadgeto/dslable.rb
90
117
  - lib/gadgeto/email.rb
91
118
  - lib/gadgeto/email/validators.rb
92
119
  - lib/gadgeto/sanitize_filename.rb
93
120
  - lib/gadgeto/time_of_day.rb
94
121
  - lib/gadgeto/video_url.rb
122
+ - spec/lib/gadgeto/domain/validators_spec.rb
123
+ - spec/lib/gadgeto/domain_spec.rb
95
124
  - spec/lib/gadgeto/dslable_spec.rb
96
125
  - spec/lib/gadgeto/email_spec.rb
97
126
  - spec/lib/gadgeto/sanitize_filename_spec.rb
@@ -115,7 +144,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
115
144
  version: '0'
116
145
  segments:
117
146
  - 0
118
- hash: 3861869912603315333
147
+ hash: -1408626391304891236
119
148
  required_rubygems_version: !ruby/object:Gem::Requirement
120
149
  none: false
121
150
  requirements:
@@ -124,7 +153,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
124
153
  version: '0'
125
154
  requirements: []
126
155
  rubyforge_project:
127
- rubygems_version: 1.8.10
156
+ rubygems_version: 1.8.24
128
157
  signing_key:
129
158
  specification_version: 3
130
159
  summary: collection of useful code snippets
@@ -1,108 +0,0 @@
1
- = Gadgeto
2
-
3
- Collection of ruby code snippets.
4
-
5
- == Build Status {<img src="https://secure.travis-ci.org/avarteqgmbh/gadgeto.png" />}[http://travis-ci.org/avarteqgmbh/gadgeto]
6
- == Dependency Status {<img src="https://gemnasium.com/avarteqgmbh/gadgeto.png" />}[https://gemnasium.com/avarteqgmbh/gadgeto]
7
-
8
- = Usage
9
-
10
- All functionality is loaded issuing:
11
-
12
- require 'gadgeto/all'
13
-
14
- If you plan to use only a handful of snippets, it is recommended to require
15
- explicitly each snippet:
16
-
17
- require 'gadgeto/<snippet>'
18
-
19
- For example:
20
-
21
- require 'gadgeto/dslable' # loads Gadgeto::Dslable
22
-
23
- = Overview
24
-
25
- == Gadgeto::Dslable
26
-
27
- require 'gadgeto/dslable'
28
-
29
- class Foo
30
- include Gadgeto::Dslable
31
- include Gadgeto::Dslable::Display
32
-
33
- dslable_method :item, :key, '*arguments'
34
-
35
-
36
- def inspect
37
- attributes[:key]
38
- end
39
- end
40
-
41
- f = Foo.new
42
-
43
-
44
- f.draw do
45
- item 'home', :baem => :bum do
46
- item 'terms'
47
- item 'imprint'
48
- end
49
-
50
- item 'products' do
51
- item 'kitchen' do
52
- item 'forks'
53
- end
54
- end
55
- end
56
-
57
- f.display :items
58
- f.items[0].attributes[:key] #=> "home"
59
-
60
- == Gadgeto::Email
61
-
62
- require 'gadgeto/email'
63
-
64
- Gadgeto::Email.valid?("user@example.com") #=> true
65
- Gadgeto::Email.valid?("user+name@example.com") #=> true
66
-
67
- == Gadgeto::TimeOfDay
68
-
69
- require 'gadgeto/time_of_day'
70
-
71
- Gadgeto::TimeOfDay.valid?("09:15") #=> true
72
-
73
- t = Gadgeto::TimeOfDay.new("08:30") #=> 08:30
74
- t.hour #=> 8
75
- t.minute #=> 30
76
- t.to_i #=> 480
77
- t.add_minutes(30) #=> 09:00
78
-
79
- t1 = Gadgeto::TimeOfDay.new("08:30") #=> 08:30
80
- t2 = Gadgeto::TimeOfDay.new("09:30") #=> 09:30
81
- t1 < t2 #=> true
82
- t1 > t2 #=> false
83
- t1.minutes_till(t2) #=> 60
84
- t1 == t2 #=> false
85
-
86
- == Gadgeto::SanitizeFilename (Module)
87
-
88
- require 'gadgeto/sanitize_filename'
89
-
90
- obj = Object.new
91
- obj.extend(Gadgeto::SanitizeFilename)
92
- obj.sanitize_filename("foo bar.zip") #=> "foo_bar.zip"
93
-
94
- == Gadgeto::VideoUrl
95
-
96
- require 'gadgeto/video_url'
97
-
98
- Gadgeto::VideoUrl.valid?("http://vimeo.com/11384488") #=> true
99
- Gadgeto::VideoUrl.supported_services #=> [:youtube, :vimeo]
100
-
101
- video_url = Gadgeto::VideoUrl.new('http://www.youtube.com/watch?v=0zM3nApSvMg')
102
- video_url.valid? #=> true
103
- video_url.service #=> :youtube
104
- video_url.id #=> "0zM3nApSvMg"
105
-
106
- = Contributors
107
-
108
- See https://github.com/avarteqgmbh/gadgeto/contributors