oxmlk 0.3.0 → 0.3.1

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.
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.3.0
1
+ 0.3.1
@@ -0,0 +1,29 @@
1
+ #!/usr/bin/env ruby
2
+ require File.expand_path(File.dirname(__FILE__) + '/../spec/spec_helper')
3
+
4
+ class Item
5
+ include OxMlk
6
+
7
+ ox_elem :asin, :from => 'ASIN'
8
+ ox_elem :detail_page_url, :from => 'DetailPageURL'
9
+ ox_elem :manufacturer, :from => 'Manufacturer', :in => 'ItemAttributes'
10
+ ox_elem :point, :from => 'georss:point'
11
+ end
12
+
13
+ class Response
14
+ include OxMlk
15
+
16
+ ox_tag 'ItemSearchResponse'
17
+
18
+ ox_elem :total_results, :from => 'TotalResults', :as => Integer, :in => 'Items'
19
+ ox_elem :total_pages, :from => 'TotalPages', :as => Integer, :in => 'Items'
20
+ ox_elem :items, :as => [Item], :in => 'Items'
21
+ end
22
+
23
+ response = Response.from_xml(xml_for(:amazon))
24
+
25
+ puts response.total_results, response.total_pages
26
+
27
+ response.items.each do |item|
28
+ puts item.asin, item.detail_page_url, item.manufacturer, item.point,''
29
+ end
data/examples/posts.rb CHANGED
@@ -1,9 +1,35 @@
1
- class Response
1
+ #!/usr/bin/env ruby
2
+ require File.expand_path(File.dirname(__FILE__) + '/../spec/spec_helper')
3
+
4
+ class Post
2
5
  include OxMlk
3
6
 
4
- ox_attr :user, :from => '@user'
7
+ ox_tag :post
8
+
9
+ ox_attr :href
10
+ ox_attr :hash
11
+ ox_attr :description
12
+ ox_attr :tag
13
+ ox_attr :created_at, :from => 'time', :as => Time
14
+ ox_attr :other, :as => Integer
15
+ ox_attr :extended
5
16
  end
6
17
 
7
- class Post
18
+ class Response
8
19
  include OxMlk
20
+
21
+ ox_tag :posts
22
+
23
+ ox_attr :user
24
+ ox_attr :tag
25
+
26
+ ox_elem :posts, :as => [Post]
27
+ end
28
+
29
+ response = Response.from_xml(xml_for(:posts))
30
+
31
+ puts response.user
32
+
33
+ response.posts.each do |post|
34
+ puts post.description, post.href, post.extended, ''
9
35
  end
@@ -0,0 +1,48 @@
1
+ #!/usr/bin/env ruby
2
+ require File.expand_path(File.dirname(__FILE__) + '/../spec/spec_helper')
3
+
4
+ class User
5
+ include OxMlk
6
+
7
+ ox_tag :user
8
+
9
+ ox_elem :id, :as => Integer
10
+ ox_elem :name
11
+ ox_elem :screen_name
12
+ ox_elem :location
13
+ ox_elem :description
14
+ ox_elem :profile_image_url
15
+ ox_elem :url
16
+ ox_elem :protected?
17
+ ox_elem :followers_count, :as => Integer
18
+ end
19
+
20
+ class Status
21
+ include OxMlk
22
+
23
+ ox_tag :status
24
+
25
+ ox_elem :id, :as => Integer
26
+ ox_elem :text
27
+ ox_elem :created_at, :as => Time
28
+ ox_elem :source
29
+ ox_elem :truncated?
30
+ ox_elem :in_reply_to_status_id, :as => Integer
31
+ ox_elem :in_reply_to_user_id, :as => Integer
32
+ ox_elem :favorited?
33
+ ox_elem :user, :as => User
34
+ end
35
+
36
+ class Response
37
+ include OxMlk
38
+
39
+ ox_tag 'statuses'
40
+
41
+ ox_elem :statuses, :as => [Status]
42
+ end
43
+
44
+ response = Response.from_xml(xml_for(:twitter))
45
+
46
+ response.statuses.each do |status|
47
+ puts "#{status.user.screen_name} - #{status.created_at}", status.text, ''
48
+ end
@@ -0,0 +1,133 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <ItemSearchResponse xmlns="http://webservices.amazon.com/AWSECommerceService/2005-10-05" xmlns:georss="http://www.georss.org/georss">
3
+ <OperationRequest>
4
+ <HTTPHeaders>
5
+ <Header Name="UserAgent">
6
+ </Header>
7
+ </HTTPHeaders>
8
+ <RequestId>16WRJBVEM155Q026KCV1</RequestId>
9
+ <Arguments>
10
+ <Argument Name="SearchIndex" Value="Books"></Argument>
11
+ <Argument Name="Service" Value="AWSECommerceService"></Argument>
12
+ <Argument Name="Title" Value="Ruby on Rails"></Argument>
13
+ <Argument Name="Operation" Value="ItemSearch"></Argument>
14
+ <Argument Name="AWSAccessKeyId" Value="dontbeaswoosh"></Argument>
15
+ </Arguments>
16
+ <RequestProcessingTime>0.064924955368042</RequestProcessingTime>
17
+ </OperationRequest>
18
+ <Items>
19
+ <Request>
20
+ <IsValid>True</IsValid>
21
+ <ItemSearchRequest>
22
+ <SearchIndex>Books</SearchIndex>
23
+ <Title>Ruby on Rails</Title>
24
+ </ItemSearchRequest>
25
+ </Request>
26
+ <TotalResults>22</TotalResults>
27
+ <TotalPages>3</TotalPages>
28
+ <Item>
29
+ <ASIN>0321480791</ASIN>
30
+ <georss:point>38.5351715088 -121.7948684692</georss:point>
31
+ <DetailPageURL>http://www.amazon.com/gp/redirect.html%3FASIN=0321480791%26tag=ws%26lcode=xm2%26cID=2025%26ccmID=165953%26location=/o/ASIN/0321480791%253FSubscriptionId=dontbeaswoosh</DetailPageURL>
32
+ <ItemAttributes>
33
+ <Author>Michael Hartl</Author>
34
+ <Author>Aurelius Prochazka</Author>
35
+ <Manufacturer>Addison-Wesley Professional</Manufacturer>
36
+ <ProductGroup>Book</ProductGroup>
37
+ <Title>RailsSpace: Building a Social Networking Website with Ruby on Rails (Addison-Wesley Professional Ruby Series)</Title>
38
+ </ItemAttributes>
39
+ </Item>
40
+ <Item>
41
+ <ASIN>047022388X</ASIN>
42
+ <DetailPageURL>http://www.amazon.com/gp/redirect.html%3FASIN=047022388X%26tag=ws%26lcode=xm2%26cID=2025%26ccmID=165953%26location=/o/ASIN/047022388X%253FSubscriptionId=dontbeaswoosh</DetailPageURL>
43
+ <ItemAttributes>
44
+ <Author>Noel Rappin</Author>
45
+ <Manufacturer>Wrox</Manufacturer>
46
+ <ProductGroup>Book</ProductGroup>
47
+ <Title>Professional Ruby on Rails</Title>
48
+ </ItemAttributes>
49
+ </Item>
50
+ <Item>
51
+ <ASIN>1590598814</ASIN>
52
+ <DetailPageURL>http://www.amazon.com/gp/redirect.html%3FASIN=1590598814%26tag=ws%26lcode=xm2%26cID=2025%26ccmID=165953%26location=/o/ASIN/1590598814%253FSubscriptionId=dontbeaswoosh</DetailPageURL>
53
+ <ItemAttributes>
54
+ <Author>Ola Bini</Author>
55
+ <Manufacturer>Apress</Manufacturer>
56
+ <ProductGroup>Book</ProductGroup>
57
+ <Title>Practical JRuby on Rails Web 2.0 Projects: Bringing Ruby on Rails to Java</Title>
58
+ </ItemAttributes>
59
+ </Item>
60
+ <Item>
61
+ <ASIN>0596101325</ASIN>
62
+ <DetailPageURL>http://www.amazon.com/gp/redirect.html%3FASIN=0596101325%26tag=ws%26lcode=xm2%26cID=2025%26ccmID=165953%26location=/o/ASIN/0596101325%253FSubscriptionId=dontbeaswoosh</DetailPageURL>
63
+ <ItemAttributes>
64
+ <Author>Bruce Tate</Author>
65
+ <Author>Curt Hibbs</Author>
66
+ <Manufacturer>O'Reilly Media, Inc.</Manufacturer>
67
+ <ProductGroup>Book</ProductGroup>
68
+ <Title>Ruby on Rails: Up and Running</Title>
69
+ </ItemAttributes>
70
+ </Item>
71
+ <Item>
72
+ <ASIN>0470081201</ASIN>
73
+ <DetailPageURL>http://www.amazon.com/gp/redirect.html%3FASIN=0470081201%26tag=ws%26lcode=xm2%26cID=2025%26ccmID=165953%26location=/o/ASIN/0470081201%253FSubscriptionId=dontbeaswoosh</DetailPageURL>
74
+ <ItemAttributes>
75
+ <Author>Barry Burd</Author>
76
+ <Manufacturer>For Dummies</Manufacturer>
77
+ <ProductGroup>Book</ProductGroup>
78
+ <Title>Ruby on Rails For Dummies (For Dummies (Computer/Tech))</Title>
79
+ </ItemAttributes>
80
+ </Item>
81
+ <Item>
82
+ <ASIN>0975841955</ASIN>
83
+ <DetailPageURL>http://www.amazon.com/gp/redirect.html%3FASIN=0975841955%26tag=ws%26lcode=xm2%26cID=2025%26ccmID=165953%26location=/o/ASIN/0975841955%253FSubscriptionId=dontbeaswoosh</DetailPageURL>
84
+ <ItemAttributes>
85
+ <Author>Patrick Lenz</Author>
86
+ <Manufacturer>SitePoint</Manufacturer>
87
+ <ProductGroup>Book</ProductGroup>
88
+ <Title>Build Your Own Ruby on Rails Web Applications</Title>
89
+ </ItemAttributes>
90
+ </Item>
91
+ <Item>
92
+ <ASIN>0470069155</ASIN>
93
+ <DetailPageURL>http://www.amazon.com/gp/redirect.html%3FASIN=0470069155%26tag=ws%26lcode=xm2%26cID=2025%26ccmID=165953%26location=/o/ASIN/0470069155%253FSubscriptionId=dontbeaswoosh</DetailPageURL>
94
+ <ItemAttributes>
95
+ <Author>Steve, Ph.D. Holzner</Author>
96
+ <Manufacturer>Wrox</Manufacturer>
97
+ <ProductGroup>Book</ProductGroup>
98
+ <Title>Beginning Ruby on Rails (Wrox Beginning Guides)</Title>
99
+ </ItemAttributes>
100
+ </Item>
101
+ <Item>
102
+ <ASIN>1590597362</ASIN>
103
+ <DetailPageURL>http://www.amazon.com/gp/redirect.html%3FASIN=1590597362%26tag=ws%26lcode=xm2%26cID=2025%26ccmID=165953%26location=/o/ASIN/1590597362%253FSubscriptionId=dontbeaswoosh</DetailPageURL>
104
+ <ItemAttributes>
105
+ <Author>Christian Hellsten</Author>
106
+ <Author>Jarkko Laine</Author>
107
+ <Manufacturer>Apress</Manufacturer>
108
+ <ProductGroup>Book</ProductGroup>
109
+ <Title>Beginning Ruby on Rails E-Commerce: From Novice to Professional (Rails)</Title>
110
+ </ItemAttributes>
111
+ </Item>
112
+ <Item>
113
+ <ASIN>1590597524</ASIN>
114
+ <DetailPageURL>http://www.amazon.com/gp/redirect.html%3FASIN=1590597524%26tag=ws%26lcode=xm2%26cID=2025%26ccmID=165953%26location=/o/ASIN/1590597524%253FSubscriptionId=dontbeaswoosh</DetailPageURL>
115
+ <ItemAttributes>
116
+ <Author>Justin Williams</Author>
117
+ <Manufacturer>friends of ED</Manufacturer>
118
+ <ProductGroup>Book</ProductGroup>
119
+ <Title>Rails Solutions: Ruby on Rails Made Easy (Solutions)</Title>
120
+ </ItemAttributes>
121
+ </Item>
122
+ <Item>
123
+ <ASIN>0321517067</ASIN>
124
+ <DetailPageURL>http://www.amazon.com/gp/redirect.html%3FASIN=0321517067%26tag=ws%26lcode=xm2%26cID=2025%26ccmID=165953%26location=/o/ASIN/0321517067%253FSubscriptionId=dontbeaswoosh</DetailPageURL>
125
+ <ItemAttributes>
126
+ <Author>Aurelius Prochazka</Author>
127
+ <Manufacturer>Addison-Wesley Professional</Manufacturer>
128
+ <ProductGroup>Book</ProductGroup>
129
+ <Title>RailsSpace Ruby on Rails Tutorial (Video Training) (LiveLessons)</Title>
130
+ </ItemAttributes>
131
+ </Item>
132
+ </Items>
133
+ </ItemSearchResponse>
@@ -1,5 +1,6 @@
1
1
  <person category="meat_popsicle" alt="human">
