gadgeto 0.1.1 → 0.2.0

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.
@@ -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