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.
- data/.travis.yml +3 -0
- data/Gemfile +1 -1
- data/README.md +136 -0
- data/VERSION +1 -1
- data/gadgeto.gemspec +12 -8
- data/lib/gadgeto/domain.rb +28 -0
- data/lib/gadgeto/domain/validators.rb +33 -0
- data/spec/lib/gadgeto/domain/validators_spec.rb +32 -0
- data/spec/lib/gadgeto/domain_spec.rb +40 -0
- metadata +46 -17
- data/README.rdoc +0 -108
data/.travis.yml
CHANGED
data/Gemfile
CHANGED
data/README.md
ADDED
@@ -0,0 +1,136 @@
|
|
1
|
+
Gadgeto
|
2
|
+
=======
|
3
|
+
|
4
|
+
[](http://travis-ci.org/avarteqgmbh/gadgeto)
|
5
|
+
[](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
|
+
0.2.0
|
data/gadgeto.gemspec
CHANGED
@@ -5,16 +5,16 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = "gadgeto"
|
8
|
-
s.version = "0.
|
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-
|
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.
|
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.
|
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.
|
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.
|
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.
|
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.
|
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.
|
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-
|
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:
|
17
|
+
requirement: !ruby/object:Gem::Requirement
|
18
18
|
none: false
|
19
19
|
requirements:
|
20
20
|
- - ~>
|
21
21
|
- !ruby/object:Gem::Version
|
22
|
-
version: 1.
|
22
|
+
version: 1.8.3
|
23
23
|
type: :development
|
24
24
|
prerelease: false
|
25
|
-
version_requirements:
|
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:
|
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:
|
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:
|
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:
|
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:
|
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:
|
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:
|
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:
|
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.
|
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.
|
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:
|
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.
|
156
|
+
rubygems_version: 1.8.24
|
128
157
|
signing_key:
|
129
158
|
specification_version: 3
|
130
159
|
summary: collection of useful code snippets
|
data/README.rdoc
DELETED
@@ -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
|