2
2
  <name>Joe</name>
3
+ <lame>false</lame>
3
4
  <number group="main">3035551212</number>
4
5
  <number group="cell">3035551234</number>
5
6
  <email group="home">test@example.com</email>
@@ -0,0 +1,763 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <statuses type="array">
3
+ <status>
4
+ <created_at>Wed Sep 02 19:42:54 +0000 2009</created_at>
5
+ <id>3717259426</id>
6
+ <text>@Eujean2 @Purple_Drazi - true blood mania? I'm crushed (being 1 of the maniacs) and still think it is a good show. + True Blood tastes yummy</text>
7
+ <source>web</source>
8
+ <truncated>false</truncated>
9
+ <in_reply_to_status_id>3701885068</in_reply_to_status_id>
10
+ <in_reply_to_user_id>15532647</in_reply_to_user_id>
11
+ <favorited>false</favorited>
12
+ <in_reply_to_screen_name>Eujean2</in_reply_to_screen_name>
13
+ <user>
14
+ <id>15712981</id>
15
+ <name>thadgann</name>
16
+ <screen_name>thadgann</screen_name>
17
+ <location>Tehran</location>
18
+ <description></description>
19
+ <profile_image_url>http://a1.twimg.com/profile_images/133514436/CapWolfeHat_normal.jpg</profile_image_url>
20
+ <url></url>
21
+ <protected>false</protected>
22
+ <followers_count>117</followers_count>
23
+ <profile_background_color>9ae4e8</profile_background_color>
24
+ <profile_text_color>000000</profile_text_color>
25
+ <profile_link_color>0000ff</profile_link_color>
26
+ <profile_sidebar_fill_color>e0ff92</profile_sidebar_fill_color>
27
+ <profile_sidebar_border_color>87bc44</profile_sidebar_border_color>
28
+ <friends_count>126</friends_count>
29
+ <created_at>Sun Aug 03 18:31:43 +0000 2008</created_at>
30
+ <favourites_count>1</favourites_count>
31
+ <utc_offset>12600</utc_offset>
32
+ <time_zone>Tehran</time_zone>
33
+ <profile_background_image_url>http://s.twimg.com/a/1251845223/images/themes/theme1/bg.gif</profile_background_image_url>
34
+ <profile_background_tile>false</profile_background_tile>
35
+ <statuses_count>1403</statuses_count>
36
+ <notifications></notifications>
37
+ <verified>false</verified>
38
+ <following></following>
39
+ </user>
40
+ </status>
41
+ <status>
42
+ <created_at>Wed Sep 02 19:42:54 +0000 2009</created_at>
43
+ <id>3717259423</id>
44
+ <text>NCsoft and DC Comics Unveil &quot;Aiva's Story,&quot; a Limited Edition Comic Based on Lore of Aion http://bit.ly/4BMzI0 www.google4games.com</text>
45
+ <source>&lt;a href=&quot;http://twitterfeed.com&quot; rel=&quot;nofollow&quot;&gt;twitterfeed&lt;/a&gt;</source>
46
+ <truncated>false</truncated>
47
+ <in_reply_to_status_id></in_reply_to_status_id>
48
+ <in_reply_to_user_id></in_reply_to_user_id>
49
+ <favorited>false</favorited>
50
+ <in_reply_to_screen_name></in_reply_to_screen_name>
51
+ <user>
52
+ <id>69305684</id>
53
+ <name>Marc de Ruijter</name>
54
+ <screen_name>gearedgamer</screen_name>
55
+ <location>Beach</location>
56
+ <description>Gamer :)</description>
57
+ <profile_image_url>http://a3.twimg.com/profile_images/394484925/logo002-200x200-tranparent_normal.png</profile_image_url>
58
+ <url>http://www.google4games.com</url>
59
+ <protected>false</protected>
60
+ <followers_count>304</followers_count>
61
+ <profile_background_color>0099B9</profile_background_color>
62
+ <profile_text_color>3C3940</profile_text_color>
63
+ <profile_link_color>0099B9</profile_link_color>
64
+ <profile_sidebar_fill_color>95E8EC</profile_sidebar_fill_color>
65
+ <profile_sidebar_border_color>5ED4DC</profile_sidebar_border_color>
66
+ <friends_count>609</friends_count>
67
+ <created_at>Thu Aug 27 14:32:47 +0000 2009</created_at>
68
+ <favourites_count>0</favourites_count>
69
+ <utc_offset>3600</utc_offset>
70
+ <time_zone>Amsterdam</time_zone>
71
+ <profile_background_image_url>http://s.twimg.com/a/1251845223/images/themes/theme4/bg.gif</profile_background_image_url>
72
+ <profile_background_tile>false</profile_background_tile>
73
+ <statuses_count>74</statuses_count>
74
+ <notifications></notifications>
75
+ <verified>false</verified>
76
+ <following></following>
77
+ </user>
78
+ </status>
79
+ <status>
80
+ <created_at>Wed Sep 02 19:42:54 +0000 2009</created_at>
81
+ <id>3717259422</id>
82
+ <text>@codexwp Get 100 followers a day using http://tinyurl.com/npfzt4 .</text>
83
+ <source>web</source>
84
+ <truncated>false</truncated>
85
+ <in_reply_to_status_id></in_reply_to_status_id>
86
+ <in_reply_to_user_id>60676244</in_reply_to_user_id>
87
+ <favorited>false</favorited>
88
+ <in_reply_to_screen_name>codexwp</in_reply_to_screen_name>
89
+ <user>
90
+ <id>67636508</id>
91
+ <name>Mia </name>
92
+ <screen_name>Miafg89</screen_name>
93
+ <location></location>
94
+ <description></description>
95
+ <profile_image_url>http://a1.twimg.com/profile_images/374132906/30_normal.jpg</profile_image_url>
96
+ <url></url>
97
+ <protected>false</protected>
98
+ <followers_count>1</followers_count>
99
+ <profile_background_color>9ae4e8</profile_background_color>
100
+ <profile_text_color>000000</profile_text_color>
101
+ <profile_link_color>0000ff</profile_link_color>
102
+ <profile_sidebar_fill_color>e0ff92</profile_sidebar_fill_color>
103
+ <profile_sidebar_border_color>87bc44</profile_sidebar_border_color>
104
+ <friends_count>0</friends_count>
105
+ <created_at>Fri Aug 21 15:38:08 +0000 2009</created_at>
106
+ <favourites_count>0</favourites_count>
107
+ <utc_offset></utc_offset>
108
+ <time_zone></time_zone>
109
+ <profile_background_image_url>http://s.twimg.com/a/1251845223/images/themes/theme1/bg.gif</profile_background_image_url>
110
+ <profile_background_tile>false</profile_background_tile>
111
+ <statuses_count>31</statuses_count>
112
+ <notifications></notifications>
113
+ <verified>false</verified>
114
+ <following></following>
115
+ </user>
116
+ </status>
117
+ <status>
118
+ <created_at>Wed Sep 02 19:42:54 +0000 2009</created_at>
119
+ <id>3717259420</id>
120
+ <text>Quero Emblema enso Shora.</text>
121
+ <source>web</source>
122
+ <truncated>false</truncated>
123
+ <in_reply_to_status_id></in_reply_to_status_id>
124
+ <in_reply_to_user_id></in_reply_to_user_id>
125
+ <favorited>false</favorited>
126
+ <in_reply_to_screen_name></in_reply_to_screen_name>
127
+ <user>
128
+ <id>53916320</id>
129
+ <name>tommyhimi</name>
130
+ <screen_name>tommyhimii</screen_name>
131
+ <location></location>
132
+ <description></description>
133
+ <profile_image_url>http://a1.twimg.com/profile_images/372775140/tommyhimi_wlk_spk_2_2_b_normal.gif</profile_image_url>
134
+ <url></url>
135
+ <protected>false</protected>
136
+ <followers_count>45</followers_count>
137
+ <profile_background_color>709397</profile_background_color>
138
+ <profile_text_color>333333</profile_text_color>
139
+ <profile_link_color>FF3300</profile_link_color>
140
+ <profile_sidebar_fill_color>A0C5C7</profile_sidebar_fill_color>
141
+ <profile_sidebar_border_color>86A4A6</profile_sidebar_border_color>
142
+ <friends_count>104</friends_count>
143
+ <created_at>Sun Jul 05 14:09:29 +0000 2009</created_at>
144
+ <favourites_count>0</favourites_count>
145
+ <utc_offset></utc_offset>
146
+ <time_zone></time_zone>
147
+ <profile_background_image_url>http://a1.twimg.com/profile_background_images/30770646/Yessss.png</profile_background_image_url>
148
+ <profile_background_tile>false</profile_background_tile>
149
+ <statuses_count>451</statuses_count>
150
+ <notifications></notifications>
151
+ <verified>false</verified>
152
+ <following></following>
153
+ </user>
154
+ </status>
155
+ <status>
156
+ <created_at>Wed Sep 02 19:42:54 +0000 2009</created_at>
157
+ <id>3717259415</id>
158
+ <text>FitTalk with ShariFitness this Friday w/ special Guest Jen Hendershott. Click here 4 show details:http://fittalknews.blogspot.com/</text>
159
+ <source>web</source>
160
+ <truncated>false</truncated>
161
+ <in_reply_to_status_id></in_reply_to_status_id>
162
+ <in_reply_to_user_id></in_reply_to_user_id>
163
+ <favorited>false</favorited>
164
+ <in_reply_to_screen_name></in_reply_to_screen_name>
165
+ <user>
166
+ <id>18849359</id>
167
+ <name>ShariFitness</name>
168
+ <screen_name>ShariFitness</screen_name>
169
+ <location>Gwinnett County, GA</location>
170
+ <description>Fitness Professional, Health Advocate, Radio Show Host, On Line Training/Consulting Available. SIGN UP FOR MY NEWSLETTER. CLICK HERE http://eepurl.com/cGVj </description>
171
+ <profile_image_url>http://a1.twimg.com/profile_images/89987246/main_photo_normal.jpg</profile_image_url>
172
+ <url>http://www.sharifitness.com</url>
173
+ <protected>false</protected>
174
+ <followers_count>997</followers_count>
175
+ <profile_background_color>BADFCD</profile_background_color>
176
+ <profile_text_color>0C3E53</profile_text_color>
177
+ <profile_link_color>FF0000</profile_link_color>
178
+ <profile_sidebar_fill_color>FFF7CC</profile_sidebar_fill_color>
179
+ <profile_sidebar_border_color>F2E195</profile_sidebar_border_color>
180
+ <friends_count>195</friends_count>
181
+ <created_at>Sat Jan 10 22:48:47 +0000 2009</created_at>
182
+ <favourites_count>0</favourites_count>
183
+ <utc_offset>-18000</utc_offset>
184
+ <time_zone>Eastern Time (US &amp; Canada)</time_zone>
185
+ <profile_background_image_url>http://s.twimg.com/a/1251747949/images/themes/theme12/bg.gif</profile_background_image_url>
186
+ <profile_background_tile>false</profile_background_tile>
187
+ <statuses_count>2196</statuses_count>
188
+ <notifications></notifications>
189
+ <verified>false</verified>
190
+ <following></following>
191
+ </user>
192
+ </status>
193
+ <status>
194
+ <created_at>Wed Sep 02 19:42:54 +0000 2009</created_at>
195
+ <id>3717259413</id>
196
+ <text>@pascalsmile How I Met Your Mother, amerikaanse serie ;)</text>
197
+ <source>&lt;a href=&quot;http://www.tweetdeck.com/&quot; rel=&quot;nofollow&quot;&gt;TweetDeck&lt;/a&gt;</source>
198
+ <truncated>false</truncated>
199
+ <in_reply_to_status_id>3717241032</in_reply_to_status_id>
200
+ <in_reply_to_user_id>27201399</in_reply_to_user_id>
201
+ <favorited>false</favorited>
202
+ <in_reply_to_screen_name>pascalsmile</in_reply_to_screen_name>
203
+ <user>
204
+ <id>22898495</id>
205
+ <name>Lois </name>
206
+ <screen_name>LOIIS</screen_name>
207
+ <location>Woerden, Holland</location>
208
+ <description></description>
209
+ <profile_image_url>http://a1.twimg.com/profile_images/377057174/Naamloos_normal.jpg</profile_image_url>
210
+ <url></url>
211
+ <protected>false</protected>
212
+ <followers_count>64</followers_count>
213
+ <profile_background_color>0099B9</profile_background_color>
214
+ <profile_text_color>3C3940</profile_text_color>
215
+ <profile_link_color>0099B9</profile_link_color>
216
+ <profile_sidebar_fill_color>95E8EC</profile_sidebar_fill_color>
217
+ <profile_sidebar_border_color>5ED4DC</profile_sidebar_border_color>
218
+ <friends_count>50</friends_count>
219
+ <created_at>Thu Mar 05 08:43:47 +0000 2009</created_at>
220
+ <favourites_count>1</favourites_count>
221
+ <utc_offset>3600</utc_offset>
222
+ <time_zone>Amsterdam</time_zone>
223
+ <profile_background_image_url>http://s.twimg.com/a/1251845223/images/themes/theme4/bg.gif</profile_background_image_url>
224
+ <profile_background_tile>false</profile_background_tile>
225
+ <statuses_count>2968</statuses_count>
226
+ <notifications></notifications>
227
+ <verified>false</verified>
228
+ <following></following>
229
+ </user>
230
+ </status>
231
+ <status>
232
+ <created_at>Wed Sep 02 19:42:54 +0000 2009</created_at>
233
+ <id>3717259410</id>
234
+ <text>i love you morgan :/</text>
235
+ <source>web</source>
236
+ <truncated>false</truncated>
237
+ <in_reply_to_status_id></in_reply_to_status_id>
238
+ <in_reply_to_user_id></in_reply_to_user_id>
239
+ <favorited>false</favorited>
240
+ <in_reply_to_screen_name></in_reply_to_screen_name>
241
+ <user>
242
+ <id>38285603</id>
243
+ <name>Jonny O'Bryan</name>
244
+ <screen_name>jonny_wonny</screen_name>
245
+ <location></location>
246
+ <description> </description>
247
+ <profile_image_url>http://a3.twimg.com/profile_images/341375757/IMG00191_normal.jpg</profile_image_url>
248
+ <url></url>
249
+ <protected>false</protected>
250
+ <followers_count>18</followers_count>
251
+ <profile_background_color>C6E2EE</profile_background_color>
252
+ <profile_text_color>05ffcd</profile_text_color>
253
+ <profile_link_color>1F98C7</profile_link_color>
254
+ <profile_sidebar_fill_color>DAECF4</profile_sidebar_fill_color>
255
+ <profile_sidebar_border_color>C6E2EE</profile_sidebar_border_color>
256
+ <friends_count>18</friends_count>
257
+ <created_at>Wed May 06 21:49:42 +0000 2009</created_at>
258
+ <favourites_count>0</favourites_count>
259
+ <utc_offset>-18000</utc_offset>
260
+ <time_zone>Quito</time_zone>
261
+ <profile_background_image_url>http://a1.twimg.com/profile_background_images/28361124/HPIM1849.jpg</profile_background_image_url>
262
+ <profile_background_tile>true</profile_background_tile>
263
+ <statuses_count>42</statuses_count>
264
+ <notifications></notifications>
265
+ <verified>false</verified>
266
+ <following></following>
267
+ </user>
268
+ </status>
269
+ <status>
270
+ <created_at>Wed Sep 02 19:42:54 +0000 2009</created_at>
271
+ <id>3717259409</id>
272
+ <text>@easy_to_please Yeah, I think so too. You just need to find a way to make things work.</text>
273
+ <source>&lt;a href=&quot;http://www.twhirl.org/&quot; rel=&quot;nofollow&quot;&gt;twhirl&lt;/a&gt;</source>
274
+ <truncated>false</truncated>
275
+ <in_reply_to_status_id>3717194644</in_reply_to_status_id>
276
+ <in_reply_to_user_id>58340912</in_reply_to_user_id>
277
+ <favorited>false</favorited>
278
+ <in_reply_to_screen_name>easy_to_please</in_reply_to_screen_name>
279
+ <user>
280
+ <id>17042830</id>
281
+ <name>An Thony</name>
282
+ <screen_name>el_zilcho</screen_name>
283
+ <location>Under the cap</location>
284
+ <description>A caked-in goldmine</description>
285
+ <profile_image_url>http://a1.twimg.com/profile_images/393250692/gallery_enlarged-werewolves_normal.jpg</profile_image_url>
286
+ <url></url>
287
+ <protected>false</protected>
288
+ <followers_count>173</followers_count>
289
+ <profile_background_color>e8d09a</profile_background_color>
290
+ <profile_text_color>333333</profile_text_color>
291
+ <profile_link_color>aa6467</profile_link_color>
292
+ <profile_sidebar_fill_color>fcffcc</profile_sidebar_fill_color>
293
+ <profile_sidebar_border_color>dcadd7</profile_sidebar_border_color>
294
+ <friends_count>186</friends_count>
295
+ <created_at>Wed Oct 29 14:56:11 +0000 2008</created_at>
296
+ <favourites_count>3</favourites_count>
297
+ <utc_offset>-18000</utc_offset>
298
+ <time_zone>Eastern Time (US &amp; Canada)</time_zone>
299
+ <profile_background_image_url>http://s.twimg.com/a/1251845223/images/themes/theme1/bg.gif</profile_background_image_url>
300
+ <profile_background_tile>false</profile_background_tile>
301
+ <statuses_count>15983</statuses_count>
302
+ <notifications>false</notifications>
303
+ <verified>false</verified>
304
+ <following>false</following>
305
+ </user>
306
+ </status>
307
+ <status>
308
+ <created_at>Wed Sep 02 19:42:54 +0000 2009</created_at>
309
+ <id>3717259408</id>
310
+ <text>aint it funny the last game the sox may possibly have to play in that shitty dome and we win? talk about irony.</text>
311
+ <source>&lt;a href=&quot;http://twitterhelp.blogspot.com/2008/05/twitter-via-mobile-web-mtwittercom.html&quot; rel=&quot;nofollow&quot;&gt;mobile web&lt;/a&gt;</source>
312
+ <truncated>false</truncated>
313
+ <in_reply_to_status_id></in_reply_to_status_id>
314
+ <in_reply_to_user_id></in_reply_to_user_id>
315
+ <favorited>false</favorited>
316
+ <in_reply_to_screen_name></in_reply_to_screen_name>
317
+ <user>
318
+ <id>27659712</id>
319
+ <name>Dennis Smith</name>
320
+ <screen_name>DennisSmithJr</screen_name>
321
+ <location>Chicago</location>
322
+ <description>Just some dude tryna find a way... </description>
323
+ <profile_image_url>http://a1.twimg.com/profile_images/386509750/IMG00007_normal.JPG</profile_image_url>
324
+ <url></url>
325
+ <protected>false</protected>
326
+ <followers_count>99</followers_count>
327
+ <profile_background_color>642D8B</profile_background_color>
328
+ <profile_text_color>3D1957</profile_text_color>
329
+ <profile_link_color>FF0000</profile_link_color>
330
+ <profile_sidebar_fill_color>7AC3EE</profile_sidebar_fill_color>
331
+ <profile_sidebar_border_color>65B0DA</profile_sidebar_border_color>
332
+ <friends_count>41</friends_count>
333
+ <created_at>Mon Mar 30 15:31:54 +0000 2009</created_at>
334
+ <favourites_count>0</favourites_count>
335
+ <utc_offset>-21600</utc_offset>
336
+ <time_zone>Central Time (US &amp; Canada)</time_zone>
337
+ <profile_background_image_url>http://a3.twimg.com/profile_background_images/31859461/s1260000054_30060345_785.jpg</profile_background_image_url>
338
+ <profile_background_tile>true</profile_background_tile>
339
+ <statuses_count>2007</statuses_count>
340
+ <notifications></notifications>
341
+ <verified>false</verified>
342
+ <following></following>
343
+ </user>
344
+ </status>
345
+ <status>
346
+ <created_at>Wed Sep 02 19:42:54 +0000 2009</created_at>
347
+ <id>3717259405</id>
348
+ <text>Leaked on schedule: WSJ says WTO to rule Airbus subsidies illegal http://bit.ly/3FQVup (via @flightblogger)</text>
349
+ <source>&lt;a href=&quot;http://www.atebits.com/&quot; rel=&quot;nofollow&quot;&gt;Tweetie&lt;/a&gt;</source>
350
+ <truncated>false</truncated>
351
+ <in_reply_to_status_id></in_reply_to_status_id>
352
+ <in_reply_to_user_id></in_reply_to_user_id>
353
+ <favorited>false</favorited>
354
+ <in_reply_to_screen_name></in_reply_to_screen_name>
355
+ <user>
356
+ <id>69947015</id>
357
+ <name>CATR - Otago</name>
358
+ <screen_name>otago_catr</screen_name>
359
+ <location>Dunedin, New Zealand</location>
360
+ <description></description>
361
+ <profile_image_url>http://s.twimg.com/a/1251845223/images/default_profile_normal.png</profile_image_url>
362
+ <url>http://catr.otago.ac.nz</url>
363
+ <protected>false</protected>
364
+ <followers_count>4</followers_count>
365
+ <profile_background_color>9ae4e8</profile_background_color>
366
+ <profile_text_color>000000</profile_text_color>
367
+ <profile_link_color>0000ff</profile_link_color>
368
+ <profile_sidebar_fill_color>e0ff92</profile_sidebar_fill_color>
369
+ <profile_sidebar_border_color>87bc44</profile_sidebar_border_color>
370
+ <friends_count>0</friends_count>
371
+ <created_at>Sat Aug 29 19:50:47 +0000 2009</created_at>
372
+ <favourites_count>0</favourites_count>
373
+ <utc_offset>43200</utc_offset>
374
+ <time_zone>Wellington</time_zone>
375
+ <profile_background_image_url>http://s.twimg.com/a/1251845223/images/themes/theme1/bg.gif</profile_background_image_url>
376
+ <profile_background_tile>false</profile_background_tile>
377
+ <statuses_count>13</statuses_count>
378
+ <notifications></notifications>
379
+ <verified>false</verified>
380
+ <following></following>
381
+ </user>
382
+ </status>
383
+ <status>
384
+ <created_at>Wed Sep 02 19:42:54 +0000 2009</created_at>
385
+ <id>3717259404</id>
386
+ <text>#itmightbeover If you take it to heart when i whoop you in any and every video game we've played.</text>
387
+ <source>web</source>
388
+ <truncated>false</truncated>
389
+ <in_reply_to_status_id></in_reply_to_status_id>
390
+ <in_reply_to_user_id></in_reply_to_user_id>
391
+ <favorited>false</favorited>
392
+ <in_reply_to_screen_name></in_reply_to_screen_name>
393
+ <user>
394
+ <id>42823930</id>
395
+ <name>Moriah</name>
396
+ <screen_name>BiancaMoriah</screen_name>
397
+ <location>Bay Area </location>
398
+ <description>To much for 160 chars. </description>
399
+ <profile_image_url>http://a3.twimg.com/profile_images/385858707/l_97cd3c38c9614d22bbbdabedbb0e551b_normal.jpg</profile_image_url>
400
+ <url>http://www.myspace.com/b_mixedbeauty </url>
401
+ <protected>false</protected>
402
+ <followers_count>709</followers_count>
403
+ <profile_background_color>000000</profile_background_color>
404
+ <profile_text_color>050505</profile_text_color>
405
+ <profile_link_color>fa93ca</profile_link_color>
406
+ <profile_sidebar_fill_color>000000</profile_sidebar_fill_color>
407
+ <profile_sidebar_border_color>a822a8</profile_sidebar_border_color>
408
+ <friends_count>119</friends_count>
409
+ <created_at>Wed May 27 05:34:08 +0000 2009</created_at>
410
+ <favourites_count>9</favourites_count>
411
+ <utc_offset>-28800</utc_offset>
412
+ <time_zone>Pacific Time (US &amp; Canada)</time_zone>
413
+ <profile_background_image_url>http://a3.twimg.com/profile_background_images/33613213/25905183.jpg</profile_background_image_url>
414
+ <profile_background_tile>true</profile_background_tile>
415
+ <statuses_count>7704</statuses_count>
416
+ <notifications></notifications>
417
+ <verified>false</verified>
418
+ <following></following>
419
+ </user>
420
+ </status>
421
+ <status>
422
+ <created_at>Wed Sep 02 19:42:54 +0000 2009</created_at>
423
+ <id>3717259403</id>
424
+ <text>@TeamAddictedfly oooooi :D</text>
425
+ <source>web</source>
426
+ <truncated>false</truncated>
427
+ <in_reply_to_status_id>3717137608</in_reply_to_status_id>
428
+ <in_reply_to_user_id>59911576</in_reply_to_user_id>
429
+ <favorited>false</favorited>
430
+ <in_reply_to_screen_name>TeamAddictedfly</in_reply_to_screen_name>
431
+ <user>
432
+ <id>42391545</id>
433
+ <name>Tha&#237;s Portela</name>
434
+ <screen_name>tatah_flones</screen_name>
435
+ <location>Brazil ;)</location>
436
+ <description>McFLY for life *.* </description>
437
+ <profile_image_url>http://a3.twimg.com/profile_images/393194549/tatah_normal.jpg</profile_image_url>
438
+ <url>http://twitter.com/tatah_flones</url>
439
+ <protected>false</protected>
440
+ <followers_count>181</followers_count>
441
+ <profile_background_color>642D8B</profile_background_color>
442
+ <profile_text_color>3D1957</profile_text_color>
443
+ <profile_link_color>FF0000</profile_link_color>
444
+ <profile_sidebar_fill_color>7AC3EE</profile_sidebar_fill_color>
445
+ <profile_sidebar_border_color>65B0DA</profile_sidebar_border_color>
446
+ <friends_count>150</friends_count>
447
+ <created_at>Mon May 25 11:44:36 +0000 2009</created_at>
448
+ <favourites_count>21</favourites_count>
449
+ <utc_offset>-10800</utc_offset>
450
+ <time_zone>Brasilia</time_zone>
451
+ <profile_background_image_url>http://s.twimg.com/a/1250809294/images/themes/theme10/bg.gif</profile_background_image_url>
452
+ <profile_background_tile>true</profile_background_tile>
453
+ <statuses_count>5216</statuses_count>
454
+ <notifications></notifications>
455
+ <verified>false</verified>
456
+ <following></following>
457
+ </user>
458
+ </status>
459
+ <status>
460
+ <created_at>Wed Sep 02 19:42:54 +0000 2009</created_at>
461
+ <id>3717259401</id>
462
+ <text>@GunCulture Bruce Robinson writes on ludicrous amounts of red wine. I tried it, was brilliant. Next day, sober, it was complete crap.</text>
463
+ <source>web</source>
464
+ <truncated>false</truncated>
465
+ <in_reply_to_status_id>3717203917</in_reply_to_status_id>
466
+ <in_reply_to_user_id>22664383</in_reply_to_user_id>
467
+ <favorited>false</favorited>
468
+ <in_reply_to_screen_name>GunCulture</in_reply_to_screen_name>
469
+ <user>
470
+ <id>23420769</id>
471
+ <name>Gregg Beaman</name>
472
+ <screen_name>ABRIEFENCOUNTER</screen_name>
473
+ <location>Carnforth, Lancashire</location>
474
+ <description>Libertarian Party parliamentary candidate for Morecambe and Lunesdale.</description>
475
+ <profile_image_url>http://a1.twimg.com/profile_images/96246572/greggbeamannew_normal.jpg</profile_image_url>
476
+ <url>http://abriefencounter.blogspot.com/</url>
477
+ <protected>false</protected>
478
+ <followers_count>699</followers_count>
479
+ <profile_background_color>C6E2EE</profile_background_color>
480
+ <profile_text_color>663B12</profile_text_color>
481
+ <profile_link_color>1F98C7</profile_link_color>
482
+ <profile_sidebar_fill_color>DAECF4</profile_sidebar_fill_color>
483
+ <profile_sidebar_border_color>C6E2EE</profile_sidebar_border_color>
484
+ <friends_count>1236</friends_count>
485
+ <created_at>Mon Mar 09 10:16:22 +0000 2009</created_at>
486
+ <favourites_count>0</favourites_count>
487
+ <utc_offset>0</utc_offset>
488
+ <time_zone>London</time_zone>
489
+ <profile_background_image_url>http://s.twimg.com/a/1250809294/images/themes/theme2/bg.gif</profile_background_image_url>
490
+ <profile_background_tile>false</profile_background_tile>
491
+ <statuses_count>540</statuses_count>
492
+ <notifications></notifications>
493
+ <verified>false</verified>
494
+ <following></following>
495
+ </user>
496
+ </status>
497
+ <status>
498
+ <created_at>Wed Sep 02 19:42:54 +0000 2009</created_at>
499
+ <id>3717259399</id>
500
+ <text>What you can see from London Eye http://bit.ly/4lhNs</text>
501
+ <source>&lt;a href=&quot;http://apiwiki.twitter.com/&quot; rel=&quot;nofollow&quot;&gt;API&lt;/a&gt;</source>
502
+ <truncated>false</truncated>
503
+ <in_reply_to_status_id></in_reply_to_status_id>
504
+ <in_reply_to_user_id></in_reply_to_user_id>
505
+ <favorited>false</favorited>
506
+ <in_reply_to_screen_name></in_reply_to_screen_name>
507
+ <user>
508
+ <id>70955422</id>
509
+ <name>thornburg</name>
510
+ <screen_name>lariss2</screen_name>
511
+ <location></location>
512
+ <description></description>
513
+ <profile_image_url>http://s.twimg.com/a/1251845223/images/default_profile_normal.png</profile_image_url>
514
+ <url></url>
515
+ <protected>false</protected>
516
+ <followers_count>9</followers_count>
517
+ <profile_background_color>9ae4e8</profile_background_color>
518
+ <profile_text_color>000000</profile_text_color>
519
+ <profile_link_color>0000ff</profile_link_color>
520
+ <profile_sidebar_fill_color>e0ff92</profile_sidebar_fill_color>
521
+ <profile_sidebar_border_color>87bc44</profile_sidebar_border_color>
522
+ <friends_count>0</friends_count>
523
+ <created_at>Wed Sep 02 12:50:21 +0000 2009</created_at>
524
+ <favourites_count>0</favourites_count>
525
+ <utc_offset></utc_offset>
526
+ <time_zone></time_zone>
527
+ <profile_background_image_url>http://s.twimg.com/a/1251845223/images/themes/theme1/bg.gif</profile_background_image_url>
528
+ <profile_background_tile>false</profile_background_tile>
529
+ <statuses_count>93</statuses_count>
530
+ <notifications></notifications>
531
+ <verified>false</verified>
532
+ <following></following>
533
+ </user>
534
+ </status>
535
+ <status>
536
+ <created_at>Wed Sep 02 19:42:54 +0000 2009</created_at>
537
+ <id>3717259394</id>
538
+ <text>@jennifervu, no!!! good thing im not starting school on the 3rd like everyone else or i would be getting another appeal!</text>
539
+ <source>web</source>
540
+ <truncated>false</truncated>
541
+ <in_reply_to_status_id></in_reply_to_status_id>
542
+ <in_reply_to_user_id>24643131</in_reply_to_user_id>
543
+ <favorited>false</favorited>
544
+ <in_reply_to_screen_name>jennifervu</in_reply_to_screen_name>
545
+ <user>
546
+ <id>36242243</id>
547
+ <name>Vicky Pham</name>
548
+ <screen_name>viiiiickysecret</screen_name>
549
+ <location>Renton, WA</location>
550
+ <description>you'll love me.</description>
551
+ <profile_image_url>http://a1.twimg.com/profile_images/361979346/DSC06672_normal.JPG</profile_image_url>
552
+ <url>http://www.myspace.com/babygvickyp</url>
553
+ <protected>false</protected>
554
+ <followers_count>88</followers_count>
555
+ <profile_background_color>5b2cdb</profile_background_color>
556
+ <profile_text_color>781178</profile_text_color>
557
+ <profile_link_color>088253</profile_link_color>
558
+ <profile_sidebar_fill_color>8d8f9e</profile_sidebar_fill_color>
559
+ <profile_sidebar_border_color>ff1981</profile_sidebar_border_color>
560
+ <friends_count>74</friends_count>
561
+ <created_at>Wed Apr 29 01:23:45 +0000 2009</created_at>
562
+ <favourites_count>1</favourites_count>
563
+ <utc_offset>-28800</utc_offset>
564
+ <time_zone>Pacific Time (US &amp; Canada)</time_zone>
565
+ <profile_background_image_url>http://a3.twimg.com/profile_background_images/23281631/home.jpg</profile_background_image_url>
566
+ <profile_background_tile>true</profile_background_tile>
567
+ <statuses_count>261</statuses_count>
568
+ <notifications></notifications>
569
+ <verified>false</verified>
570
+ <following></following>
571
+ </user>
572
+ </status>
573
+ <status>
574
+ <created_at>Wed Sep 02 19:42:54 +0000 2009</created_at>
575
+ <id>3717259391</id>
576
+ <text>Restaurant Relish Blog -- Lunch @ El Pollo Rico: Post dentist I was in the mood for chicken... http://bit.ly/27xFFf</text>
577
+ <source>web</source>
578
+ <truncated>false</truncated>
579
+ <in_reply_to_status_id></in_reply_to_status_id>
580
+ <in_reply_to_user_id></in_reply_to_user_id>
581
+ <favorited>false</favorited>
582
+ <in_reply_to_screen_name></in_reply_to_screen_name>
583
+ <user>
584
+ <id>61214713</id>
585
+ <name>Restaurant Relish</name>
586
+ <screen_name>RRelishDC</screen_name>
587
+ <location>Washington, DC</location>
588
+ <description>We produce video profiles for restaurants websites. We also love to eat all over DC and talk about it.</description>
589
+ <profile_image_url>http://a3.twimg.com/profile_images/337970247/Relish_Twitter_Image_normal.jpg</profile_image_url>
590
+ <url></url>
591
+ <protected>false</protected>
592
+ <followers_count>109</followers_count>
593
+ <profile_background_color>709397</profile_background_color>
594
+ <profile_text_color>333333</profile_text_color>
595
+ <profile_link_color>FF3300</profile_link_color>
596
+ <profile_sidebar_fill_color>A0C5C7</profile_sidebar_fill_color>
597
+ <profile_sidebar_border_color>86A4A6</profile_sidebar_border_color>
598
+ <friends_count>211</friends_count>
599
+ <created_at>Wed Jul 29 15:03:32 +0000 2009</created_at>
600
+ <favourites_count>0</favourites_count>
601
+ <utc_offset>-18000</utc_offset>
602
+ <time_zone>Quito</time_zone>
603
+ <profile_background_image_url>http://a1.twimg.com/profile_background_images/32723926/Relish_Tweet.png</profile_background_image_url>
604
+ <profile_background_tile>false</profile_background_tile>
605
+ <statuses_count>54</statuses_count>
606
+ <notifications></notifications>
607
+ <verified>false</verified>
608
+ <following></following>
609
+ </user>
610
+ </status>
611
+ <status>
612
+ <created_at>Wed Sep 02 19:42:55 +0000 2009</created_at>
613
+ <id>3717259388</id>
614
+ <text>Mmmm...cheeseburgers. I'm super stuffed. I just ate 2 In and Out burgers. They were so good as always. Now it's time for an afternoon siesta</text>
615
+ <source>&lt;a href=&quot;http://twitterfon.net/&quot; rel=&quot;nofollow&quot;&gt;TwitterFon&lt;/a&gt;</source>
616
+ <truncated>false</truncated>
617
+ <in_reply_to_status_id></in_reply_to_status_id>
618
+ <in_reply_to_user_id></in_reply_to_user_id>
619
+ <favorited>false</favorited>
620
+ <in_reply_to_screen_name></in_reply_to_screen_name>
621
+ <user>
622
+ <id>62229937</id>
623
+ <name>Kitty P</name>
624
+ <screen_name>KittyPatrick</screen_name>
625
+ <location>I'm in Las Vegas, bitch. </location>
626
+ <description>The most real bitch you'll ever meet. That's me, bitches!</description>
627
+ <profile_image_url>http://a3.twimg.com/profile_images/344160197/photo_normal.jpg</profile_image_url>
628
+ <url></url>
629
+ <protected>false</protected>
630
+ <followers_count>7</followers_count>
631
+ <profile_background_color>9ae4e8</profile_background_color>
632
+ <profile_text_color>000000</profile_text_color>
633
+ <profile_link_color>0000ff</profile_link_color>
634
+ <profile_sidebar_fill_color>e0ff92</profile_sidebar_fill_color>
635
+ <profile_sidebar_border_color>87bc44</profile_sidebar_border_color>
636
+ <friends_count>29</friends_count>
637
+ <created_at>Sun Aug 02 09:06:50 +0000 2009</created_at>
638
+ <favourites_count>1</favourites_count>
639
+ <utc_offset>-28800</utc_offset>
640
+ <time_zone>Pacific Time (US &amp; Canada)</time_zone>
641
+ <profile_background_image_url>http://s.twimg.com/a/1251845223/images/themes/theme1/bg.gif</profile_background_image_url>
642
+ <profile_background_tile>false</profile_background_tile>
643
+ <statuses_count>94</statuses_count>
644
+ <notifications></notifications>
645
+ <verified>false</verified>
646
+ <following></following>
647
+ </user>
648
+ </status>
649
+ <status>
650
+ <created_at>Wed Sep 02 19:42:54 +0000 2009</created_at>
651
+ <id>3717259385</id>
652
+ <text>@Frans_ella come to the beach!! gggrr</text>
653
+ <source>&lt;a href="http://help.twitter.com/index.php?pg=kb.page&amp;id=75" rel="nofollow"&gt;txt&lt;/a&gt;</source>
654
+ <truncated>false</truncated>
655
+ <in_reply_to_status_id></in_reply_to_status_id>
656
+ <in_reply_to_user_id>38921004</in_reply_to_user_id>
657
+ <favorited>false</favorited>
658
+ <in_reply_to_screen_name>Frans_ella</in_reply_to_screen_name>
659
+ <user>
660
+ <id>64533266</id>
661
+ <name>Josh G</name>
662
+ <screen_name>josherz_g</screen_name>
663
+ <location></location>
664
+ <description></description>
665
+ <profile_image_url>http://s.twimg.com/a/1251493570/images/default_profile_normal.png</profile_image_url>
666
+ <url></url>
667
+ <protected>false</protected>
668
+ <followers_count>15</followers_count>
669
+ <profile_background_color>e8e2ca</profile_background_color>
670
+ <profile_text_color>000000</profile_text_color>
671
+ <profile_link_color>4f4f4f</profile_link_color>
672
+ <profile_sidebar_fill_color>c2c2c2</profile_sidebar_fill_color>
673
+ <profile_sidebar_border_color>c2c2c2</profile_sidebar_border_color>
674
+ <friends_count>28</friends_count>
675
+ <created_at>Mon Aug 10 22:19:36 +0000 2009</created_at>
676
+ <favourites_count>0</favourites_count>
677
+ <utc_offset></utc_offset>
678
+ <time_zone></time_zone>
679
+ <profile_background_image_url>http://a3.twimg.com/profile_background_images/28551563/artist-canvas.jpg</profile_background_image_url>
680
+ <profile_background_tile>false</profile_background_tile>
681
+ <statuses_count>144</statuses_count>
682
+ <notifications></notifications>
683
+ <verified>false</verified>
684
+ <following></following>
685
+ </user>
686
+ </status>
687
+ <status>
688
+ <created_at>Wed Sep 02 19:42:54 +0000 2009</created_at>
689
+ <id>3717259383</id>
690
+ <text>@LatteLovely_Jo cya xxx</text>
691
+ <source>web</source>
692
+ <truncated>false</truncated>
693
+ <in_reply_to_status_id>3717225135</in_reply_to_status_id>
694
+ <in_reply_to_user_id>47655325</in_reply_to_user_id>
695
+ <favorited>false</favorited>
696
+ <in_reply_to_screen_name>LatteLovely_Jo</in_reply_to_screen_name>
697
+ <user>
698
+ <id>55665747</id>
699
+ <name>Drew Burns</name>
700
+ <screen_name>Drewbert95</screen_name>
701
+ <location>uk</location>
702
+ <description>i am a nerd :) i couldnt live without my technology.. </description>
703
+ <profile_image_url>http://a3.twimg.com/profile_images/387927145/11082009738_normal.jpg</profile_image_url>
704
+ <url></url>
705
+ <protected>false</protected>
706
+ <followers_count>82</followers_count>
707
+ <profile_background_color>1A1B1F</profile_background_color>
708
+ <profile_text_color>666666</profile_text_color>
709
+ <profile_link_color>2FC2EF</profile_link_color>
710
+ <profile_sidebar_fill_color>252429</profile_sidebar_fill_color>
711
+ <profile_sidebar_border_color>181A1E</profile_sidebar_border_color>
712
+ <friends_count>215</friends_count>
713
+ <created_at>Fri Jul 10 21:13:54 +0000 2009</created_at>
714
+ <favourites_count>1</favourites_count>
715
+ <utc_offset>0</utc_offset>
716
+ <time_zone>London</time_zone>
717
+ <profile_background_image_url>http://s.twimg.com/a/1251397346/images/themes/theme9/bg.gif</profile_background_image_url>
718
+ <profile_background_tile>false</profile_background_tile>
719
+ <statuses_count>167</statuses_count>
720
+ <notifications></notifications>
721
+ <verified>false</verified>
722
+ <following></following>
723
+ </user>
724
+ </status>
725
+ <status>
726
+ <created_at>Wed Sep 02 19:42:54 +0000 2009</created_at>
727
+ <id>3717259380</id>
728
+ <text>#itmightbeover if my eyes water wen they meet ur breath</text>
729
+ <source>web</source>
730
+ <truncated>false</truncated>
731
+ <in_reply_to_status_id></in_reply_to_status_id>
732
+ <in_reply_to_user_id></in_reply_to_user_id>
733
+ <favorited>false</favorited>
734
+ <in_reply_to_screen_name></in_reply_to_screen_name>
735
+ <user>
736
+ <id>63349154</id>
737
+ <name>Bryan Perry</name>
738
+ <screen_name>therealsmoothb</screen_name>
739
+ <location>Jersey</location>
740
+ <description>They call me Smooth B....nuff said.</description>
741
+ <profile_image_url>http://a3.twimg.com/profile_images/385051091/bryan_normal.jpg</profile_image_url>
742
+ <url>http://www.myspace.com/therealsmoothb</url>
743
+ <protected>false</protected>
744
+ <followers_count>63</followers_count>
745
+ <profile_background_color>1A1B1F</profile_background_color>
746
+ <profile_text_color>e81236</profile_text_color>
747
+ <profile_link_color>cf0f32</profile_link_color>
748
+ <profile_sidebar_fill_color>361b15</profile_sidebar_fill_color>
749
+ <profile_sidebar_border_color>181A1E</profile_sidebar_border_color>
750
+ <friends_count>63</friends_count>
751
+ <created_at>Thu Aug 06 03:00:54 +0000 2009</created_at>
752
+ <favourites_count>1</favourites_count>
753
+ <utc_offset>-18000</utc_offset>
754
+ <time_zone>Quito</time_zone>
755
+ <profile_background_image_url>http://a3.twimg.com/profile_background_images/28175439/seaside.jpg</profile_background_image_url>
756
+ <profile_background_tile>true</profile_background_tile>
757
+ <statuses_count>750</statuses_count>
758
+ <notifications></notifications>
759
+ <verified>false</verified>
760
+ <following></following>
761
+ </user>
762
+ </status>
763
+ </statuses>
data/lib/oxmlk/elem.rb CHANGED
@@ -5,22 +5,24 @@ module OxMlk
5
5
  Float => :to_f.to_proc,
