Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/beatrichartz/sinatra-mustache
Use Mustache in your Sinatra app without the extra view classes
https://github.com/beatrichartz/sinatra-mustache
Last synced: 5 days ago
JSON representation
Use Mustache in your Sinatra app without the extra view classes
- Host: GitHub
- URL: https://github.com/beatrichartz/sinatra-mustache
- Owner: beatrichartz
- License: mit
- Created: 2010-12-01T08:37:32.000Z (almost 14 years ago)
- Default Branch: master
- Last Pushed: 2014-07-27T17:16:11.000Z (over 10 years ago)
- Last Synced: 2024-10-10T14:35:18.545Z (about 1 month ago)
- Language: Ruby
- Homepage: https://github.com/beatrichartz/sinatra-mustache
- Size: 393 KB
- Stars: 14
- Watchers: 4
- Forks: 2
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Changelog: Changelog.md
- License: License.txt
Awesome Lists containing this project
README
sinatra-mustache [![Build Status](https://travis-ci.org/beatrichartz/sinatra-mustache.png?branch=master)](https://travis-ci.org/beatrichartz/sinatra-mustache) [![Code Climate](https://codeclimate.com/github/beatrichartz/sinatra-mustache.png)](https://codeclimate.com/github/beatrichartz/sinatra-mustache) [![Dependency Status](https://gemnasium.com/beatrichartz/sinatra-mustache.png)](https://gemnasium.com/beatrichartz/sinatra-mustache)
================To simplify setting up [Sinatra][1] to use [Mustache][2] for it's templates. Supports MRI 1.9, 2.0 as well as Rubinius and JRuby in 1.9 and 2.0 mode.
[Sinatra][1] is a amazing little web framework, if you don't know much
about it you should take some time to [get to know it][4].[Mustache][2] is a really great and simple templating system.
Without extra view classes
----There is already an [official][3] way to get Mustache to work with Sinatra, which involves some work and requires separate view classes to accompany your mustache templates. There's power in that for sure, but for some implementations it is a bit complex.
Usage
----Try this on:
require 'sinatra/mustache'
class App < Sinatra::Base
set :views, 'templates' # totally optional
endAnd then put your .mustache files in your app's views folder.
Instance variables and locals are available to the template as well as YAML front matter.
Helpers
----Use the helpers you defined in your app by passing their names to mustache_helper:
require 'sinatra/mustache'
class App < Sinatra::Base
register Sinatra::MustacheHelper #makes mustache_helper available
helpers do
def some_helper *args
args.join('/')
end
end
mustache_helper :some_helper
end
Now you can use some_helper in your mustache template. There is also support for mustache's dot-notation:" {{ some_helper.awesome.nice.spectacular }}" #=> "awesome/nice/spectacular"
Also, There is support for registering helper modulesmodule SomeHelpers
def hello what
"Hello #{what}"
end
endclass App < Sinatra::Base
register Sinatra::MustacheHelper
helpers SomeHelpers
mustache_helpers SomeHelpers
end
Now, this is possible:" {{ hello.Mars }}" #=> "Hello Mars"
Passing arguments to helper methods via dot notation is limited to Strings only.Caveat
----If you need the extra support of the ruby views used in the official Mustache for Sinatra example this gem probably isn't for you.
[1]: http://www.sinatrarb.com/
[2]: http://mustache.github.com/
[3]: https://github.com/defunkt/mustache-sinatra-example
[4]: http://sinatra-book.gittr.com/Contributing to sinatra-mustache
----* Check out the latest master to make sure the feature hasn't been implemented or the bug hasn't been fixed yet.
* Check out the issue tracker to make sure someone already hasn't requested it and/or contributed it.
* Fork the project.
* Start a feature/bugfix branch.
* Commit and push until you are happy with your contribution.
* Make sure to add tests for it. This is important so I don't break it in a future version unintentionally.
* Make sure to add documentation for it. This is important so everyone else can see what your code can do.
* Please try not to mess with the Rakefile, version, or history. If you want to have your own version, or is otherwise necessary, that is fine, but please isolate to its own commit so I can cherry-pick around it.Copyright
----Copyright (c) 2013 Beat Richartz. See LICENSE.txt for
further details.