7: def self.append_features(klass)
8: super
9:
10: ::RSS::DublinCoreModel::ELEMENT_NAME_INFOS.each do |name, plural_name|
11: plural_name ||= "#{name}s"
12: full_name = "#{RSS::DC_PREFIX}_#{name}"
13: full_plural_name = "#{RSS::DC_PREFIX}_#{plural_name}"
14: klass_name = Utils.to_class_name(name)
15: plural_klass_name = "DublinCore#{Utils.to_class_name(plural_name)}"
16: full_plural_klass_name = "self.class::#{plural_klass_name}"
17: full_klass_name = "#{full_plural_klass_name}::#{klass_name}"
18: klass.def_classed_elements(full_name, "value", plural_klass_name,
19: full_plural_name, name)
20: klass.module_eval("def new_\#{full_name}(value=nil)\n_\#{full_name} = \#{full_plural_name}.new_\#{name}\n_\#{full_name}.value = value\nif block_given?\nyield _\#{full_name}\nelse\n_\#{full_name}\nend\nend\n", __FILE__, __LINE__ + 1)
21: end
22:
23: klass.module_eval("# For backward compatibility\nalias \#{DC_PREFIX}_rightses \#{DC_PREFIX}_rights_list\n", __FILE__, __LINE__ + 1)
24: end