6
6
  String => :to_s.to_proc,
7
7
  Symbol => :to_sym.to_proc,
8
+ Time => proc {|e| Time.parse(e)},
8
9
  :raw => proc {|e| e},
9
10
  :name => proc {|e| e.name},
10
11
  :value => proc {|e| e.value},
11
- :bool => proc {|e| fetch_bool(e.value)})
12
+ :bool => proc {|e| fetch_bool(e)})
12
13
 
13
14
  attr_reader :accessor, :setter, :collection, :from, :as, :in, :procs, :block, :tag
14
15
 
15
16
  def initialize(name,o={},&blk)
16
- @tag = name.to_s
17
- @accessor = @tag.chomp('?').intern
17
+ @tag = name.to_s.chomp('?')
18
+ @accessor = @tag.intern
18
19
  @setter = "#{@accessor}=".intern
19
20
  @collection = o[:as].is_a?(Array)
20
21
 
21
22
  @from = o[:from]
22
- @as = [*o.delete(:as)].compact
23
- @in = o.delete(:in)
23
+ @as = [*o[:as]].compact
24
+ @as = [:bool] if as.empty? && name.to_s.end_with?('?')
25
+ @in = o[:in]
24
26
 
25
27
  @procs = as.map {|k| PROCS[k]}
26
28
  @procs = [PROCS[:value]] + procs unless [:raw,:name,:value].include?(as.first) || ox?
