tumblargh 0.1.0 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -18,7 +18,6 @@ module Tumblargh
18
18
 
19
19
  end
20
20
 
21
-
22
21
  attr_reader :node
23
22
  attr_accessor :context
24
23
 
@@ -0,0 +1,276 @@
1
+ module Tumblargh
2
+ module Renderer
3
+ module Blocks
4
+
5
+ require 'tumblargh/renderer/blocks/base'
6
+
7
+ class Description < Base
8
+ def should_render?
9
+ !description.blank?
10
+ end
11
+ end
12
+
13
+ class NumberedPost < Base
14
+ attr_reader :num
15
+
16
+ def initialize(node, context, *args)
17
+ @num = args[0]
18
+ super(node, context)
19
+ end
20
+
21
+ def should_render?
22
+ num == context.posts.index(context_post) + 1
23
+ end
24
+ end
25
+
26
+ # Common post blocks
27
+ class Title < Base
28
+ def should_render?
29
+ !(title.nil? || title.blank?)
30
+ end
31
+ end
32
+
33
+ class Caption < Base
34
+ def should_render?
35
+ !(caption.nil? || caption.blank?)
36
+ end
37
+ end
38
+
39
+ # Base post type
40
+ class Post < Base
41
+ def should_render?
42
+ self.class.name.demodulize.downcase == context.type
43
+ end
44
+ end
45
+
46
+ # Source block for Quote posts
47
+ class Source < Base
48
+ def should_render?
49
+ !source.blank?
50
+ end
51
+
52
+ def source
53
+ context.source
54
+ end
55
+ end
56
+
57
+ class Text < Post
58
+ end
59
+
60
+ class Photo < Post
61
+ def should_render?
62
+ context_post.type == 'photo' && context_post.photos.size == 1
63
+ end
64
+
65
+ def photo_alt
66
+ strip_html(context.caption)
67
+ end
68
+ end
69
+
70
+
71
+
72
+ class Video < Photo
73
+ end
74
+
75
+
76
+
77
+ class Quote < Post
78
+ def quote
79
+ context.text
80
+ end
81
+ end
82
+
83
+ class Chat < Post
84
+ end
85
+
86
+ class Link < Post
87
+ end
88
+
89
+
90
+ # Meta-block for Appearance booleans, like {block:IfSomething}
91
+ class Boolean < Base
92
+ attr_reader :variable
93
+
94
+ def initialize(node, context, *args)
95
+ @variable = args[0]
96
+ super(node, context)
97
+ end
98
+
99
+ def should_render?
100
+ context.boolean(variable.downcase)
101
+ end
102
+ end
103
+
104
+ class InverseBoolean < Boolean
105
+ def should_render?
106
+ ! super
107
+ end
108
+ end
109
+
110
+
111
+ # Rendered on permalink pages. (Useful for displaying the current post's
112
+ # title in the page title)
113
+ class PostTitle < Base
114
+ def should_render?
115
+ false
116
+ end
117
+
118
+ def post_title
119
+ # TODO: Implementation
120
+ end
121
+ end
122
+
123
+ # Identical to {PostTitle}, but will automatically generate a summary
124
+ # if a title doesn't exist.
125
+ class PostSummary < PostTitle
126
+ def post_summary
127
+ # TODO: Implementation
128
+ end
129
+ end
130
+
131
+
132
+
133
+ class ContentSource < Base
134
+ def should_render?
135
+ !source_title.nil?
136
+ end
137
+
138
+ contextual_tag :source_url
139
+ contextual_tag :source_title
140
+
141
+ # TODO: Impl.
142
+ def black_logo_url
143
+ end
144
+
145
+ def logo_width
146
+ end
147
+
148
+ def logo_height
149
+ end
150
+
151
+ end
152
+
153
+ class SourceLogo < Base
154
+ # TODO: Impl.
155
+ end
156
+
157
+ class NoSourceLogo < SourceLogo
158
+ def should_render?
159
+ ! super
160
+ end
161
+ end
162
+
163
+ class HasTags < Base
164
+ def should_render?
165
+ !(tags.nil? || tags.blank?)
166
+ end
167
+ end
168
+
169
+
170
+ # Rendered on index (post) pages.
171
+ class IndexPage < Base
172
+ def should_render?
173
+ ! context.permalink?
174
+ end
175
+ end
176
+
177
+ # Rendered on post permalink pages.
178
+ class PermalinkPage < Base
179
+ def should_render?
180
+ context.permalink?
181
+ end
182
+ end
183
+
184
+ class SearchPage < Base
185
+ def should_render?
186
+ false
187
+ end
188
+ end
189
+
190
+ class NoSearchResults < Base
191
+ def should_render?
192
+ false
193
+ end
194
+ end
195
+
196
+ class TagPage < Base
197
+ def should_render?
198
+ false
199
+ end
200
+ end
201
+
202
+ # Rendered if you have defined any custom pages.
203
+ class HasPages < Base
204
+ # TODO: Implementation
205
+
206
+ def should_render?
207
+ false
208
+ end
209
+ end
210
+
211
+ # Rendered for each custom page.
212
+ class Pages < Base
213
+ # TODO: Implementation
214
+
215
+ def should_render?
216
+ false
217
+ end
218
+
219
+ # custom page url
220
+ def url
221
+ end
222
+
223
+ # custom page name/label
224
+ def label
225
+ end
226
+
227
+ end
228
+
229
+ # Rendered if you have Twitter integration enabled.
230
+ class Twitter < Base
231
+ # TODO: Implementation
232
+
233
+ def should_render?
234
+ false
235
+ end
236
+
237
+ def twitter_username
238
+ end
239
+
240
+ end
241
+
242
+
243
+ # {block:Likes} {/block:Likes} Rendered if you are sharing your likes.
244
+ # {Likes} Standard HTML output of your likes.
245
+ # {Likes limit="5"} Standard HTML output of your last 5 likes.
246
+ # Maximum: 10
247
+ # {Likes width="200"} Standard HTML output of your likes with Audio and Video players scaled to 200-pixels wide.
248
+ # Scale images with CSS max-width or similar.
249
+ # {Likes summarize="100"} Standard HTML output of your likes with text summarize to 100-characters.
250
+ # Maximum: 250
251
+ class Likes < Base
252
+ # TODO: Implementation
253
+
254
+ def should_render?
255
+ false
256
+ end
257
+
258
+ def likes
259
+ end
260
+
261
+ end
262
+
263
+ require 'tumblargh/renderer/blocks/answer'
264
+ require 'tumblargh/renderer/blocks/audio'
265
+ require 'tumblargh/renderer/blocks/chat'
266
+ require 'tumblargh/renderer/blocks/dates'
267
+ require 'tumblargh/renderer/blocks/navigation'
268
+ require 'tumblargh/renderer/blocks/notes'
269
+ require 'tumblargh/renderer/blocks/photoset'
270
+ require 'tumblargh/renderer/blocks/posts'
271
+ require 'tumblargh/renderer/blocks/reblogs'
272
+ require 'tumblargh/renderer/blocks/tags'
273
+
274
+ end
275
+ end
276
+ end
@@ -23,7 +23,7 @@ module Tumblargh
23
23
  end
