benschwarz / smoke
- Source
- Commits
- Network (3)
- Issues (0)
- Downloads (32)
- Wiki (3)
- Graphs
-
Tag:
v0.4.0
Ben Schwarz (author)
Fri Jul 31 01:26:59 -0700 2009
smoke /
| name | age | message | |
|---|---|---|---|
| |
.gitignore | Sat Apr 25 03:12:18 -0700 2009 | |
| |
LICENSE | Mon Mar 23 01:35:10 -0700 2009 | |
| |
README.markdown | ||
| |
Rakefile | Wed Jun 24 07:26:51 -0700 2009 | |
| |
VERSION.yml | ||
| |
deps.rip | Wed Jun 24 07:41:50 -0700 2009 | |
| |
examples/ | Wed Apr 22 03:39:23 -0700 2009 | |
| |
lib/ | ||
| |
rdoc/ | Sun Jun 14 07:03:33 -0700 2009 | |
| |
smoke.gemspec | ||
| |
spec/ |
README.markdown
smoke
smoke is a Ruby based DSL that allows you to take data from YQL, RSS / Atom (and more, if you think of a useful source). This "data" can then be re-represented, sorted and filtered. You can collect data from a multiude of sources, sort them on a common property and return a plain old ruby object or json (You could add in something to output XML too)
Media
- Presentation from Melbourne #roro
- Early screencast to get developer / peer feedback
The concept
The concept comes from using Yahoo Pipes to make little mash ups, get a list of tv shows for my torrent client, compile a recipe book or make tools to give me a list of albums that artists in my music library are about to be release.
How or what to contribute
- Test everything you do
- Add a way to output (XML, anyone?)
- Examples of queries you'd like to be able to do (email / github message them to me)
API Examples
YQL
# This will use yahoo search to get an array of search results about Ruby
Smoke.yql(:ruby) do
select :all
from "search.web"
where :query, "ruby"
discard :title, /tuesday/i
end
Smoke.yql(:python) do
select :all
from "search.web"
where :query, "python"
end
Join sources and use them together
Smoke.join(:ruby, :python)
or even
Smoke.join(:python, :ruby) do
emit do
sort :title
rename :shit_name => :title
end
end
Define a source allowing for variables to be injected later
Source definition:
Smoke.feed :delicious do
prepare do
url "http://feeds.delicious.com/v2/rss/#{username}?count=15"
end
end
Execution:
Smoke[:delicious].username("bschwarz").output
CI
Integrity is running for smoke
TODO (working on, just mental notes)
Later / maybe
- YQL w/oAuth
- YQL Subqueries?
- Implement basic auth for sources
For wiki pages (docs, later)
- How to use
path - YQL Definitions
- Tranformations
- Insert
- Joining
- Variable injection
- Sort, Reverse
- Keep, Discard
- Truncate
- Manually setting the content type for a url
Copyright
Copyright (c) 2009 Ben Schwarz. See LICENSE for details.

