apress-validators 0.1.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.
- checksums.yaml +15 -0
- data/.gitignore +19 -0
- data/.rspec +5 -0
- data/Appraisals +19 -0
- data/Gemfile +4 -0
- data/Makefile +32 -0
- data/README.md +36 -0
- data/Rakefile +5 -0
- data/app/validators/count_validator.rb +17 -0
- data/apress-validators.gemspec +32 -0
- data/config.ru +7 -0
- data/config/locales/ru.yml +12 -0
- data/lib/apress/validators.rb +8 -0
- data/lib/apress/validators/engine.rb +8 -0
- data/lib/apress/validators/version.rb +5 -0
- data/spec/app/validators/count_validator_spec.rb +70 -0
- data/spec/internal/app/models/owner.rb +4 -0
- data/spec/internal/app/models/pet.rb +3 -0
- data/spec/internal/config/.gitignore +1 -0
- data/spec/internal/db/schema.rb +6 -0
- data/spec/internal/log/.gitignore +1 -0
- data/spec/spec_helper.rb +21 -0
- metadata +219 -0
checksums.yaml
ADDED
@@ -0,0 +1,15 @@
|
|
1
|
+
---
|
2
|
+
!binary "U0hBMQ==":
|
3
|
+
metadata.gz: !binary |-
|
4
|
+
MmVlNzJkNTQ5MzIyNjhhYjc0OWZlNzE1MGE1MjFhY2JkZjI0NGMwMg==
|
5
|
+
data.tar.gz: !binary |-
|
6
|
+
M2FjNTFlYjRmZWE2OTliMTdhOGU3ZjBiZDcwODg4ZmVlMDc5ZTkzMw==
|
7
|
+
SHA512:
|
8
|
+
metadata.gz: !binary |-
|
9
|
+
MTI2ZTEzMWM4NWNhZTBmNWI4NWIyNzFmNzEzYTM3YWJlYmYwYWZlODZiOGE5
|
10
|
+
ZTVkNjFlYTcyNTIwMWQxMGE1M2Y3MzFmMWM5MzhmMmNmYjU1YTJjMTM0Y2Iz
|
11
|
+
MWMyODQ0MThkODVmNjYxZGQ1NGMxM2E0Yjk2M2YwM2FkMzQ5ODc=
|
12
|
+
data.tar.gz: !binary |-
|
13
|
+
ZDA4ZjFiZWY0ZWQ4YzNkNzBjZjg4OGQ2ODQ2M2Q3NTc1MDI0YmFhMjY3NzJm
|
14
|
+
NzY1YTQ4ODY5NmZhMDVjZmM5N2ZjOWQ4NjdlMDFjN2JhMmJkMmRkZTk4MGQz
|
15
|
+
M2U3MzQ1MzM1MGNhZTdjMmExOTRjY2ZjODZkZWZkMDYzZDMxODk=
|
data/.gitignore
ADDED
data/.rspec
ADDED
data/Appraisals
ADDED
@@ -0,0 +1,19 @@
|
|
1
|
+
appraise 'rails3.1' do
|
2
|
+
gem 'rails', '~> 3.1'
|
3
|
+
end
|
4
|
+
|
5
|
+
appraise 'rails3.2' do
|
6
|
+
gem 'rails', '~> 3.2'
|
7
|
+
end
|
8
|
+
|
9
|
+
appraise 'rails4.0' do
|
10
|
+
gem 'rails', '~> 4.0'
|
11
|
+
end
|
12
|
+
|
13
|
+
appraise 'rails4.1' do
|
14
|
+
gem 'rails', '~> 4.1'
|
15
|
+
end
|
16
|
+
|
17
|
+
appraise 'rails4.2' do
|
18
|
+
gem 'rails', '~> 4.2'
|
19
|
+
end
|
data/Gemfile
ADDED
data/Makefile
ADDED
@@ -0,0 +1,32 @@
|
|
1
|
+
RAILS_ENV = test
|
2
|
+
BUNDLE = RAILS_ENV=${RAILS_ENV} bundle
|
3
|
+
BUNDLE_OPTIONS = --jobs=2
|
4
|
+
RSPEC = rspec
|
5
|
+
APPRAISAL = appraisal
|
6
|
+
|
7
|
+
all: test
|
8
|
+
|
9
|
+
test: configs bundler appraisal
|
10
|
+
${BUNDLE} exec ${APPRAISAL} ${RSPEC} spec 2>&1
|
11
|
+
|
12
|
+
define DATABASE_YML
|
13
|
+
test:
|
14
|
+
adapter: postgresql
|
15
|
+
database: docker
|
16
|
+
username: docker
|
17
|
+
host: localhost
|
18
|
+
min_messages: warning
|
19
|
+
endef
|
20
|
+
export DATABASE_YML
|
21
|
+
|
22
|
+
configs:
|
23
|
+
echo "$${DATABASE_YML}" > spec/internal/config/database.yml
|
24
|
+
|
25
|
+
bundler:
|
26
|
+
if ! gem list bundler -i > /dev/null; then \
|
27
|
+
gem install bundler; \
|
28
|
+
fi
|
29
|
+
${BUNDLE} install ${BUNDLE_OPTIONS}
|
30
|
+
|
31
|
+
appraisal:
|
32
|
+
${BUNDLE} exec ${APPRAISAL} install
|
data/README.md
ADDED
@@ -0,0 +1,36 @@
|
|
1
|
+
# Apress::Validators
|
2
|
+
<a href="http://dolly.railsc.ru/projects/136/builds/latest/?ref=master">
|
3
|
+
<img src="http://dolly.railsc.ru/badges/abak-press/apress-validators/master" height="18">
|
4
|
+
</a>
|
5
|
+
|
6
|
+
Validators for ActiveRecord and ActiveModel.
|
7
|
+
|
8
|
+
## Installation
|
9
|
+
|
10
|
+
Add this line to your application's Gemfile:
|
11
|
+
|
12
|
+
```ruby
|
13
|
+
gem 'apress-validators'
|
14
|
+
```
|
15
|
+
|
16
|
+
And then execute:
|
17
|
+
|
18
|
+
$ bundle install
|
19
|
+
|
20
|
+
## Available Validators
|
21
|
+
|
22
|
+
`CountValidator` - behaves similarly to `LengthValidator`, but designed only for associated records. Does not count records
|
23
|
+
that are marked for destruction. Takes the same options as `LengthValidator`.
|
24
|
+
```ruby
|
25
|
+
validates :image, :count => {:maximum => 24}
|
26
|
+
validates :image, :count => {:minimum => 2, message: 'Must have at lest 2 images'}
|
27
|
+
validates :image, :count => {:is => 3, :allow_nil => true}
|
28
|
+
```
|
29
|
+
|
30
|
+
## Contributing
|
31
|
+
|
32
|
+
1. Fork it ( https://github.com/[my-github-username]/apress-validators/fork )
|
33
|
+
2. Create your feature branch (`git checkout -b my-new-feature`)
|
34
|
+
3. Commit your changes (`git commit -am 'Add some feature'`)
|
35
|
+
4. Push to the branch (`git push origin my-new-feature`)
|
36
|
+
5. Create a new Pull Request
|
data/Rakefile
ADDED
@@ -0,0 +1,17 @@
|
|
1
|
+
class CountValidator < ActiveModel::Validations::LengthValidator
|
2
|
+
MESSAGES = {
|
3
|
+
:wrong_length => :count_invalid,
|
4
|
+
:too_short => :count_greater_than_or_equal_to,
|
5
|
+
:too_long => :count_less_than_or_equal_to
|
6
|
+
}.freeze
|
7
|
+
|
8
|
+
def initialize(options)
|
9
|
+
options = options.reverse_merge(MESSAGES)
|
10
|
+
super
|
11
|
+
end
|
12
|
+
|
13
|
+
def validate_each(record, attribute, value)
|
14
|
+
existing_records = record.send(attribute).reject(&:marked_for_destruction?)
|
15
|
+
super(record, attribute, existing_records)
|
16
|
+
end
|
17
|
+
end
|
@@ -0,0 +1,32 @@
|
|
1
|
+
# coding: utf-8
|
2
|
+
lib = File.expand_path('../lib', __FILE__)
|
3
|
+
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
4
|
+
require 'apress/validators/version'
|
5
|
+
|
6
|
+
Gem::Specification.new do |spec|
|
7
|
+
spec.name = 'apress-validators'
|
8
|
+
spec.version = Apress::Validators::VERSION
|
9
|
+
spec.authors = ['Pavel Galkin']
|
10
|
+
spec.email = ['paulriddle@openmailbox.org']
|
11
|
+
spec.summary = 'Validators for ActiveRecord and ActiveModel.'
|
12
|
+
spec.description = %q{The gem is supposed to contain validators
|
13
|
+
that can be used across multiple projects.}
|
14
|
+
spec.homepage = 'https://github.com/abak-press/apress-validators'
|
15
|
+
|
16
|
+
spec.files = `git ls-files -z`.split("\x0")
|
17
|
+
spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
|
18
|
+
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
19
|
+
spec.require_paths = ['lib']
|
20
|
+
|
21
|
+
spec.add_runtime_dependency 'rails', '>= 3.1', '< 4.3'
|
22
|
+
spec.add_runtime_dependency 'pg'
|
23
|
+
|
24
|
+
spec.add_development_dependency 'bundler', '~> 1.7'
|
25
|
+
spec.add_development_dependency 'rake'
|
26
|
+
spec.add_development_dependency 'rspec', '>= 3.1'
|
27
|
+
spec.add_development_dependency 'rspec-rails', '>= 2.14.0'
|
28
|
+
spec.add_development_dependency 'combustion', '>= 0.5.3'
|
29
|
+
spec.add_development_dependency 'appraisal', '>= 1.0.2'
|
30
|
+
spec.add_development_dependency 'simplecov'
|
31
|
+
spec.add_development_dependency 'pry-debugger'
|
32
|
+
end
|
data/config.ru
ADDED
@@ -0,0 +1,12 @@
|
|
1
|
+
ru:
|
2
|
+
errors:
|
3
|
+
messages:
|
4
|
+
count_less_than_or_equal_to:
|
5
|
+
one: Количество должно быть меньше одного
|
6
|
+
other: Количество должно быть %{count} или меньше
|
7
|
+
count_greater_than_or_equal_to:
|
8
|
+
one: Количество должно быть больше одного
|
9
|
+
other: Количество должно быть больше %{count}
|
10
|
+
count_invalid:
|
11
|
+
one: Неверное количество (должно быть 1)
|
12
|
+
other: Неверное количество (должно быть %{count})
|
@@ -0,0 +1,70 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
RSpec.describe CountValidator do
|
4
|
+
before do
|
5
|
+
stub_const('OwnerClass', Class.new(Owner))
|
6
|
+
end
|
7
|
+
|
8
|
+
describe 'success' do
|
9
|
+
let(:owner) { OwnerClass.new }
|
10
|
+
|
11
|
+
before do
|
12
|
+
OwnerClass.validates :pets, :count => {:minimum => 2}
|
13
|
+
owner.pets = [Pet.new, Pet.new]
|
14
|
+
end
|
15
|
+
|
16
|
+
it { expect(owner).to be_valid }
|
17
|
+
end
|
18
|
+
|
19
|
+
describe 'failure' do
|
20
|
+
let(:owner) { OwnerClass.new }
|
21
|
+
|
22
|
+
before do
|
23
|
+
OwnerClass.validates :pets, :count => {:minimum => 2}
|
24
|
+
end
|
25
|
+
|
26
|
+
it do
|
27
|
+
expect(owner).to be_invalid
|
28
|
+
expect(owner.errors).to include(:pets)
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
context 'when associated records are marked for destruction' do
|
33
|
+
let(:owner) { OwnerClass.new(pets: [Pet.new, Pet.new]) }
|
34
|
+
|
35
|
+
before do
|
36
|
+
OwnerClass.validates :pets, :count => {:maximum => 1}
|
37
|
+
owner.pets.last.mark_for_destruction
|
38
|
+
end
|
39
|
+
|
40
|
+
it 'does not count associated records marked for destruction' do
|
41
|
+
expect(owner).to be_valid
|
42
|
+
end
|
43
|
+
end
|
44
|
+
|
45
|
+
context 'with no optional error messages' do
|
46
|
+
let(:owner) { OwnerClass.new }
|
47
|
+
|
48
|
+
before do
|
49
|
+
OwnerClass.validates :pets, :count => {:minimum => 1}
|
50
|
+
owner.save
|
51
|
+
end
|
52
|
+
|
53
|
+
it "uses it's own default error messages" do
|
54
|
+
expect(owner.errors[:pets]).to eq([I18n.t('errors.messages.count_greater_than_or_equal_to.one')])
|
55
|
+
end
|
56
|
+
end
|
57
|
+
|
58
|
+
context 'with optional error message' do
|
59
|
+
let(:owner) { OwnerClass.new }
|
60
|
+
|
61
|
+
before do
|
62
|
+
OwnerClass.validates :pets, :count => {:minimum => 1, :too_short => 'optional message'}
|
63
|
+
owner.save
|
64
|
+
end
|
65
|
+
|
66
|
+
it 'uses optional error message' do
|
67
|
+
expect(owner.errors[:pets]).to eq(['optional message'])
|
68
|
+
end
|
69
|
+
end
|
70
|
+
end
|
@@ -0,0 +1 @@
|
|
1
|
+
database.yml
|
@@ -0,0 +1 @@
|
|
1
|
+
*.log
|
data/spec/spec_helper.rb
ADDED
@@ -0,0 +1,21 @@
|
|
1
|
+
require 'bundler/setup'
|
2
|
+
require 'apress/validators'
|
3
|
+
|
4
|
+
require 'simplecov'
|
5
|
+
SimpleCov.start 'rails' do
|
6
|
+
minimum_coverage 100
|
7
|
+
add_filter 'lib'
|
8
|
+
end
|
9
|
+
|
10
|
+
require 'combustion'
|
11
|
+
Combustion.initialize! :active_record do
|
12
|
+
config.i18n.enforce_available_locales = false
|
13
|
+
config.i18n.default_locale = :ru
|
14
|
+
end
|
15
|
+
|
16
|
+
require 'rspec/rails'
|
17
|
+
RSpec.configure do |config|
|
18
|
+
config.use_transactional_fixtures = true
|
19
|
+
config.filter_run_including :focus => true
|
20
|
+
config.run_all_when_everything_filtered = true
|
21
|
+
end
|
metadata
ADDED
@@ -0,0 +1,219 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: apress-validators
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.1.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Pavel Galkin
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2015-12-11 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: rails
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - ! '>='
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '3.1'
|
20
|
+
- - <
|
21
|
+
- !ruby/object:Gem::Version
|
22
|
+
version: '4.3'
|
23
|
+
type: :runtime
|
24
|
+
prerelease: false
|
25
|
+
version_requirements: !ruby/object:Gem::Requirement
|
26
|
+
requirements:
|
27
|
+
- - ! '>='
|
28
|
+
- !ruby/object:Gem::Version
|
29
|
+
version: '3.1'
|
30
|
+
- - <
|
31
|
+
- !ruby/object:Gem::Version
|
32
|
+
version: '4.3'
|
33
|
+
- !ruby/object:Gem::Dependency
|
34
|
+
name: pg
|
35
|
+
requirement: !ruby/object:Gem::Requirement
|
36
|
+
requirements:
|
37
|
+
- - ! '>='
|
38
|
+
- !ruby/object:Gem::Version
|
39
|
+
version: '0'
|
40
|
+
type: :runtime
|
41
|
+
prerelease: false
|
42
|
+
version_requirements: !ruby/object:Gem::Requirement
|
43
|
+
requirements:
|
44
|
+
- - ! '>='
|
45
|
+
- !ruby/object:Gem::Version
|
46
|
+
version: '0'
|
47
|
+
- !ruby/object:Gem::Dependency
|
48
|
+
name: bundler
|
49
|
+
requirement: !ruby/object:Gem::Requirement
|
50
|
+
requirements:
|
51
|
+
- - ~>
|
52
|
+
- !ruby/object:Gem::Version
|
53
|
+
version: '1.7'
|
54
|
+
type: :development
|
55
|
+
prerelease: false
|
56
|
+
version_requirements: !ruby/object:Gem::Requirement
|
57
|
+
requirements:
|
58
|
+
- - ~>
|
59
|
+
- !ruby/object:Gem::Version
|
60
|
+
version: '1.7'
|
61
|
+
- !ruby/object:Gem::Dependency
|
62
|
+
name: rake
|
63
|
+
requirement: !ruby/object:Gem::Requirement
|
64
|
+
requirements:
|
65
|
+
- - ! '>='
|
66
|
+
- !ruby/object:Gem::Version
|
67
|
+
version: '0'
|
68
|
+
type: :development
|
69
|
+
prerelease: false
|
70
|
+
version_requirements: !ruby/object:Gem::Requirement
|
71
|
+
requirements:
|
72
|
+
- - ! '>='
|
73
|
+
- !ruby/object:Gem::Version
|
74
|
+
version: '0'
|
75
|
+
- !ruby/object:Gem::Dependency
|
76
|
+
name: rspec
|
77
|
+
requirement: !ruby/object:Gem::Requirement
|
78
|
+
requirements:
|
79
|
+
- - ! '>='
|
80
|
+
- !ruby/object:Gem::Version
|
81
|
+
version: '3.1'
|
82
|
+
type: :development
|
83
|
+
prerelease: false
|
84
|
+
version_requirements: !ruby/object:Gem::Requirement
|
85
|
+
requirements:
|
86
|
+
- - ! '>='
|
87
|
+
- !ruby/object:Gem::Version
|
88
|
+
version: '3.1'
|
89
|
+
- !ruby/object:Gem::Dependency
|
90
|
+
name: rspec-rails
|
91
|
+
requirement: !ruby/object:Gem::Requirement
|
92
|
+
requirements:
|
93
|
+
- - ! '>='
|
94
|
+
- !ruby/object:Gem::Version
|
95
|
+
version: 2.14.0
|
96
|
+
type: :development
|
97
|
+
prerelease: false
|
98
|
+
version_requirements: !ruby/object:Gem::Requirement
|
99
|
+
requirements:
|
100
|
+
- - ! '>='
|
101
|
+
- !ruby/object:Gem::Version
|
102
|
+
version: 2.14.0
|
103
|
+
- !ruby/object:Gem::Dependency
|
104
|
+
name: combustion
|
105
|
+
requirement: !ruby/object:Gem::Requirement
|
106
|
+
requirements:
|
107
|
+
- - ! '>='
|
108
|
+
- !ruby/object:Gem::Version
|
109
|
+
version: 0.5.3
|
110
|
+
type: :development
|
111
|
+
prerelease: false
|
112
|
+
version_requirements: !ruby/object:Gem::Requirement
|
113
|
+
requirements:
|
114
|
+
- - ! '>='
|
115
|
+
- !ruby/object:Gem::Version
|
116
|
+
version: 0.5.3
|
117
|
+
- !ruby/object:Gem::Dependency
|
118
|
+
name: appraisal
|
119
|
+
requirement: !ruby/object:Gem::Requirement
|
120
|
+
requirements:
|
121
|
+
- - ! '>='
|
122
|
+
- !ruby/object:Gem::Version
|
123
|
+
version: 1.0.2
|
124
|
+
type: :development
|
125
|
+
prerelease: false
|
126
|
+
version_requirements: !ruby/object:Gem::Requirement
|
127
|
+
requirements:
|
128
|
+
- - ! '>='
|
129
|
+
- !ruby/object:Gem::Version
|
130
|
+
version: 1.0.2
|
131
|
+
- !ruby/object:Gem::Dependency
|
132
|
+
name: simplecov
|
133
|
+
requirement: !ruby/object:Gem::Requirement
|
134
|
+
requirements:
|
135
|
+
- - ! '>='
|
136
|
+
- !ruby/object:Gem::Version
|
137
|
+
version: '0'
|
138
|
+
type: :development
|
139
|
+
prerelease: false
|
140
|
+
version_requirements: !ruby/object:Gem::Requirement
|
141
|
+
requirements:
|
142
|
+
- - ! '>='
|
143
|
+
- !ruby/object:Gem::Version
|
144
|
+
version: '0'
|
145
|
+
- !ruby/object:Gem::Dependency
|
146
|
+
name: pry-debugger
|
147
|
+
requirement: !ruby/object:Gem::Requirement
|
148
|
+
requirements:
|
149
|
+
- - ! '>='
|
150
|
+
- !ruby/object:Gem::Version
|
151
|
+
version: '0'
|
152
|
+
type: :development
|
153
|
+
prerelease: false
|
154
|
+
version_requirements: !ruby/object:Gem::Requirement
|
155
|
+
requirements:
|
156
|
+
- - ! '>='
|
157
|
+
- !ruby/object:Gem::Version
|
158
|
+
version: '0'
|
159
|
+
description: ! "The gem is supposed to contain validators\n that
|
160
|
+
can be used across multiple projects."
|
161
|
+
email:
|
162
|
+
- paulriddle@openmailbox.org
|
163
|
+
executables: []
|
164
|
+
extensions: []
|
165
|
+
extra_rdoc_files: []
|
166
|
+
files:
|
167
|
+
- .gitignore
|
168
|
+
- .rspec
|
169
|
+
- Appraisals
|
170
|
+
- Gemfile
|
171
|
+
- Makefile
|
172
|
+
- README.md
|
173
|
+
- Rakefile
|
174
|
+
- app/validators/count_validator.rb
|
175
|
+
- apress-validators.gemspec
|
176
|
+
- config.ru
|
177
|
+
- config/locales/ru.yml
|
178
|
+
- lib/apress/validators.rb
|
179
|
+
- lib/apress/validators/engine.rb
|
180
|
+
- lib/apress/validators/version.rb
|
181
|
+
- spec/app/validators/count_validator_spec.rb
|
182
|
+
- spec/internal/app/models/owner.rb
|
183
|
+
- spec/internal/app/models/pet.rb
|
184
|
+
- spec/internal/config/.gitignore
|
185
|
+
- spec/internal/db/schema.rb
|
186
|
+
- spec/internal/log/.gitignore
|
187
|
+
- spec/spec_helper.rb
|
188
|
+
homepage: https://github.com/abak-press/apress-validators
|
189
|
+
licenses: []
|
190
|
+
metadata: {}
|
191
|
+
post_install_message:
|
192
|
+
rdoc_options: []
|
193
|
+
require_paths:
|
194
|
+
- lib
|
195
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
196
|
+
requirements:
|
197
|
+
- - ! '>='
|
198
|
+
- !ruby/object:Gem::Version
|
199
|
+
version: '0'
|
200
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
201
|
+
requirements:
|
202
|
+
- - ! '>='
|
203
|
+
- !ruby/object:Gem::Version
|
204
|
+
version: '0'
|
205
|
+
requirements: []
|
206
|
+
rubyforge_project:
|
207
|
+
rubygems_version: 2.4.8
|
208
|
+
signing_key:
|
209
|
+
specification_version: 4
|
210
|
+
summary: Validators for ActiveRecord and ActiveModel.
|
211
|
+
test_files:
|
212
|
+
- spec/app/validators/count_validator_spec.rb
|
213
|
+
- spec/internal/app/models/owner.rb
|
214
|
+
- spec/internal/app/models/pet.rb
|
215
|
+
- spec/internal/config/.gitignore
|
216
|
+
- spec/internal/db/schema.rb
|
217
|
+
- spec/internal/log/.gitignore
|
218
|
+
- spec/spec_helper.rb
|
219
|
+
has_rdoc:
|