semantic_attributes 1.0.4 → 1.0.5
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Gemfile +3 -3
- data/Rakefile +10 -37
- data/lib/predicates/url.rb +1 -1
- data/lib/semantic_attributes/attribute_formats.rb +15 -28
- data/lib/semantic_attributes/predicates.rb +1 -0
- data/lib/semantic_attributes/version.rb +3 -3
- data/test/test_helper.rb +67 -67
- metadata +15 -15
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 171c2270aa742ab42f199d4898db3fff22a74391
|
4
|
+
data.tar.gz: 3c11f86efec71c907a53df0f7122ee34dfafcfd9
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: abdf4b7ff9e57fec950ba63f24eb243470edc915bc1d4e538fb99caa8a18b67d33c5dd1ef8cd53ff7439fb06c42bd389936ffda75c459f51e77ff9d13b0d5b0e
|
7
|
+
data.tar.gz: e5697b5751cabbcb2f7b3ff572b624ba88cb0dccaab55a96e99cd5d460d11d53460c17198315f5fed856784a129ca003957d9ae8badf9bef2c8fc8e9971d8b7a
|
data/Gemfile
CHANGED
@@ -1,3 +1,3 @@
|
|
1
|
-
source
|
2
|
-
|
3
|
-
gemspec
|
1
|
+
source 'https://rubygems.org'
|
2
|
+
|
3
|
+
gemspec
|
data/Rakefile
CHANGED
@@ -1,37 +1,10 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
require 'rdoc/rdoc'
|
12
|
-
require 'rake/rdoctask'
|
13
|
-
RDoc::Task = Rake::RDocTask
|
14
|
-
end
|
15
|
-
|
16
|
-
desc 'Default: run unit tests.'
|
17
|
-
task :default => :test
|
18
|
-
|
19
|
-
desc 'Test the SemanticAttributes plugin.'
|
20
|
-
Rake::TestTask.new(:test) do |t|
|
21
|
-
t.libs << 'lib'
|
22
|
-
t.pattern = 'test/unit/**/*_test.rb'
|
23
|
-
t.verbose = true
|
24
|
-
end
|
25
|
-
|
26
|
-
desc 'Generate documentation for the SemanticAttributes plugin.'
|
27
|
-
RDoc::Task.new(:rdoc) do |rdoc|
|
28
|
-
rdoc.rdoc_dir = 'rdoc'
|
29
|
-
rdoc.title = 'SemanticAttributes'
|
30
|
-
rdoc.options << '--line-numbers' << '--inline-source'
|
31
|
-
rdoc.rdoc_files.include('README')
|
32
|
-
rdoc.rdoc_files.include('gist.rdoc')
|
33
|
-
rdoc.rdoc_files.include('lib/**/*.rb')
|
34
|
-
end
|
35
|
-
|
36
|
-
Bundler::GemHelper.install_tasks
|
37
|
-
|
1
|
+
require "bundler/gem_tasks"
|
2
|
+
|
3
|
+
require 'rake/testtask'
|
4
|
+
Rake::TestTask.new do |t|
|
5
|
+
t.libs << "test"
|
6
|
+
t.test_files = FileList['test/**/*test.rb']
|
7
|
+
t.verbose = true
|
8
|
+
end
|
9
|
+
|
10
|
+
task :default => :test
|
data/lib/predicates/url.rb
CHANGED
@@ -7,7 +7,7 @@ require 'uri'
|
|
7
7
|
# :schemes [array, default ['http', 'https']] - a whitelist of allowed schemes. set to nil to allow all schemes.
|
8
8
|
# :ports [array, default nil] - a whitelist of allowed ports. set to nil to allow all ports.
|
9
9
|
# :allow_ip_address [boolean, default true] - whether to allow ip addresses instead to domain names.
|
10
|
-
# :implied_scheme [string, symbol, default 'http'] - what scheme to assume if
|
10
|
+
# :implied_scheme [string, symbol, default 'http'] - what scheme to assume if none is present.
|
11
11
|
#
|
12
12
|
# ==Examples
|
13
13
|
# # if you need an ftp url
|
@@ -10,28 +10,6 @@ module SemanticAttributes #:nodoc:
|
|
10
10
|
base.extend ClassMethods
|
11
11
|
end
|
12
12
|
|
13
|
-
def respond_to?(method_name, *args)
|
14
|
-
if md = method_name.to_s.match(/_for_human$/) and semantic_attributes.include?(md.pre_match)
|
15
|
-
true
|
16
|
-
else
|
17
|
-
super
|
18
|
-
end
|
19
|
-
end
|
20
|
-
|
21
|
-
protected
|
22
|
-
|
23
|
-
def method_missing(method_name, *args, &block)
|
24
|
-
if md = method_name.to_s.match(/_for_human$/) and semantic_attributes.include?(md.pre_match)
|
25
|
-
self.class.humanize(md.pre_match, self.send(md.pre_match))
|
26
|
-
else
|
27
|
-
begin
|
28
|
-
super
|
29
|
-
rescue
|
30
|
-
raise $!, $!.to_s, caller
|
31
|
-
end
|
32
|
-
end
|
33
|
-
end
|
34
|
-
|
35
13
|
module ClassMethods
|
36
14
|
# converts the object into human format according to the predicates for the attribute.
|
37
15
|
# the object may really be anything: string, integer, date, etc.
|
@@ -47,14 +25,15 @@ module SemanticAttributes #:nodoc:
|
|
47
25
|
|
48
26
|
protected
|
49
27
|
|
50
|
-
def
|
51
|
-
|
52
|
-
|
53
|
-
self.
|
54
|
-
else
|
55
|
-
self.define_attribute_methods if self.respond_to? :attribute_methods_generated? and !self.attribute_methods_generated?
|
28
|
+
def define_humanization_method_for(attr)
|
29
|
+
ensure_attribute_methods_defined
|
30
|
+
define_method "#{attr}_for_human" do
|
31
|
+
self.class.humanize(attr, send(attr))
|
56
32
|
end
|
33
|
+
end
|
57
34
|
|
35
|
+
def define_normalization_method_for(attr)
|
36
|
+
ensure_attribute_methods_defined
|
58
37
|
writer = "#{attr}_with_normalization="
|
59
38
|
old_writer = "#{attr}_without_normalization=".to_sym
|
60
39
|
unless method_defined? writer
|
@@ -67,6 +46,14 @@ module SemanticAttributes #:nodoc:
|
|
67
46
|
raise SemanticAttributes::MissingAttribute.new(attr)
|
68
47
|
end
|
69
48
|
|
49
|
+
def ensure_attribute_methods_defined
|
50
|
+
if Gem::Version.new(::ActiveRecord::VERSION::STRING) >= Gem::Version.new("4.0.4")
|
51
|
+
# Changes from Rails 4.0.4: https://github.com/rails/rails/commit/714634ad02b443ab51f8ef3ded324de411715d2a
|
52
|
+
self.define_attribute_methods if !@attribute_methods_generated
|
53
|
+
else
|
54
|
+
self.define_attribute_methods if self.respond_to? :attribute_methods_generated? and !self.attribute_methods_generated?
|
55
|
+
end
|
56
|
+
end
|
70
57
|
end
|
71
58
|
end
|
72
59
|
end
|
@@ -128,6 +128,7 @@ module SemanticAttributes
|
|
128
128
|
args << options if options
|
129
129
|
fields.each do |field|
|
130
130
|
# TODO: create a less sugary method that may be used programmatically and takes care of defining the normalization method properly
|
131
|
+
define_humanization_method_for field
|
131
132
|
define_normalization_method_for field
|
132
133
|
self.semantic_attributes[field].add *args
|
133
134
|
end
|
@@ -1,3 +1,3 @@
|
|
1
|
-
module SemanticAttributes
|
2
|
-
VERSION = "1.0.
|
3
|
-
end
|
1
|
+
module SemanticAttributes
|
2
|
+
VERSION = "1.0.5"
|
3
|
+
end
|
data/test/test_helper.rb
CHANGED
@@ -1,67 +1,67 @@
|
|
1
|
-
ENV["RAILS_ENV"] = "test"
|
2
|
-
|
3
|
-
# load the support libraries
|
4
|
-
require '
|
5
|
-
require 'rubygems'
|
6
|
-
require 'active_record'
|
7
|
-
require 'active_record/fixtures'
|
8
|
-
require 'active_support/time'
|
9
|
-
|
10
|
-
# load the code-to-be-tested
|
11
|
-
require 'semantic_attributes'
|
12
|
-
|
13
|
-
Time.zone = 'UTC'
|
14
|
-
|
15
|
-
# establish the database connection
|
16
|
-
ActiveRecord::Base.configurations = YAML::load(IO.read(File.dirname(__FILE__) + '/db/database.yml'))
|
17
|
-
ActiveRecord::Base.establish_connection(
|
18
|
-
|
19
|
-
# capture the logging
|
20
|
-
ActiveRecord::Base.logger = Logger.new(File.dirname(__FILE__) + "/test.log")
|
21
|
-
|
22
|
-
# load the schema ... silently
|
23
|
-
ActiveRecord::Migration.verbose = false
|
24
|
-
load(File.dirname(__FILE__) + "/db/schema.rb")
|
25
|
-
|
26
|
-
# load the ActiveRecord models
|
27
|
-
require File.dirname(__FILE__) + '/db/models'
|
28
|
-
|
29
|
-
# configure the TestCase settings
|
30
|
-
class SemanticAttributes::TestCase < ActiveSupport::TestCase
|
31
|
-
include ActiveRecord::TestFixtures
|
32
|
-
include PluginTestModels
|
33
|
-
|
34
|
-
self.use_transactional_fixtures = true
|
35
|
-
self.use_instantiated_fixtures = false
|
36
|
-
self.fixture_path = File.dirname(__FILE__) + '/fixtures/'
|
37
|
-
|
38
|
-
fixtures :all
|
39
|
-
end
|
40
|
-
|
41
|
-
class ActiveRecord::Base
|
42
|
-
# Aids the management of per-test semantics.
|
43
|
-
#
|
44
|
-
# Examples:
|
45
|
-
#
|
46
|
-
# User.stub_semantics_with(:email => :email)
|
47
|
-
# User.stub_semantics_with(:email => [:email, :unique])
|
48
|
-
# User.stub_semantics_with(:email => {:length => {:above => 5}})
|
49
|
-
# User.stub_semantics_with(:email => [:email, {:length => {:above => 5}}])
|
50
|
-
def self.stub_semantics_with(attr_predicates = {})
|
51
|
-
semantics = SemanticAttributes::Set.new
|
52
|
-
attr_predicates.each do |attr, predicates|
|
53
|
-
[predicates].flatten.each do |predicate|
|
54
|
-
case predicate
|
55
|
-
when String, Symbol
|
56
|
-
semantics[attr].add(predicate)
|
57
|
-
when Hash
|
58
|
-
semantics[attr].add(predicate.keys.first, predicate.values.first)
|
59
|
-
else
|
60
|
-
raise '???'
|
61
|
-
end
|
62
|
-
end
|
63
|
-
end
|
64
|
-
|
65
|
-
self.stubs(:semantic_attributes).returns(semantics)
|
66
|
-
end
|
67
|
-
end
|
1
|
+
ENV["RAILS_ENV"] = "test"
|
2
|
+
|
3
|
+
# load the support libraries
|
4
|
+
require 'minitest/autorun'
|
5
|
+
require 'rubygems'
|
6
|
+
require 'active_record'
|
7
|
+
require 'active_record/fixtures'
|
8
|
+
require 'active_support/time'
|
9
|
+
|
10
|
+
# load the code-to-be-tested
|
11
|
+
require 'semantic_attributes'
|
12
|
+
|
13
|
+
Time.zone = 'UTC'
|
14
|
+
|
15
|
+
# establish the database connection
|
16
|
+
ActiveRecord::Base.configurations = YAML::load(IO.read(File.dirname(__FILE__) + '/db/database.yml'))
|
17
|
+
ActiveRecord::Base.establish_connection(:semantic_attributes_test)
|
18
|
+
|
19
|
+
# capture the logging
|
20
|
+
ActiveRecord::Base.logger = Logger.new(File.dirname(__FILE__) + "/test.log")
|
21
|
+
|
22
|
+
# load the schema ... silently
|
23
|
+
ActiveRecord::Migration.verbose = false
|
24
|
+
load(File.dirname(__FILE__) + "/db/schema.rb")
|
25
|
+
|
26
|
+
# load the ActiveRecord models
|
27
|
+
require File.dirname(__FILE__) + '/db/models'
|
28
|
+
|
29
|
+
# configure the TestCase settings
|
30
|
+
class SemanticAttributes::TestCase < ActiveSupport::TestCase
|
31
|
+
include ActiveRecord::TestFixtures
|
32
|
+
include PluginTestModels
|
33
|
+
|
34
|
+
self.use_transactional_fixtures = true
|
35
|
+
self.use_instantiated_fixtures = false
|
36
|
+
self.fixture_path = File.dirname(__FILE__) + '/fixtures/'
|
37
|
+
|
38
|
+
fixtures :all
|
39
|
+
end
|
40
|
+
|
41
|
+
class ActiveRecord::Base
|
42
|
+
# Aids the management of per-test semantics.
|
43
|
+
#
|
44
|
+
# Examples:
|
45
|
+
#
|
46
|
+
# User.stub_semantics_with(:email => :email)
|
47
|
+
# User.stub_semantics_with(:email => [:email, :unique])
|
48
|
+
# User.stub_semantics_with(:email => {:length => {:above => 5}})
|
49
|
+
# User.stub_semantics_with(:email => [:email, {:length => {:above => 5}}])
|
50
|
+
def self.stub_semantics_with(attr_predicates = {})
|
51
|
+
semantics = SemanticAttributes::Set.new
|
52
|
+
attr_predicates.each do |attr, predicates|
|
53
|
+
[predicates].flatten.each do |predicate|
|
54
|
+
case predicate
|
55
|
+
when String, Symbol
|
56
|
+
semantics[attr].add(predicate)
|
57
|
+
when Hash
|
58
|
+
semantics[attr].add(predicate.keys.first, predicate.values.first)
|
59
|
+
else
|
60
|
+
raise '???'
|
61
|
+
end
|
62
|
+
end
|
63
|
+
end
|
64
|
+
|
65
|
+
self.stubs(:semantic_attributes).returns(semantics)
|
66
|
+
end
|
67
|
+
end
|
metadata
CHANGED
@@ -1,83 +1,83 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: semantic_attributes
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.
|
4
|
+
version: 1.0.5
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Lance Ivy
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2015-06-25 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- -
|
17
|
+
- - ">="
|
18
18
|
- !ruby/object:Gem::Version
|
19
19
|
version: 3.2.13
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
|
-
- -
|
24
|
+
- - ">="
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: 3.2.13
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: bundler
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
|
-
- -
|
31
|
+
- - ">="
|
32
32
|
- !ruby/object:Gem::Version
|
33
33
|
version: 1.0.0
|
34
34
|
type: :development
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
|
-
- -
|
38
|
+
- - ">="
|
39
39
|
- !ruby/object:Gem::Version
|
40
40
|
version: 1.0.0
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: sqlite3
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
44
44
|
requirements:
|
45
|
-
- -
|
45
|
+
- - ">="
|
46
46
|
- !ruby/object:Gem::Version
|
47
47
|
version: '0'
|
48
48
|
type: :development
|
49
49
|
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
|
-
- -
|
52
|
+
- - ">="
|
53
53
|
- !ruby/object:Gem::Version
|
54
54
|
version: '0'
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
56
|
name: rake
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
58
58
|
requirements:
|
59
|
-
- -
|
59
|
+
- - ">="
|
60
60
|
- !ruby/object:Gem::Version
|
61
61
|
version: 0.8.7
|
62
62
|
type: :development
|
63
63
|
prerelease: false
|
64
64
|
version_requirements: !ruby/object:Gem::Requirement
|
65
65
|
requirements:
|
66
|
-
- -
|
66
|
+
- - ">="
|
67
67
|
- !ruby/object:Gem::Version
|
68
68
|
version: 0.8.7
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
70
|
name: mocha
|
71
71
|
requirement: !ruby/object:Gem::Requirement
|
72
72
|
requirements:
|
73
|
-
- -
|
73
|
+
- - ">="
|
74
74
|
- !ruby/object:Gem::Version
|
75
75
|
version: 0.10.5
|
76
76
|
type: :development
|
77
77
|
prerelease: false
|
78
78
|
version_requirements: !ruby/object:Gem::Requirement
|
79
79
|
requirements:
|
80
|
-
- -
|
80
|
+
- - ">="
|
81
81
|
- !ruby/object:Gem::Version
|
82
82
|
version: 0.10.5
|
83
83
|
description: A validation library for ActiveRecord models that allows introspection
|
@@ -87,7 +87,7 @@ executables: []
|
|
87
87
|
extensions: []
|
88
88
|
extra_rdoc_files: []
|
89
89
|
files:
|
90
|
-
- .gitignore
|
90
|
+
- ".gitignore"
|
91
91
|
- Gemfile
|
92
92
|
- MIT-LICENSE
|
93
93
|
- README
|
@@ -169,12 +169,12 @@ require_paths:
|
|
169
169
|
- lib
|
170
170
|
required_ruby_version: !ruby/object:Gem::Requirement
|
171
171
|
requirements:
|
172
|
-
- -
|
172
|
+
- - ">="
|
173
173
|
- !ruby/object:Gem::Version
|
174
174
|
version: '0'
|
175
175
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
176
176
|
requirements:
|
177
|
-
- -
|
177
|
+
- - ">="
|
178
178
|
- !ruby/object:Gem::Version
|
179
179
|
version: '0'
|
180
180
|
requirements: []
|