almodovar 0.7.0 → 0.8.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,55 +1,61 @@
1
1
  module Almodovar
2
-
3
- class ResourcePresenter::Collection
4
-
5
- def initialize(resource_class, resources_args = [], options = {})
6
- @resource_class = resource_class
7
- @resources = resources_args.map { |arg| @resource_class.new(arg) }
2
+ class ResourcePresenter
3
+ class Collection
4
+
5
+ attr_reader :resource_class
8
6
 
9
- @total = options[:total_entries]
10
- @next = options[:next_link]
11
- @prev = options[:prev_link]
12
- end
13
-
14
- def to_xml(options = {})
15
- # Most of the following code is borrowed from ActiveSupport's Array#to_xml.
16
- # We cannot use Array#to_xml because we need to add a few custom tags for
17
- # pagination.
18
- require 'active_support/builder' unless defined?(Builder)
7
+ def initialize(resource_class, resources_args = [], options = {})
8
+ @resource_class = resource_class
9
+ @resources = resources_args.map { |arg| @resource_class.new(arg) }
10
+
11
+ @total = options[:total_entries]
12
+ @next = options[:next_link]
13
+ @prev = options[:prev_link]
14
+ end
15
+
16
+ def to_xml(options = {})
17
+ # Most of the following code is borrowed from ActiveSupport's Array#to_xml.
18
+ # We cannot use Array#to_xml because we need to add a few custom tags for
19
+ # pagination.
20
+ require 'active_support/builder' unless defined?(Builder)
19
21
 
20
- options = options.dup
21
- options[:indent] ||= 2
22
- options[:builder] ||= ::Builder::XmlMarkup.new(:indent => options[:indent])
22
+ options = options.dup
23
+ options[:indent] ||= 2
24
+ options[:builder] ||= ::Builder::XmlMarkup.new(:indent => options[:indent])
23
25
 
24
- xml = options[:builder]
26
+ xml = options[:builder]
25
27
 
26
- xml.instruct! unless options[:skip_instruct]
27
- xml.tag! resource_type.pluralize.dasherize, :type => 'array' do
28
- xml.tag!('total-entries', @total) if @total
29
- xml.link :rel => 'next', :href => @next if @next
30
- xml.link :rel => 'prev', :href => @prev if @prev
31
- @resources.each { |value| value.to_xml(options.merge(:root => resource_type.singularize, :skip_instruct => true)) }
28
+ xml.instruct! unless options[:skip_instruct]
29
+ xml.tag! resource_type.pluralize.dasherize, :type => 'array' do
30
+ xml.tag!('total-entries', @total) if @total
31
+ xml.link :rel => 'next', :href => @next if @next
32
+ xml.link :rel => 'prev', :href => @prev if @prev
33
+ @resources.each { |value| value.to_xml(options.merge(:root => resource_type.singularize, :skip_instruct => true)) }
34
+ end
32
35
  end
33
- end
34
-
35
- def as_json(options = {})
36
- ActiveSupport::OrderedHash.new.tap do |message|
37
- message[:total_entries] = @total if @total
38
- message[:next_link] = @next if @next
39
- message[:prev_link] = @prev if @prev
40
- message[:entries] = @resources.map { |resource| resource.as_json(options) }
36
+
37
+ def as_json(options = {})
38
+ ActiveSupport::OrderedHash.new.tap do |message|
39
+ message[:total_entries] = @total if @total
40
+ message[:next_link] = @next if @next
41
+ message[:prev_link] = @prev if @prev
42
+ message[:entries] = @resources.map { |resource| resource.as_json(options) }
43
+ end
44
+ end
45
+
46
+ def to_json(options = {})
47
+ require 'yajl'
48
+ Yajl::Encoder.encode(as_json(options), :pretty => true) + "\n"
49
+ end
50
+
51
+ def to_html(options = {})
52
+ HtmlSerializer.new(self, options).to_html
53
+ end
54
+
55
+ def resource_type
56
+ @resource_class.resource_type
41
57
  end
