157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
|
# File 'lib/citeproc/attributes.rb', line 157
def attr_field(field, default = nil, predicate = false)
method_id = field.to_s.downcase.gsub(/[-\s]+/, '_')
unless instance_methods.include?(method_id)
if default
define_method(method_id) do
read_attribute field
end
else
define_method(method_id) do
attributes[filter_key(field)] ||= default
end
end
end
writer_id = [method_id,'='].join
unless instance_methods.include?(writer_id)
define_method(writer_id) do |value|
write_attribute field, value
end
end
predicate_id = [method_id, '?'].join
if predicate && !instance_methods.include?(predicate_id)
define_method(predicate_id) do
attribute?(field)
end
has_predicate = ['has_', predicate_id].join
alias_method(has_predicate, predicate_id) unless instance_methods.include?(has_predicate)
end
end
|