semantic_attributes 1.0.4 → 1.0.5
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.
- 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: []
|