42
- end
43
-
44
- def to_json(options = {})
45
- require 'yajl'
46
- Yajl::Encoder.encode(as_json(options), :pretty => true) + "\n"
47
- end
48
-
49
- def resource_type
50
- @resource_class.resource_type
51
- end
52
58
 
53
- end
54
-
55
- end
59
+ end
60
+ end
61
+ end
@@ -0,0 +1,44 @@
1
+ %w(pygments.rb github-markdown).each do |lib|
2
+ begin
3
+ require lib.gsub('-', '/')
4
+ rescue LoadError => ex
5
+ raise ex, "In order to use the HtmlSerializer you need the gem `#{lib}` in your Gemfile"
6
+ end
7
+ end
8
+
9
+ module Almodovar
10
+ class ResourcePresenter
11
+ class HtmlSerializer < Serializer
12
+
13
+ TEMPLATE_PATH = File.join(File.dirname(__FILE__), 'template.html.erb')
14
+
15
+ def to_html
16
+ template = File.read(TEMPLATE_PATH)
17
+ ERB.new(template).result(binding)
18
+ end
19
+
20
+ def metadata
21
+ resource.resource_class.metadata
22
+ end
23
+
24
+ def beautify(representation, format)
25
+ body = Pygments.highlight(representation, :lexer => format)
26
+ body = body.gsub(/&quot;(http\S+)&quot;/) { url = $1; "&quot;<a href=\"#{url}\">#{url}</a>&quot;" }
27
+ body.html_safe
28
+ end
29
+
30
+ def metadata_text(text)
31
+ return if text.blank?
32
+
33
+ if indentation = text[/\n\s+/]
34
+ text = text.gsub(indentation, "\n")
35
+ end
36
+
37
+ text = text.strip
38
+ text = GitHub::Markdown.render text
39
+ text.html_safe
40
+ end
41
+
42
+ end
43
+ end
44
+ end
@@ -0,0 +1,31 @@
1
+ module Almodovar
2
+ class ResourcePresenter
3
+ class JsonSerializer < Serializer
4
+
5
+ def to_json
6
+ require 'yajl'
7
+ Yajl::Encoder.encode(as_json, :pretty => true) + "\n"
8
+ end
9
+
10
+ def as_json
11
+ ActiveSupport::OrderedHash[:resource_type, resource.resource_type].tap do |message|
12
+ message.merge! attributes_as_json
13
+ message.merge! links_as_json
14
+ end
15
+ end
16
+
17
+ private
18
+
19
+ def attributes_as_json
20
+ resource.attributes
21
+ end
22
+
23
+ def links_as_json
24
+ resource.all_links.inject(ActiveSupport::OrderedHash.new) do |message, link|
25
+ message.merge! link.as_json(options_for_link)
26
+ end
27
+ end
28
+
29
+ end
30
+ end
31
+ end
@@ -1,103 +1,103 @@
1
1
  module Almodovar
2
-
3
- class ResourcePresenter::Link
4
-
5
- attr_reader :rel, :href, :expand_resource, :expand_args
6
-
7
- def initialize(*args)
8
- @rel, @href, @expand_resource, @expand_args = args
9
- end
10
-
11
- def to_xml(options = {})
12
- XmlSerializer.new(self, options.merge(:skip_instruct => true)).to_xml
13
- end
14
-
15
- def as_json(options)
16
- JsonSerializer.new(self, options).as_json
17
- end
18
-
19
- def resource
20
- resource_collection? ? resource_collection : single_resource
21
- end
22
-
23
- def resource_collection?
24
- expand_args.is_a?(Array)
25
- end
26
-
27
- def resource_collection
28
- ResourcePresenter::Collection.new(expand_resource, expand_args)
29
- end
30
-
31
- def single_resource
32
- expand_resource.new(*[expand_args].compact)
33
- end
34
-
35
- def expand_resource?
36
- expand_resource.present?
37
- end
38
-
39
- class Serializer
2
+ class ResourcePresenter
3
+ class Link
40
4
 