24
24
 
25
25
  def audio_player_black
26
- audio_player_black(:black)
26
+ audio_player(:black)
27
27
  end
28
28
 
29
29
  # def raw_audio_url
@@ -65,6 +65,12 @@ module Tumblargh
65
65
  contextual_tag :track_name
66
66
  end
67
67
 
68
+ class AudioEmbed < Base
69
+ end
70
+
71
+ class AudioPlayer < Base
72
+ end
73
+
68
74
  end
69
75
  end
70
76
  end
@@ -6,13 +6,14 @@ module Tumblargh
6
6
  class << self
7
7
  attr_accessor :should_render_if
8
8
  alias_method :should_render_unless_blank, :should_render_if=
9
+ alias_method :should_render_unless_empty, :should_render_if=
9
10
  end
10
11
 
11
12
 
12
13
  def should_render?
13
14
  if defined?(@should_render_if)
14
15
  val = send(@should_render_if)
15
- return !(val || val.nil? || val.blank?)
16
+ return !(val || val.nil? || (val.respond_to?(:blank?) ? val.blank? : val.empty?))
16
17
  end
17
18
 
18
19
  true
@@ -0,0 +1,44 @@
1
+ module Tumblargh
2
+ module Renderer
3
+ module Blocks
4
+
5
+ class Lines < Base
6
+
7
+ contextual_tag :label
8
+ contextual_tag :name
9
+ contextual_tag :line, :phrase
10
+
11
+ # "odd" or "even" for each line of this post.
12
+ # TODO Implementation
13
+ def alt
14
+ end
15
+
16
+
17
+ # A unique identifying integer representing the user of the current line of this post.
18
+ # TODO Implementation
19
+ def user_number
20
+ end
21
+
22
+ def render
23
+ if context.is_a? Resource::Dialogue
24
+ super
25
+ else
26
+ context.dialogue.map do |l|
27
+ l.context = self
28
+ self.class.new(node, l).render
29
+ end.flatten.join('')
30
+ end
31
+ end
32
+
33
+ end
34
+
35
+ class Label < Base
36
+
37
+ should_render_unless_blank :label
38
+
39
+ end
40
+
41
+ end
42
+ end
43
+ end
44
+
@@ -0,0 +1,27 @@
1
+ module Tumblargh
2
+ module Renderer
3
+ module Blocks
4
+
5
+ class Photoset < Photo
6
+ def should_render?
7
+ context_post.type == 'photoset' && context_post.photos.size > 1
8
+ end
9
+ end
10
+
11
+ # Rendered for each of the Photoset photos
12
+ class Photos < Base
13
+ def render
14
+ if context.is_a? Resource::Photo
15
+ super
16
+ else
17
+ context.photos.map do |photo|
18
+ photo.context = self
19
+ self.class.new(node, photo).render
20
+ end.flatten.join('')
21
+ end
22
+ end
23
+ end
24
+
25
+ end
26
+ end
27
+ end
@@ -3,7 +3,9 @@ module Tumblargh
3
3
 
