Project

box

0.0
No commit activity in last 3 years
No release in over 3 years
A dead simple inline filesystem for your ruby scripts
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
 Dependencies

Development

>= 0
 Project Readme

Box - Because you don't always need a filesystem.

Howdy, fellow ruby programmer! I want to make a quick disclosure about this gem: while I don't really like to use this term there is no better way to describe it than "a ridiculous hack", I really like the way sinatra handles inline templates and I've always thought we should be able to have that functionality extracted so we could use it anywhere, this gem is my stab at that particular problem.

Some of the code here is taken directly from sinatra, I've tried to make it as simple and brief as possible but due to its hackish nature you might run into unexpected problems with it, I've found it to work on my use cases (including gems, where previous versions of Box did not work as it used to read from the DATA constant) and I really want to make this piece of software robust and usable by anybody, so please open issues on any problems you encounter using it.

Right then! Let's dive in!

What is it?

Box is an extremely simple "inline filesystem" for your ruby scripts, inspired by sinatra and their way of handling simple file templates on its own source file. Allow me to demonstrate:

require 'box'

Box::FILES.class
#=> Hash

Box::FILES.keys
#=> header.md
#   author.html
#   planet.yml

Box::FILES['author.html']
#=> "
#<div class="author">
#  <img src="{{ image_url }}" style="width: 96px; height: 96;">
#  <span style="position: absolute; padding: 32px 15px;">
#    <i>Original post by <a href="{{ twitter_url }}">{{ author }}</a> - check out <a href="{{ blog_url }}">{{ blog_name }}</a></i>
#  </span>
#</div>
#"

__END__
@@ header.md
---
title: "{{ post_title }}"
kind: article
created_at: {{ post_date }}
author: {{ author }}
layout: post
---

@@ author.html
<div class="author">
  <img src="{{ image_url }}" style="width: 96px; height: 96;">
  <span style="position: absolute; padding: 32px 15px;">
    <i>Original post by <a href="{{ twitter_url }}">{{ author }}</a> - check out <a href="{{ blog_url }}">{{ blog_name }}</a></i>
  </span>
</div>

@@ planet.yml
## planet.rb default config file, modify it and spawn awesomeness!

planet:
    posts_directory: source/_posts/
    templates_directory: source/_layouts/

blogs:
  # Bare minimum to get it working
  - author: "Cubox"
    feed:   "http://blog.cuboxlabs.com/atom.xml"
    image:  "http://cuboxlabs.com/img/cubox-humans/could-be-you.png"

  - author: "Pablo Astigarraga"
    feed:   "http://blog.poteland.com/atom.xml"
    image:  "http://poteland.com/images/avatars/red_mage.png"
    # Other fields:
    twitter: "poteland"
    url: "http://blog.poteland.com"    # => only required for people that don\'t have a \'url\' field on their RSS/Atom field'