41
- attr_reader :link, :options
5
+ attr_reader :rel, :href, :expand_resource, :expand_args
42
6
 
43
- def initialize(link, options)
44
- @link = link
45
- @options = options
7
+ def initialize(*args)
8
+ @rel, @href, @expand_resource, @expand_args = args
46
9
  end
47
10
 
48
- def expands?
49
- link.expand_resource? &&
50
- Array(options[:expand]).include?(link.rel) &&
51
- !Array(options[:dont_expand]).include?(link.href)
11
+ def to_xml(options = {})
12
+ XmlSerializer.new(self, options.merge(:skip_instruct => true)).to_xml
52
13
  end
53
14
 
54
- def dont_expand_link!
55
- (options[:dont_expand] ||= []) << link.href
15
+ def as_json(options)
16
+ JsonSerializer.new(self, options).as_json
56
17
  end
57
18
 
58
- end
59
-
60
- class XmlSerializer < Serializer
61
-
62
- def to_xml
63
- builder.link :rel => link.rel, :href => link.href, &expand_block
19
+ def resource
20
+ resource_collection? ? resource_collection : single_resource
64
21
  end
65
22
 
66
- private
67
-
68
- def builder
69
- options[:builder]
23
+ def resource_collection?
24
+ expand_args.is_a?(Array)
70
25
  end
71
26
 
72
- def expand_block
73
- Proc.new { expand_resource } if expands?
27
+ def resource_collection
28
+ ResourcePresenter::Collection.new(expand_resource, expand_args)
74
29
  end
75
-
76
- def expand_resource
77
- dont_expand_link!
78
- link.resource.to_xml(options)
30
+
31
+ def single_resource
32
+ expand_resource.new(*[expand_args].compact)
79
33
  end
80
34
 
81
- end
82
-
83
- class JsonSerializer < Serializer
35
+ def expand_resource?
36
+ expand_resource.present?
37
+ end
84
38
 
85
- def as_json
86
- ActiveSupport::OrderedHash.new.tap do |message|
87
- message["#{link.rel}_link"] = link.href
88
- message[link.rel] = expand_resource if expands?
39
+ class Serializer
40
+
41
+ attr_reader :link, :options
42
+
43
+ def initialize(link, options)
44
+ @link = link
45
+ @options = options
89
46
  end
47
+
48
+ def expands?
49
+ link.expand_resource? &&
50
+ Array(options[:expand]).include?(link.rel) &&
51
+ !Array(options[:dont_expand]).include?(link.href)
52
+ end
53
+
54
+ def dont_expand_link!
55
+ (options[:dont_expand] ||= []) << link.href
56
+ end
57
+
90
58
  end
91
59
 
92
- private
93
-
94
- def expand_resource
95
- dont_expand_link!
96
- link.resource.as_json(options)
60
+ class XmlSerializer < Serializer
61
+
62
+ def to_xml
63
+ builder.link :rel => link.rel, :href => link.href, &expand_block
64
+ end
65
+
66
+ private
67
+
68
+ def builder
69
+ options[:builder]
70
+ end
71
+
72
+ def expand_block
73
+ Proc.new { expand_resource } if expands?
74
+ end
75
+
76
+ def expand_resource
77
+ dont_expand_link!
78
+ link.resource.to_xml(options)
79
+ end
80
+
97
81
  end
82
+
83
+ class JsonSerializer < Serializer
84
+
85
+ def as_json
86
+ ActiveSupport::OrderedHash.new.tap do |message|
87
+ message["#{link.rel}_link"] = link.href
88
+ message[link.rel] = expand_resource if expands?
89
+ end
90
+ end
91
+
92
+ private
93
+
94
+ def expand_resource
95
+ dont_expand_link!
96
+ link.resource.as_json(options)
97
+ end
98
98
 