4
4
  autoload :Base, 'tumblargh/resource/base'
5
5
  autoload :Blog, 'tumblargh/resource/blog'
6
+ autoload :Dialogue, 'tumblargh/resource/dialogue'
6
7
  autoload :Note, 'tumblargh/resource/note'
8
+ autoload :Photo, 'tumblargh/resource/photo'
7
9
  autoload :Post, 'tumblargh/resource/post'
8
10
  autoload :Tag, 'tumblargh/resource/tag'
9
11
  autoload :User, 'tumblargh/resource/user'
@@ -31,7 +31,7 @@ module Tumblargh
31
31
  end
32
32
 
33
33
  def fetch!
34
- attributes = fetch
34
+ self.attributes = fetch
35
35
  end
36
36
 
37
37
  def posts
@@ -0,0 +1,8 @@
1
+ module Tumblargh
2
+ module Resource
3
+
4
+ class Dialogue < Base
5
+ end
6
+
7
+ end
8
+ end
@@ -0,0 +1,19 @@
1
+ module Tumblargh
2
+ module Resource
3
+
4
+ class Photo < Base
5
+
6
+ def photo_url(size=500)
7
+ size = size.to_i
8
+
9
+ res = alt_sizes.select do |p|
10
+ p[:width] == size
11
+ end
12
+
13
+ res.empty? ? original_size[:url] : res.first[:url]
14
+ end
15
+
16
+ end
17
+
18
+ end
19
+ end