almodovar 0.7.0 → 0.8.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.
@@ -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