99
+ end
100
+
99
101
  end
100
-
101
102
  end
102
-
103
- end
103
+ end
@@ -0,0 +1,27 @@
1
+ module Almodovar
2
+ class ResourcePresenter
3
+ module Metadata
4
+
5
+ def inherited(base)
6
+ base.metadata[:name] = base.name.demodulize.titleize
7
+ end
8
+
9
+ def desc(description)
10
+ metadata[:desc] = description
11
+ end
12
+
13
+ def link(name, options)
14
+ metadata[:links][name] = options
15
+ end
16
+
17
+ def attribute(name, options)
18
+ metadata[:attributes][name] = options
19
+ end
20
+
21
+ def metadata
22
+ @metadata ||= Hash.new {|h,a| h[a] = ActiveSupport::OrderedHash.new}
23
+ end
24
+
25
+ end
26
+ end
27
+ end
@@ -0,0 +1,18 @@
1
+ module Almodovar
2
+ class ResourcePresenter
3
+ class Serializer
4
+
5
+ attr_reader :resource, :options
6
+
7
+ def initialize(resource, options = {})
8
+ @resource = resource
9
+ @options = options
10
+ end
11
+
12
+ def options_for_link
13
+ options.merge(:dont_expand => Array(options[:dont_expand]) << resource.url)
14
+ end
15
+
16
+ end
17
+ end
18
+ end
@@ -0,0 +1,130 @@
1
+ <!DOCTYPE html>
2
+ <html lang='en'>
3
+ <head>
4
+ <meta charset='utf-8'/>
5
+ <style type='text/css'>
6
+ .highlight .hll { background-color: #ffffcc }
7
+ .highlight { background: #f8f8f8; }
8
+ .highlight .c { color: #408080; font-style: italic } /* Comment */
9
+ .highlight .err { border: 1px solid #FF0000 } /* Error */
10
+ .highlight .k { color: #008000; font-weight: bold } /* Keyword */
11
+ .highlight .o { color: #666666 } /* Operator */
12
+ .highlight .cm { color: #408080; font-style: italic } /* Comment.Multiline */
13
+ .highlight .cp { color: #BC7A00 } /* Comment.Preproc */
14
+ .highlight .c1 { color: #408080; font-style: italic } /* Comment.Single */
15
+ .highlight .cs { color: #408080; font-style: italic } /* Comment.Special */
16
+ .highlight .gd { color: #A00000 } /* Generic.Deleted */
17
+ .highlight .ge { font-style: italic } /* Generic.Emph */
18
+ .highlight .gr { color: #FF0000 } /* Generic.Error */
19
+ .highlight .gh { color: #000080; font-weight: bold } /* Generic.Heading */
20
+ .highlight .gi { color: #00A000 } /* Generic.Inserted */
21
+ .highlight .go { color: #808080 } /* Generic.Output */
22
+ .highlight .gp { color: #000080; font-weight: bold } /* Generic.Prompt */
23
+ .highlight .gs { font-weight: bold } /* Generic.Strong */
24
+ .highlight .gu { color: #800080; font-weight: bold } /* Generic.Subheading */
25
+ .highlight .gt { color: #0040D0 } /* Generic.Traceback */
26
+ .highlight .kc { color: #008000; font-weight: bold } /* Keyword.Constant */
27
+ .highlight .kd { color: #008000; font-weight: bold } /* Keyword.Declaration */
28
+ .highlight .kn { color: #008000; font-weight: bold } /* Keyword.Namespace */
29
+ .highlight .kp { color: #008000 } /* Keyword.Pseudo */
30
+ .highlight .kr { color: #008000; font-weight: bold } /* Keyword.Reserved */
31
+ .highlight .kt { color: #B00040 } /* Keyword.Type */
32
+ .highlight .m { color: #666666 } /* Literal.Number */
33
+ .highlight .s { color: #BA2121 } /* Literal.String */
34
+ .highlight .na { color: #7D9029 } /* Name.Attribute */
35
+ .highlight .nb { color: #008000 } /* Name.Builtin */
36
+ .highlight .nc { color: #0000FF; font-weight: bold } /* Name.Class */
37
+ .highlight .no { color: #880000 } /* Name.Constant */
38
+ .highlight .nd { color: #AA22FF } /* Name.Decorator */
39
+ .highlight .ni { color: #999999; font-weight: bold } /* Name.Entity */
40
+ .highlight .ne { color: #D2413A; font-weight: bold } /* Name.Exception */
41
+ .highlight .nf { color: #0000FF } /* Name.Function */
42
+ .highlight .nl { color: #A0A000 } /* Name.Label */
43
+ .highlight .nn { color: #0000FF; font-weight: bold } /* Name.Namespace */
44
+ .highlight .nt { color: #008000; font-weight: bold } /* Name.Tag */
45
+ .highlight .nv { color: #19177C } /* Name.Variable */
46
+ .highlight .ow { color: #AA22FF; font-weight: bold } /* Operator.Word */
47
+ .highlight .w { color: #bbbbbb } /* Text.Whitespace */
48
+ .highlight .mf { color: #666666 } /* Literal.Number.Float */
49
+ .highlight .mh { color: #666666 } /* Literal.Number.Hex */
50
+ .highlight .mi { color: #666666 } /* Literal.Number.Integer */
51
+ .highlight .mo { color: #666666 } /* Literal.Number.Oct */
52
+ .highlight .sb { color: #BA2121 } /* Literal.String.Backtick */
53
+ .highlight .sc { color: #BA2121 } /* Literal.String.Char */
54
+ .highlight .sd { color: #BA2121; font-style: italic } /* Literal.String.Doc */
55
+ .highlight .s2 { color: #BA2121 } /* Literal.String.Double */
56
+ .highlight .se { color: #BB6622; font-weight: bold } /* Literal.String.Escape */
57
+ .highlight .sh { color: #BA2121 } /* Literal.String.Heredoc */
58
+ .highlight .si { color: #BB6688; font-weight: bold } /* Literal.String.Interpol */
59
+ .highlight .sx { color: #008000 } /* Literal.String.Other */
60
+ .highlight .sr { color: #BB6688 } /* Literal.String.Regex */
61
+ .highlight .s1 { color: #BA2121 } /* Literal.String.Single */
62
+ .highlight .ss { color: #19177C } /* Literal.String.Symbol */
63
+ .highlight .bp { color: #008000 } /* Name.Builtin.Pseudo */
64
+ .highlight .vc { color: #19177C } /* Name.Variable.Class */
65
+ .highlight .vg { color: #19177C } /* Name.Variable.Global */
66
+ .highlight .vi { color: #19177C } /* Name.Variable.Instance */
67
+ .highlight .il { color: #666666 } /* Literal.Number.Integer.Long */
68
+
69
+ body {
70
+ padding-top: 30px;
71
+ }
72
+ </style>
73
+ <link href="//netdna.bootstrapcdn.com/twitter-bootstrap/2.2.1/css/bootstrap-combined.min.css" rel="stylesheet">
74
+ </head>
75
+ <body>
76
+ <div class='container'>
77
+
78
+ <ul class="nav nav-tabs">
79
+ <li><a href="#xml" data-toggle="tab">XML</a> </li>
80
+ <li><a href="#json" data-toggle="tab">JSON</a> </li>
81
+ <li><a href="#help" data-toggle="tab">Reference</a> </li>
82
+ </ul>
83
+
84
+ <div class="tab-content">
85
+ <div class="tab-pane" id="xml">
86
+ <%= beautify resource.to_xml(options), :xml %>
87
+ </div>
88
+ <div class="tab-pane" id="json">
89
+ <p><em>JSON support is experimental and it's subject to change in the future</em></p>
90
+ <%= beautify resource.to_json(options), :json %>
91
+ </div>
92
+ <div class="tab-pane" id="help">
93
+ <h2><%= metadata[:name] %></h2>
94
+ <%= metadata_text metadata[:desc] %>
95
+ <% if metadata[:attributes].present? %>
96
+ <h3>Attributes</h3>
97
+ <dl>
98
+ <% metadata[:attributes].each do |name, options| %>
99
+ <dt><%= name %></dt>
100
+ <dd><%= metadata_text options[:desc] %></dd>
101
+ <% end %>
102
+ </dl>
103
+ <% end %>
104
+ <% if metadata[:links].present? %>
105
+ <h3>Links</h3>
106
+ <dl>
107
+ <% metadata[:links].each do |name, options| %>
108
+ <dt><%= name %></dt>
109
+ <dd><%= metadata_text options[:desc] %></dd>
110
+ <% end %>
111
+ </dl>
112
+ <% end %>
113
+ </div>
114
+ </div>
115
+
116
+ <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js"></script>
117
+ <script src="//netdna.bootstrapcdn.com/twitter-bootstrap/2.2.1/js/bootstrap.min.js"></script>
118
+ <script>
119
+ $(function () {
120
+ var currentTab = localStorage.currentTab || '#xml'
121
+ $('ul.nav a[href="' + currentTab + '"]').tab('show')
122
+
123
+ $('a[data-toggle="tab"]').on('shown', function (e) {
124
+ localStorage.currentTab = $(e.target).attr('href')
125
+ })
126
+ })
127
+ </script>
128
+ </div>
129
+ </body>
130
+ </html>
@@ -0,0 +1,25 @@
1
+ module Almodovar
2
+ class ResourcePresenter
3
+ class XmlSerializer < Serializer
4
+
5
+ def to_xml
6
+ attributes_to_xml do |builder|
7
+ links_to_xml builder
8
+ end
9
+ end
10
+
11
+ private
12
+
13
+ def attributes_to_xml(&block)
14
+ resource.attributes.to_xml(options.merge(:root => resource.resource_type), &block)
15
+ end
16
+
17
+ def links_to_xml(builder)
18
+ resource.all_links.each do |link|
19
+ link.to_xml(options_for_link.merge(:builder => builder))
20
+ end
21
+ end
22
+
23
+ end
24
+ end
25
+ end
@@ -2,6 +2,14 @@ module Almodovar
2
2
 
3
3
  class ResourcePresenter
4
4
 
5
+ autoload :Serializer, 'almodovar/resource_presenter/serializer'
6
+ autoload :XmlSerializer, 'almodovar/resource_presenter/xml_serializer'
7
+ autoload :JsonSerializer, 'almodovar/resource_presenter/json_serializer'
8
+ autoload :HtmlSerializer, 'almodovar/resource_presenter/html_serializer'
9
+ autoload :Metadata, 'almodovar/resource_presenter/metadata'
10
+
11
+ extend Metadata
12
+
5
13
  attr_accessor :url
6
14
 
7
15
  def attributes
@@ -16,8 +24,12 @@ module Almodovar
16
24
  name.gsub(/Resource$/, '').underscore
17
25
  end
18
26
 
27
+ def resource_class
28
+ self.class
29
+ end
30
+
19
31
  def resource_type
20
- self.class.resource_type
32
+ resource_class.resource_type
21
33
  end
22
34
 
23
35
  def to_xml(options = {})
@@ -31,6 +43,10 @@ module Almodovar
31
43
  def as_json(options = {})
32
44
  JsonSerializer.new(self, options).as_json
33
45
  end
46
+
47
+ def to_html(options = {})
48
+ HtmlSerializer.new(self, options).to_html
49
+ end
34
50
 
35
51
  def all_links
36
52
  ([link_to_self] + links).compact
@@ -39,71 +55,6 @@ module Almodovar
39
55
  def link_to_self
40
56
  Link.new(:self, @url) if @url
41
57
  end
42
-
43
- class Serializer
44
-
45
- attr_reader :resource, :options
46
-
47
- def initialize(resource, options)
48
- @resource = resource
49
- @options = options
50
- end
51
-
52
- def options_for_link
53
- options.merge(:dont_expand => Array(options[:dont_expand]) << resource.url)
54
- end
55
-
56
- end
57
-
58
- class XmlSerializer < Serializer
59
-
60
- def to_xml
61
- attributes_to_xml do |builder|
62
- links_to_xml builder
63
- end
64
- end
65
-
66
- private
67
-
68
- def attributes_to_xml(&block)
69
- resource.attributes.to_xml(options.merge(:root => resource.resource_type), &block)
70
- end
71
-
72
- def links_to_xml(builder)
73
- resource.all_links.each do |link|
74
- link.to_xml(options_for_link.merge(:builder => builder))
75
- end
76
- end
77
-
78
- end
79
-
80
- class JsonSerializer < Serializer
81
-
82
- def to_json
83
- require 'yajl'
84
- Yajl::Encoder.encode(as_json, :pretty => true) + "\n"
85
- end
86
-
87
- def as_json
88
- ActiveSupport::OrderedHash[:resource_type, resource.resource_type].tap do |message|
89
- message.merge! attributes_as_json
90
- message.merge! links_as_json
91
- end
92
- end
93
-
94
- private
95
-
96
- def attributes_as_json
97
- resource.attributes
98
- end
99
-
100
- def links_as_json
101
- resource.all_links.inject(ActiveSupport::OrderedHash.new) do |message, link|
102
- message.merge! link.as_json(options_for_link)
103
- end
104
- end
105
-
106
- end
107
58
 
108
59
  end
109
60
 
@@ -1,3 +1,3 @@
1
1
  module Almodovar
2
- VERSION = '0.7.0'
2
+ VERSION = '0.8.0'
3
3
  end
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: almodovar
3
3
  version: !ruby/object:Gem::Version
4
- hash: 3
4
+ hash: 63
5
5
  prerelease:
6
6
  segments:
7
7
  - 0
8
- - 7
8
+ - 8
9
9
  - 0
10
- version: 0.7.0
10
+ version: 0.8.0
11
11
  platform: ruby
12
12
  authors:
13
13
  - BeBanjo S.L.
@@ -15,7 +15,7 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2012-08-10 00:00:00 Z
18
+ date: 2013-03-01 00:00:00 Z
19
19
  dependencies:
20
20
  - !ruby/object:Gem::Dependency
21
21
  name: patron
@@ -117,7 +117,13 @@ files:
117
117
  - lib/almodovar/resource.rb
118
118
  - lib/almodovar/resource_collection.rb
119
119
  - lib/almodovar/resource_presenter/collection.rb
120
+ - lib/almodovar/resource_presenter/html_serializer.rb
121
+ - lib/almodovar/resource_presenter/json_serializer.rb
120
122
  - lib/almodovar/resource_presenter/link.rb
123
+ - lib/almodovar/resource_presenter/metadata.rb
124
+ - lib/almodovar/resource_presenter/serializer.rb
125
+ - lib/almodovar/resource_presenter/template.html.erb
126
+ - lib/almodovar/resource_presenter/xml_serializer.rb
121
127
  - lib/almodovar/resource_presenter.rb
122
128
  - lib/almodovar/single_resource.rb
123
129
  - lib/almodovar/to_xml.rb
@@ -153,7 +159,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
153
159
  requirements: []
154
160
 
155
161
  rubyforge_project:
156
- rubygems_version: 1.8.17
162
+ rubygems_version: 1.8.15
157
163
  signing_key:
158
164
  specification_version: 3
159
165
  summary: BeBanjo API client