Skip to content

Latest commit

 

History

History
160 lines (91 loc) · 6.65 KB

README.md

File metadata and controls

160 lines (91 loc) · 6.65 KB

GRMustache

GRMustache is a production-ready implementation of Mustache templates for MacOS Cocoa and iOS.

October 30th, 2012: GRMustache 6.0 is out. Release notes

Don't miss a single release: follow @GRMustache on Twitter.

How To

1. Download and add to your Xcode project

$ git clone https://github.com/groue/GRMustache.git
  • For MacOS development, add include/GRMustache.h and lib/libGRMustache6-MacOS.a to your project.
  • For iOS development, add include/GRMustache.h and lib/libGRMustache6-iOS.a to your project.

Alternatively, you may use CocoaPods: append pod 'GRMustache', '~> 6' to your Podfile.

GRMustache targets MacOS down to 10.6 Snow Leopard, iOS down to version 4.3, and only depends on the Foundation framework.

armv6 architecture: The last GRMustache static library that embeds the armv6 slice is GRMustache 5.0.1. You now have to compile GRMustache yourself, or to use CocoaPods.

2. Start rendering templates

#import "GRMustache.h"

// Renders "Hello Arthur!"
NSString *rendering = [GRMustacheTemplate renderObject:[Person personWithName:@"Arthur"]
                                            fromString:@"Hello {{name}}!"
                                                 error:NULL];

// Renders a document from the `Profile.mustache` resource
NSString *rendering = [GRMustacheTemplate renderObject:[Person personWithName:@"Arthur"]
                                          fromResource:@"Profile"
                                                bundle:nil
                                                 error:NULL];

Documentation

Mustache syntax

Guides

Introduction:

  • Introduction: a tour of the library features, and most common use cases.

Loading templates:

Rendering templates:

  • Runtime: how to provide data to templates

Advanced Mustache:

Sample code

  • Layout: how to wrap a template in a "layout" template
  • Number Formatting: how to format numbers
  • Collection Indexes: how to render array indexes, render sections for the first or the last element, for odd or even elements, etc.
  • Localization: how to localize portions of your templates

Reference

  • Reference: the GRMustache reference, automatically generated from inline documentation, for fun and profit, by appledoc.

Internals

  • Forking: the forking guide tells you everything about GRMustache organization.

FAQ

  • Q: How do I render array indexes?

    A: Check the Collection Indexes Sample Code

  • Q: How do I format numbers and dates?

    A: Check the Number Formatting Sample Code

  • Q: How do I render partial templates whose name is only known at runtime?

    A: Check the Rendering Objects Guide

  • Q: Does GRMustache provide any layout or template inheritance facility?

    A: Check the Partials Guide, and the Layout Sample Code.

  • Q: How do I localize templates?

    A: Check the Localization Sample Code

  • Q: How do I render default values for missing keys?

    A: Check the Tag Delegate Guide.

  • Q: What is this NSUndefinedKeyException stuff?

    A: When GRMustache has to try several objects until it finds the one that provides a {{key}}, several NSUndefinedKeyException are raised and caught. Let us double guess you: it's likely that you wish Xcode would stop breaking on those exceptions. This use case is covered in the Runtime Guide.

  • Q: Why does GRMustache need JRSwizzle?

    A: GRMustache does not need it. However, you may happy having GRMustache swizzle valueForUndefinedKey: in the NSObject and NSManagedObject classes when you invoke [GRMustache preventNSUndefinedKeyExceptionAttack]. The use case is described in the Runtime Guide.

What other people say

@JeffSchilling:

I'm loving grmustache

@basilshkara:

Oh man GRMustache saved my ass once again. Awesome lib.

@guiheneuf:

GRMustache filters extension saved us from great escaping PITAs. Thanks @groue.

@orj:

Thank fucking christ for decent iOS developers who ship .lib files in their Github repos. #GRMustache

Contribution wish-list

I wish somebody would review my non-native English, and clean up the guides, if you ask.

Forking

Please fork. You'll learn useful information in the Forking Guide.

License

Released under the MIT License.