@@ -38,7 +40,7 @@ module OxMlk
38
40
 
39
41
  def from_xml(data)
40
42
  xml = XML::Node.from(data)
41
- block.call(xml.find(xpath).map do |node|
43
+ block.call(xml.search(xpath).map do |node|
42
44
  procs.inject(node) do |n,p|
43
45
  p.call(n)
44
46
  end
@@ -0,0 +1,5 @@
1
+ class String
2
+ def between(separator, &block)
3
+ split(separator).map(&block).join(separator)
4
+ end
5
+ end
data/lib/oxmlk/xml.rb CHANGED
@@ -11,7 +11,7 @@ module OxMlk
11
11
 
12
12
  class Node
13
13
  alias_method :value, :content
14
-
14
+
15
15
  def self.from(data)
16
16
  case data
17
17
  when XML::Document
@@ -28,6 +28,35 @@ module OxMlk
28
28
  raise 'Invalid XML data'
29
29
  end
30
30
  end
31
+
32
+ def search(xpath)
33
+ begin
34
+ if namespaces.default && !xpath.include?(':')
35
+ find(namespaced(xpath),
36
+ default_namespace(namespaces.default.href))
37
+ else
38
+ find(xpath)
39
+ end
40
+ rescue Exception => ex
41
+ raise ex, xpath
42
+ end
43
+ end
44
+
45
+ def namespaced(xpath)
46
+ xpath.between('|') do |section|
47
+ section.between('/') do |component|
48
+ unspaced?(component) ? default_namespace(component) : component
49
+ end
50
+ end
51
+ end
52
+
53
+ def default_namespace(name)
54
+ "oxdefault:#{name}"
55
+ end
56
+
57
+ def unspaced?(component)
58
+ component =~ /\w+/ && !component.include?(':') && !component.starts_with?('@')
59
+ end
31
60
  end
32
61
  end
33
62
  end
data/lib/oxmlk.rb CHANGED
@@ -3,6 +3,7 @@ dir = File.dirname(__FILE__)
3
3
  require 'rubygems'
4
4
  require 'activesupport'
5
5
 
6
+ require File.join(dir, 'oxmlk/extensions')
6
7
  require File.join(dir, 'oxmlk/xml')
7
8
  require File.join(dir, 'oxmlk/attr')
8
9
  require File.join(dir, 'oxmlk/elem')
@@ -14,7 +15,8 @@ module OxMlk
14
15
  include InstanceMethods
15
16
  extend ClassMethods
16
17
 
17
- @ox_attrs, @ox_elems = [], []
18
+ @ox_attrs = []
19
+ @ox_elems = []
18
20
  end
19
21
  end
20
22
 
@@ -29,13 +31,13 @@ module OxMlk
29
31
 
30
32
  def ox_attr(name,o={})
31
33
  new_attr = Attr.new(name, o)
32
- (@ox_attrs ||= []) << new_attr
34
+ @ox_attrs << new_attr
33
35
  attr_accessor new_attr.accessor
34
36
  end
35
37
 
36
38
  def ox_elem(name,o={})
37
39
  new_elem = Elem.new(name, o)
38
- (@ox_elems ||= []) << new_elem
40
+ @ox_elems << new_elem
39
41
  attr_accessor new_elem.accessor
40
42
  end
41
43
 
data/oxmlk.gemspec CHANGED
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{oxmlk}
8
- s.version = "0.3.0"
8
+ s.version = "0.3.1"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Josh Robinson"]
12
- s.date = %q{2009-09-01}
12
+ s.date = %q{2009-09-02}
13
13
  s.description = %q{OxMlk gives you a simple way to map you ruby objects to XML and then convert one to the other.}
14
14
  s.email = %q{hexorx@gmail.com}
15
15
  s.extra_rdoc_files = [
@@ -18,18 +18,22 @@ Gem::Specification.new do |s|
18
18
  ]
19
19
  s.files = [
20
20
  ".document",
21
- ".gitignore",
22
21
  "LICENSE",
23
22
  "README.rdoc",
24
23
  "Rakefile",
25
24
  "VERSION",
25
+ "examples/amazon.rb",
26
26
  "examples/example.rb",
27
27
  "examples/posts.rb",
28
+ "examples/twitter.rb",
29
+ "examples/xml/amazon.xml",
28
30
  "examples/xml/example.xml",
29
31
  "examples/xml/posts.xml",
32
+ "examples/xml/twitter.xml",
30
33
  "lib/oxmlk.rb",
31
34
  "lib/oxmlk/attr.rb",
32
35
  "lib/oxmlk/elem.rb",
36
+ "lib/oxmlk/extensions.rb",
33
37
  "lib/oxmlk/xml.rb",
34
38
  "oxmlk.gemspec",
35
39
  "spec/oxmlk/attr_spec.rb",
@@ -50,8 +54,10 @@ Gem::Specification.new do |s|
50
54
  "spec/oxmlk_spec.rb",
51
55
  "spec/spec_helper.rb",
52
56
  "spec/xml_spec.rb",
57
+ "examples/amazon.rb",
53
58
  "examples/example.rb",
54
- "examples/posts.rb"
59
+ "examples/posts.rb",
60
+ "examples/twitter.rb"
55
61
  ]
56
62
 
57
63
  if s.respond_to? :specification_version then
@@ -73,6 +73,14 @@ describe OxMlk::Elem do
73
73
  it 'should turn symbol to proc if possible' do
74
74
  ox_elem(:name, :as => :to_i).from_xml(@xml).should be_a(Integer)
75
75
  end
76
+
77
+ it 'should return true || false if :bool is passed to :as' do
78
+ ox_elem(:lame, :as => :bool).from_xml(@xml).should be_false
79
+ end
80
+
81
+ it 'should be bool if name ends with ?' do
82
+ ox_elem(:lame?).from_xml(@xml).should be_false
83
+ end
76
84
  end
77
85
 
78
86
  describe '#to_xml' do
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: oxmlk
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.0
4
+ version: 0.3.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Josh Robinson
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2009-09-01 00:00:00 -06:00
12
+ date: 2009-09-02 00:00:00 -06:00
13
13
  default_executable:
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
@@ -53,18 +53,22 @@ extra_rdoc_files:
53
53
  - README.rdoc
54
54
  files:
55
55
  - .document
56
- - .gitignore
57
56
  - LICENSE
58
57
  - README.rdoc
59
58
  - Rakefile
60
59
  - VERSION
60
+ - examples/amazon.rb
61
61
  - examples/example.rb
62
62
  - examples/posts.rb
63
+ - examples/twitter.rb
64
+ - examples/xml/amazon.xml
63
65
  - examples/xml/example.xml
64
66
  - examples/xml/posts.xml
67
+ - examples/xml/twitter.xml
65
68
  - lib/oxmlk.rb
66
69
  - lib/oxmlk/attr.rb
67
70
  - lib/oxmlk/elem.rb
71
+ - lib/oxmlk/extensions.rb
68
72
  - lib/oxmlk/xml.rb
69
73
  - oxmlk.gemspec
70
74
  - spec/oxmlk/attr_spec.rb
@@ -107,5 +111,7 @@ test_files:
107
111
  - spec/oxmlk_spec.rb
108
112
  - spec/spec_helper.rb
109
113
  - spec/xml_spec.rb
114
+ - examples/amazon.rb
110
115
  - examples/example.rb
111
116
  - examples/posts.rb
117
+ - examples/twitter.rb
data/.gitignore DELETED
@@ -1,6 +0,0 @@
1
- *.sw?
2
- .DS_Store
3
- coverage
4
- rdoc
5
- pkg
6
- .rake_tasks~