Skip to content
/ box Public

A dead easy "inline filesystem" for your ruby scripts

License

Notifications You must be signed in to change notification settings

pote/box

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

15 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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'

About

A dead easy "inline filesystem" for your ruby scripts

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages