Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Google Visualization API Query Language for Ruby
Ruby
branch: master
Failed to load latest commit information.
lib Added 'role' property to Rgviz::Column
spec/rgviz
.gitignore
.travis.yml Added .travis.yml
Gemfile Added rake to Gemfile
Gemfile.lock
README.markdown Merge
Rakefile Added Rakefile to run rspec by default
rgviz.gemspec

README.markdown

Rgviz

Build Status

This library implements the query language for the Google Visualization API wire protocol.

It can generate an AST of the query from a string. The AST nodes implement the Visitor Pattern so you can easily work with it.

Installation

gem install rgviz

Ruby on Rails

There is a separate project on top of this library called rgviz-rails, check it out!

Usage

First you must require the library:

require 'rubygems'
require 'rgviz'

To parse a query:

query = Rgviz::Parser.parse 'select name where age > 20'

More documentation

Read the source code for the AST nodes, it's not very big and the nodes just map to the query structure.

Extensions

Rgviz supports the following extra functions:

  • concat: converts each of its arguments to a string and then concatenates them. For example: concat(1, '-', '2') returns '1-2'. Can also receive just a single argument to convert it to a string.
  • floor
  • round

These new functions are not part of Google's query language, but they are very handy so we added them. These functions are also supported by rgviz-rails.

Using the Visitor Pattern

class MyVisitor < Rgviz::Visitor
  def visit_select(node)
    # do something with the node
    puts 'before select'
    puts node.columns.length

    # returning true means visiting this node children
    true
  end

  def end_visit_select(node)
    # This will be invoked after visiting the node
    puts "after select"
  end

  def visit_id_column(node)
    puts node.name
  end
end

query = Rgviz::Parser.parse 'select name, age'
query.accept MyVisitor.new

# outputs:
# before select
# 2
# name
# age
# after select

There is a visit_XXX and end_visit_XXX for every node in the language.

Wrappers for Google DataTable and others

Their source code is here. You can use them to generate the javascript code to implement the wire protocol.

Output Formatters

You can use Rgviz::HtmlRenderer.render(table) and Rgviz::CsvRenderer.render(table) to get a string to render in html or csv output format.

Contributors

Something went wrong with that request. Please try again.