rss-dcterms 0.0.3 → 0.0.4

Sign up to get free protection for your applications and to get access to all the features.
File without changes
@@ -1,8 +1,10 @@
1
- # RSS::DCTERMS
1
+ RSS::DCTERMS
2
+ ============
2
3
 
3
4
  Enables standard bundled RSS library parse and make feeds including DCMI Metadata Terms.
4
5
 
5
- ## Installation
6
+ Installation
7
+ ------------
6
8
 
7
9
  Add this line to your application's Gemfile:
8
10
 
@@ -20,14 +22,32 @@ Or
20
22
 
21
23
  $ ruby setup.rb
22
24
 
23
- ## Usage
25
+ Usage
26
+ -----
27
+
28
+ ### Parsing Feeds
24
29
 
25
30
  require 'rss/dcterms'
26
31
 
27
32
  feed = RSS::Parser.parse(feed_uri)
28
33
  publisher = feed.dcterms_publisher
29
34
 
30
- ## Contributing
35
+ ### Making Feeds
36
+
37
+ require 'rss/maker/dcterms'
38
+
39
+ feed = RSS::Maker.make('atom') {|maker|
40
+ maker.channel.dcterms_issued = Time.now
41
+ # ...
42
+ }
43
+
44
+ Todo
45
+ ----
46
+
47
+ * Turn off DC(http://purl.org/dc/elements/1.1/) elements when making feeds
48
+
49
+ Contributing
50
+ ------------
31
51
 
32
52
  1. Fork it
33
53
  2. Create your feature branch (`git checkout -b my-new-feature`)
data/Rakefile CHANGED
@@ -1,2 +1,13 @@
1
1
  #!/usr/bin/env rake
2
2
  require "bundler/gem_tasks"
3
+ require 'rake/clean'
4
+ require 'rake/testtask'
5
+ require 'yard'
6
+
7
+ task :default => :test
8
+
9
+ Rake::TestTask.new do |t|
10
+ t.ruby_opts << '-I test/rss'
11
+ t.test_files = FileList['test/**/test_*.rb']
12
+ end
13
+ YARD::Rake::YardocTask.new
@@ -16,3 +16,6 @@ module RSS
16
16
  end
17
17
 
18
18
  require 'rss/dcterms/property'
19
+ require 'rss/dcterms/1.0'
20
+ require 'rss/dcterms/2.0'
21
+ require 'rss/dcterms/atom'
@@ -9,7 +9,7 @@ module RSS
9
9
  plural = plural_name || "#{name}s"
10
10
  full_name = "#{PREFIX}_#{name}"
11
11
  full_plural_name = "#{PREFIX}_#{plural}"
12
- klass_name = Utils.to_class_name(name)
12
+ klass_name = "DCTERMS#{Utils.to_class_name(name)}"
13
13
  klass.install_must_call_validator(PREFIX, URI)
14
14
  klass.install_have_children_element(name, URI, "*",
15
15
  full_name, full_plural_name)
@@ -56,64 +56,64 @@ module RSS
56
56
 
57
57
  TEXT_ELEMENTS = {
58
58
  "contributor" => nil,
59
- "creator" => nil,
59
+ "creator" => nil,
60
60
 
61
61
  "coverage" => nil,
62
- "spatial" => nil,
62
+ "spatial" => nil,
63
63
  "temporal" => nil,
64
64
 
65
- "description" => nil,
66
- "abstract" => nil,
65
+ "description" => nil,
66
+ "abstract" => nil,
67
67
  "tableOfContents" => "tableOfContents_list",
68
68
 
69
69
  "format" => nil,
70
70
  "extent" => nil,
71
71
  "medium" => nil,
72
72
 
73
- "identifier" => nil,
73
+ "identifier" => nil,
74
74
  "bibliographicCitation" => nil,
75
75
 
76
76
  "language" => nil,
77
77
 
78
78
  "publisher" => nil,
79
79
 
80
- "relation" => nil,
81
- "source" => nil,
82
- "conformsTo" => nil,
83
- "hasFormat" => nil,
84
- "hasPart" => nil,
85
- "hasVersion" => nil,
86
- "isFormatOf" => nil,
87
- "isPartOf" => nil,
80
+ "relation" => nil,
81
+ "source" => nil,
82
+ "conformsTo" => nil,
83
+ "hasFormat" => nil,
84
+ "hasPart" => nil,
85
+ "hasVersion" => nil,
86
+ "isFormatOf" => nil,
87
+ "isPartOf" => nil,
88
88
  "isReferencedBy" => nil,
89
- "isReplacedBy" => nil,
90
- "isRequiredBy" => nil,
91
- "isVersionOf" => nil,
92
- "references" => "references_list",
93
- "replaces" => "replaces_list",
94
- "requires" => "requires_list",
95
-
96
- "rights" => "rights_list",
89
+ "isReplacedBy" => nil,
90
+ "isRequiredBy" => nil,
91
+ "isVersionOf" => nil,
92
+ "references" => "references_list",
93
+ "replaces" => "replaces_list",
94
+ "requires" => "requires_list",
95
+
96
+ "rights" => "rights_list",
97
97
  "accessRights" => "accessRights_list",
98
- "license" => nil,
98
+ "license" => nil,
99
99
 
100
100
  "subject" => nil,
101
101
 
102
- "title" => nil,
102
+ "title" => nil,
103
103
  "alternative" => nil,
104
104
 
105
105
  "type" => nil,
106
106
 
107
- "audience" => nil,
107
+ "audience" => nil,
108
108
  "educationLevel" => nil,
109
- "mediator" => nil,
109
+ "mediator" => nil,
110
110
 
111
- "accrualMethod" => nil,
112
- "accrualPeriodicity" => nil,
113
- "accrualPolicy" => nil,
111
+ "accrualMethod" => nil,
112
+ "accrualPeriodicity" => nil,
113
+ "accrualPolicy" => nil,
114
114
  "instructionalMethod" => nil,
115
- "provenance" => nil,
116
- "rightsHolder" => nil
115
+ "provenance" => nil,
116
+ "rightsHolder" => nil
117
117
  }
118
118
 
119
119
  DATE_ELEMENTS = {
@@ -137,7 +137,7 @@ module RSS
137
137
 
138
138
  ELEMENTS.each do |name, plural_name|
139
139
  module_eval(<<-EOC, *get_file_and_line_from_caller(0))
140
- class #{Utils.to_class_name(name)} < Element
140
+ class DCTERMS#{Utils.to_class_name(name)} < Element
141
141
  include RSS10
142
142
 
143
143
  content_setup
@@ -184,7 +184,7 @@ module RSS
184
184
  DATE_ELEMENTS.each do |name, type|
185
185
  tag_name = "#{PREFIX}:#{name}"
186
186
  module_eval(<<-EOC, *get_file_and_line_from_caller(0))
187
- class #{Utils.to_class_name(name)} < Element
187
+ class DCTERMS#{Utils.to_class_name(name)} < Element
188
188
  remove_method(:content=)
189
189
  remove_method(:value=)
190
190
 
@@ -204,7 +204,3 @@ module RSS
204
204
  DCTERMS::PropertyModel::ELEMENTS.collect! {|name| "#{PREFIX}_#{name}"}
205
205
  end
206
206
  end
207
-
208
- require 'rss/dcterms/property/1.0'
209
- require 'rss/dcterms/property/2.0'
210
- require 'rss/dcterms/property/atom'
@@ -1,5 +1,5 @@
1
1
  module RSS
2
2
  module DCTERMS
3
- VERSION = "0.0.3"
3
+ VERSION = "0.0.4"
4
4
  end
5
5
  end
@@ -0,0 +1,120 @@
1
+ require 'rss/dcterms'
2
+ require 'rss/maker'
3
+
4
+ module RSS
5
+ module Maker
6
+ module DCTERMS
7
+ module PropertyModel
8
+ class << self
9
+ def append_features(klass)
10
+ super
11
+
12
+ ::RSS::DCTERMS::PropertyModel::ELEMENT_NAME_INFOS.each do |name, plural_name|
13
+ plural_name ||= "#{name}s"
14
+ full_name = "#{RSS::DCTERMS::PREFIX}_#{name}"
15
+ full_plural_name = "#{RSS::DCTERMS::PREFIX}_#{plural_name}"
16
+ plural_klass_name = "DCTERMS#{Utils.to_class_name(plural_name)}"
17
+ klass.def_classed_elements full_name, 'value', plural_klass_name,
18
+ full_plural_name, name
19
+ klass.module_eval(<<-EOC)
20
+ def new_#{full_name}(value=nil)
21
+ _#{full_name} = #{full_plural_name}.new_#{name}
22
+ _#{full_name}.value = value
23
+ if block_given?
24
+ yield _#{full_name}
25
+ else
26
+ _#{full_name}
27
+ end
28
+ end
29
+ EOC
30
+ end
31
+ end
32
+
33
+ def install_dcterms_core(klass)
34
+ ::RSS::DCTERMS::PropertyModel::ELEMENT_NAME_INFOS.each do |name, plural_name|
35
+ plural_name ||= "#{name}s"
36
+ klass_name = Utils.to_class_name(name)
37
+ full_klass_name = "DCTERMS#{klass_name}"
38
+ plural_klass_name = "DCTERMS#{Utils.to_class_name(plural_name)}"
39
+ klass.module_eval(<<-EOC, __FILE__, __LINE__ + 1)
40
+ class #{plural_klass_name} < #{plural_klass_name}Base
41
+ class #{full_klass_name} < #{full_klass_name}Base
42
+ end
43
+ #{klass_name} = #{full_klass_name}
44
+ end
45
+ EOC
46
+ end
47
+ end
48
+ end
49
+
50
+ ::RSS::DCTERMS::PropertyModel::ELEMENT_NAME_INFOS.each do |name, plural_name|
51
+ plural_name ||= "#{name}s"
52
+ full_name = "#{RSS::DCTERMS::PREFIX}_#{name}"
53
+ full_plural_name = "#{RSS::DCTERMS::PREFIX}_#{plural_name}"
54
+ klass_name = Utils.to_class_name(name)
55
+ full_klass_name = "DCTERMS#{klass_name}"
56
+ plural_klass_name = "DCTERMS#{Utils.to_class_name(plural_name)}"
57
+ module_eval(<<-EOC, __FILE__, __LINE__ + 1)
58
+ class #{plural_klass_name}Base < Base
59
+ def_array_element #{name.dump}, #{full_plural_name.dump},
60
+ #{full_klass_name.dump}
61
+
62
+ class #{full_klass_name}Base < Base
63
+ attr_accessor :value
64
+ add_need_initialize_variable 'value'
65
+ alias_method :content, :value
66
+ alias_method :content=, :value=
67
+
68
+ def have_required_values?
69
+ @value
70
+ end
71
+
72
+ def to_feed(feed, current)
73
+ if value and current.respond_to? :#{full_name}
74
+ new_item = current.class::#{full_klass_name}.new(value)
75
+ current.#{full_plural_name} << new_item
76
+ end
77
+ end
78
+ end
79
+ #{klass_name}Base = #{full_klass_name}Base
80
+ end
81
+ EOC
82
+ end
83
+ end
84
+ end
85
+
86
+ class ChannelBase
87
+ include DCTERMS::PropertyModel
88
+ end
89
+
90
+ class ImageBase; include DCTERMS::PropertyModel; end
91
+ class ItemsBase
92
+ class ItemBase
93
+ include DCTERMS::PropertyModel
94
+ end
95
+ end
96
+ class TextinputBase; include DCTERMS::PropertyModel; end
97
+
98
+ makers.each do |maker|
99
+ maker.module_eval(<<-EOC, __FILE__, __LINE__ + 1)
100
+ class Channel
101
+ DCTERMS::PropertyModel.install_dcterms_core self
102
+ end
103
+
104
+ class Image
105
+ DCTERMS::PropertyModel.install_dcterms_core self
106
+ end
107
+
108
+ class Items
109
+ class Item
110
+ DCTERMS::PropertyModel.install_dcterms_core self
111
+ end
112
+ end
113
+
114
+ class Textinput
115
+ DCTERMS::PropertyModel.install_dcterms_core self
116
+ end
117
+ EOC
118
+ end
119
+ end
120
+ end
@@ -6,7 +6,7 @@ Gem::Specification.new do |gem|
6
6
  gem.email = ["KitaitiMakoto@gmail.com"]
7
7
  gem.description = %q{Enable standard bundled RSS library parse and make feeds including DCMI(Dublin Core Metadata Initiative) Metadata Terms}
8
8
  gem.summary = %q{DCTERMS support for standard bundled RSS library}
9
- gem.homepage = "https://gitorious.org/rss/dcterms"
9
+ gem.homepage = "http://rss-ext.rubyforge.org/"
10
10
 
11
11
  gem.files = `git ls-files`.split($\)
12
12
  gem.executables = gem.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
@@ -19,4 +19,5 @@ Gem::Specification.new do |gem|
19
19
  gem.add_development_dependency 'pry'
20
20
  gem.add_development_dependency 'pry-doc'
21
21
  gem.add_development_dependency 'yard'
22
+ gem.add_development_dependency 'redcarpet'
22
23
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rss-dcterms
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.3
4
+ version: 0.0.4
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,11 +9,11 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-04-06 00:00:00.000000000Z
12
+ date: 2012-10-11 00:00:00.000000000Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: test-unit
16
- requirement: &21044360 !ruby/object:Gem::Requirement
16
+ requirement: &19082920 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ! '>='
@@ -21,10 +21,10 @@ dependencies:
21
21
  version: '0'
22
22
  type: :development
23
23
  prerelease: false
24
- version_requirements: *21044360
24
+ version_requirements: *19082920
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: pry
27
- requirement: &21043940 !ruby/object:Gem::Requirement
27
+ requirement: &19080500 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ! '>='
@@ -32,10 +32,10 @@ dependencies:
32
32
  version: '0'
33
33
  type: :development
34
34
  prerelease: false
35
- version_requirements: *21043940
35
+ version_requirements: *19080500
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: pry-doc
38
- requirement: &21043460 !ruby/object:Gem::Requirement
38
+ requirement: &19077620 !ruby/object:Gem::Requirement
39
39
  none: false
40
40
  requirements:
41
41
  - - ! '>='
@@ -43,10 +43,10 @@ dependencies:
43
43
  version: '0'
44
44
  type: :development
45
45
  prerelease: false
46
- version_requirements: *21043460
46
+ version_requirements: *19077620
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: yard
49
- requirement: &21043040 !ruby/object:Gem::Requirement
49
+ requirement: &19075780 !ruby/object:Gem::Requirement
50
50
  none: false
51
51
  requirements:
52
52
  - - ! '>='
@@ -54,7 +54,18 @@ dependencies:
54
54
  version: '0'
55
55
  type: :development
56
56
  prerelease: false
57
- version_requirements: *21043040
57
+ version_requirements: *19075780
58
+ - !ruby/object:Gem::Dependency
59
+ name: redcarpet
60
+ requirement: &19088300 !ruby/object:Gem::Requirement
61
+ none: false
62
+ requirements:
63
+ - - ! '>='
64
+ - !ruby/object:Gem::Version
65
+ version: '0'
66
+ type: :development
67
+ prerelease: false
68
+ version_requirements: *19088300
58
69
  description: Enable standard bundled RSS library parse and make feeds including DCMI(Dublin
59
70
  Core Metadata Initiative) Metadata Terms
60
71
  email:
@@ -63,20 +74,22 @@ executables: []
63
74
  extensions: []
64
75
  extra_rdoc_files: []
65
76
  files:
77
+ - .gemtest
66
78
  - .gitignore
67
79
  - Gemfile
68
80
  - LICENSE
69
- - README.md
81
+ - README.markdown
70
82
  - Rakefile
71
83
  - lib/rss/dcterms.rb
84
+ - lib/rss/dcterms/1.0.rb
85
+ - lib/rss/dcterms/2.0.rb
86
+ - lib/rss/dcterms/atom.rb
72
87
  - lib/rss/dcterms/property.rb
73
- - lib/rss/dcterms/property/1.0.rb
74
- - lib/rss/dcterms/property/2.0.rb
75
- - lib/rss/dcterms/property/atom.rb
76
88
  - lib/rss/dcterms/version.rb
89
+ - lib/rss/maker/dcterms.rb
77
90
  - rss-dcterms.gemspec
78
91
  - setup.rb
79
- homepage: https://gitorious.org/rss/dcterms
92
+ homepage: http://rss-ext.rubyforge.org/
80
93
  licenses: []
81
94
  post_install_message:
82
95
  rdoc_options: []
@@ -90,7 +103,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
90
103
  version: '0'
91
104
  segments:
92
105
  - 0
93
- hash: 2428754068467152083
106
+ hash: 1661997683346475596
94
107
  required_rubygems_version: !ruby/object:Gem::Requirement
95
108
  none: false
96
109
  requirements:
@@ -99,7 +112,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
99
112
  version: '0'
100
113
  segments:
101
114
  - 0
102
- hash: 2428754068467152083
115
+ hash: 1661997683346475596
103
116
  requirements: []
104
117
  rubyforge_project:
105
118
  rubygems_version: 1.8.8