jason 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (42) hide show
  1. data/.autotest +9 -0
  2. data/.gitignore +19 -0
  3. data/.travis.yml +6 -0
  4. data/Gemfile +2 -0
  5. data/Gemfile.lock +93 -0
  6. data/LICENSE +20 -0
  7. data/README.md +59 -0
  8. data/Rakefile +20 -0
  9. data/jason.gemspec +29 -0
  10. data/lib/jason.rb +35 -0
  11. data/lib/jason/rails_template_handler.rb +21 -0
  12. data/lib/jason/version.rb +4 -0
  13. data/test/rails/.autotest +5 -0
  14. data/test/rails/.gitignore +17 -0
  15. data/test/rails/Gemfile +11 -0
  16. data/test/rails/Gemfile.lock +87 -0
  17. data/test/rails/README.md +1 -0
  18. data/test/rails/Rakefile +4 -0
  19. data/test/rails/app/controllers/application_controller.rb +2 -0
  20. data/test/rails/app/controllers/test_controller.rb +6 -0
  21. data/test/rails/app/views/test/index.jason +2 -0
  22. data/test/rails/config.ru +4 -0
  23. data/test/rails/config/application.rb +15 -0
  24. data/test/rails/config/boot.rb +6 -0
  25. data/test/rails/config/environment.rb +5 -0
  26. data/test/rails/config/environments/development.rb +9 -0
  27. data/test/rails/config/environments/production.rb +9 -0
  28. data/test/rails/config/environments/test.rb +9 -0
  29. data/test/rails/config/initializers/secret_token.rb +1 -0
  30. data/test/rails/config/initializers/session_store.rb +1 -0
  31. data/test/rails/config/routes.rb +3 -0
  32. data/test/rails/public/404.html +26 -0
  33. data/test/rails/public/422.html +26 -0
  34. data/test/rails/public/500.html +26 -0
  35. data/test/rails/public/favicon.ico +0 -0
  36. data/test/rails/public/robots.txt +5 -0
  37. data/test/rails/script/rails +6 -0
  38. data/test/rails/test/integration/jason_test.rb +8 -0
  39. data/test/rails/test/test_helper.rb +3 -0
  40. data/test/test_helper.rb +7 -0
  41. data/test/test_jason.rb +32 -0
  42. metadata +201 -0
@@ -0,0 +1,9 @@
1
+ require 'bundler/setup'
2
+
3
+ Autotest.add_hook :initialize do |at|
4
+ at.testlib = 'minitest/unit'
5
+
6
+ %w{test/rails}.each do |exception|
7
+ at.add_exception(exception)
8
+ end
9
+ end
@@ -0,0 +1,19 @@
1
+ coverage
2
+ rdoc
3
+ pkg
4
+ test/tmp
5
+ test/version_tmp
6
+ tmp
7
+ pkg
8
+ *.gem
9
+ *.rbc
10
+ lib/bundler/man
11
+ spec/reports
12
+ .config
13
+ InstalledFiles
14
+ .bundle
15
+
16
+ # YARD artifacts
17
+ .yardoc
18
+ _yardoc
19
+ doc/
@@ -0,0 +1,6 @@
1
+ script: 'rake test'
2
+ rvm:
3
+ - 1.8.7
4
+ - 1.9.2
5
+ - ree
6
+ - jruby
data/Gemfile ADDED
@@ -0,0 +1,2 @@
1
+ source :rubygems
2
+ gemspec
@@ -0,0 +1,93 @@
1
+ PATH
2
+ remote: .
3
+ specs:
4
+ jason (0.1.0)
5
+
6
+ GEM
7
+ remote: http://rubygems.org/
8
+ specs:
9
+ ZenTest (4.5.0)
10
+ abstract (1.0.0)
11
+ actionmailer (3.0.5)
12
+ actionpack (= 3.0.5)
13
+ mail (~> 2.2.15)
14
+ actionpack (3.0.5)
15
+ activemodel (= 3.0.5)
16
+ activesupport (= 3.0.5)
17
+ builder (~> 2.1.2)
18
+ erubis (~> 2.6.6)
19
+ i18n (~> 0.4)
20
+ rack (~> 1.2.1)
21
+ rack-mount (~> 0.6.13)
22
+ rack-test (~> 0.5.7)
23
+ tzinfo (~> 0.3.23)
24
+ activemodel (3.0.5)
25
+ activesupport (= 3.0.5)
26
+ builder (~> 2.1.2)
27
+ i18n (~> 0.4)
28
+ activerecord (3.0.5)
29
+ activemodel (= 3.0.5)
30
+ activesupport (= 3.0.5)
31
+ arel (~> 2.0.2)
32
+ tzinfo (~> 0.3.23)
33
+ activeresource (3.0.5)
34
+ activemodel (= 3.0.5)
35
+ activesupport (= 3.0.5)
36
+ activesupport (3.0.5)
37
+ arel (2.0.9)
38
+ autotest (4.4.6)
39
+ ZenTest (>= 4.4.1)
40
+ builder (2.1.2)
41
+ erubis (2.6.6)
42
+ abstract (>= 1.0.0)
43
+ i18n (0.5.0)
44
+ json (1.5.1)
45
+ mail (2.2.17)
46
+ activesupport (>= 2.3.6)
47
+ i18n (>= 0.4.0)
48
+ mime-types (~> 1.16)
49
+ treetop (~> 1.4.8)
50
+ maruku (0.6.0)
51
+ syntax (>= 1.0.0)
52
+ mime-types (1.16)
53
+ minitest (2.1.0)
54
+ mocha (0.9.12)
55
+ polyglot (0.3.1)
56
+ rack (1.2.2)
57
+ rack-mount (0.6.14)
58
+ rack (>= 1.0.0)
59
+ rack-test (0.5.7)
60
+ rack (>= 1.0)
61
+ rails (3.0.5)
62
+ actionmailer (= 3.0.5)
63
+ actionpack (= 3.0.5)
64
+ activerecord (= 3.0.5)
65
+ activeresource (= 3.0.5)
66
+ activesupport (= 3.0.5)
67
+ bundler (~> 1.0)
68
+ railties (= 3.0.5)
69
+ railties (3.0.5)
70
+ actionpack (= 3.0.5)
71
+ activesupport (= 3.0.5)
72
+ rake (>= 0.8.7)
73
+ thor (~> 0.14.4)
74
+ rake (0.8.7)
75
+ syntax (1.0.0)
76
+ thor (0.14.6)
77
+ treetop (1.4.9)
78
+ polyglot (>= 0.3.1)
79
+ tzinfo (0.3.26)
80
+ yard (0.6.8)
81
+
82
+ PLATFORMS
83
+ ruby
84
+
85
+ DEPENDENCIES
86
+ autotest (~> 4.4)
87
+ jason!
88
+ json (~> 1.5)
89
+ maruku (~> 0.6)
90
+ minitest (~> 2.0)
91
+ mocha (~> 0.9)
92
+ rails (= 3.0.5)
93
+ yard (~> 0.6)
data/LICENSE ADDED
@@ -0,0 +1,20 @@
1
+ Copyright (c) 2011 Alexander Kern
2
+
3
+ Permission is hereby granted, free of charge, to any person obtaining
4
+ a copy of this software and associated documentation files (the
5
+ "Software"), to deal in the Software without restriction, including
6
+ without limitation the rights to use, copy, modify, merge, publish,
7
+ distribute, sublicense, and/or sell copies of the Software, and to
8
+ permit persons to whom the Software is furnished to do so, subject to
9
+ the following conditions:
10
+
11
+ The above copyright notice and this permission notice shall be
12
+ included in all copies or substantial portions of the Software.
13
+
14
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
15
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
16
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
17
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
18
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
19
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
20
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
@@ -0,0 +1,59 @@
1
+ # jason - insanely simple JSON templates [![StillMaintained Status](http://stillmaintained.com/CapnKernul/jason.png)](http://stillmaintained.com/CapnKernul/jason) [![Build Status](http://travis-ci.org/CapnKernul/jason.png)](http://travis-ci.org/CapnKernul/jason) #
2
+
3
+ ## Problem ##
4
+
5
+ There's no easy way to create JSON templates in Ruby.
6
+
7
+ ## Solution ##
8
+
9
+ Use YAML and ERb to make the simplest thing that could possibly work.
10
+
11
+ ## Installation ##
12
+
13
+ Without bundler:
14
+
15
+ gem install jason
16
+
17
+ With bundler:
18
+
19
+ gem 'jason'
20
+
21
+ ## Usage ##
22
+
23
+ You write jason templates in plain YAML and ERb. Jason will take care of the
24
+ (ultra-simple) conversion to JSON.
25
+
26
+ Jason.render("foo: bar") # => '{"foo": "bar"}'
27
+
28
+ That's it.
29
+
30
+ ## Usage with Rails ##
31
+
32
+ Name your view template with the extension `jason`. Everything else is the same.
33
+
34
+ # in view_name.jason
35
+ foo: bar
36
+ baz:
37
+ <% unless @we_started_the_fire %>
38
+ - quz
39
+ - quuz
40
+ <% end %>
41
+
42
+ # Renders: {"foo": "bar", "baz": ["quz", "quuz"]}
43
+
44
+ ## Note on Patches/Pull Requests ##
45
+
46
+ * Fork the project.
47
+ * Make your feature addition or bug fix.
48
+ * Add tests for it. This is important so I don't break it in a future version unintentionally.
49
+ * Commit, but do not mess with the `Rakefile`. If you want to have your own version, that is fine but bump the version in a commit by itself in another branch so I can ignore it when I pull.
50
+ * Send me a pull request. Bonus points for git flow feature branches.
51
+
52
+ ## Resources ##
53
+
54
+ * [GitHub Repository](https://github.com/CapnKernul/jason)
55
+ * [Documentation](http://rubydoc.info/github/CapnKernul/jason)
56
+
57
+ ## License ##
58
+
59
+ Jason is licensed under the MIT License. See `LICENSE` for details.
@@ -0,0 +1,20 @@
1
+ require 'bundler'
2
+ Bundler::GemHelper.install_tasks
3
+
4
+ task :default => 'test:unit'
5
+
6
+ task :test => ['test:unit', 'test:rails']
7
+
8
+ require 'rake/testtask'
9
+ Rake::TestTask.new('test:unit') do |t|
10
+ t.ruby_opts += ['-rubygems']
11
+ t.libs << 'test'
12
+ t.pattern = 'test/test_*.rb'
13
+ end
14
+
15
+ task 'test:rails' do
16
+ sh <<-CMD
17
+ cd test/rails
18
+ rake
19
+ CMD
20
+ end
@@ -0,0 +1,29 @@
1
+ # -*- encoding: utf-8 -*-
2
+ $:.push File.expand_path('../lib', __FILE__)
3
+ require 'jason/version'
4
+
5
+ Gem::Specification.new do |s|
6
+ s.name = 'jason'
7
+ s.version = Jason::VERSION
8
+ s.platform = Gem::Platform::RUBY
9
+ s.authors = ['Alexander Kern']
10
+ s.email = ['alex@kernul.com']
11
+ s.homepage = 'https://github.com/CapnKernul/jason'
12
+ s.summary = %q{Insanely simple JSON templates}
13
+ s.description = %q{Create JSON templates using YAML and ERb}
14
+
15
+ s.rubyforge_project = 'jason'
16
+
17
+ s.files = `git ls-files`.split("\n")
18
+ s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
19
+ s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
20
+ s.require_paths = ['lib']
21
+
22
+ s.add_development_dependency 'minitest', '~> 2.0'
23
+ s.add_development_dependency 'mocha', '~> 0.9'
24
+ s.add_development_dependency 'autotest', '~> 4.4'
25
+ s.add_development_dependency 'rails', '3.0.5'
26
+ s.add_development_dependency 'json', '~> 1.5'
27
+ s.add_development_dependency 'yard', '~> 0.6'
28
+ s.add_development_dependency 'maruku', '~> 0.6'
29
+ end
@@ -0,0 +1,35 @@
1
+ require 'erb'
2
+ require 'json'
3
+ require 'yaml'
4
+
5
+ # Renders and compiles Jason templates.
6
+ module Jason
7
+ # Render a template.
8
+ #
9
+ # @example
10
+ # Jason.render('foo: bar') # => '{"foo": "bar"}'
11
+ #
12
+ # @param template [String] the template to render
13
+ # @param binding [Binding] the binding to render the template in
14
+ # @return [String] the rendered template
15
+ def self.render(template, binding = nil)
16
+ yaml = ERB.new(template).result(binding)
17
+ YAML::load(yaml).to_json
18
+ end
19
+
20
+ # Compile a template.
21
+ #
22
+ # Eval the returned value to render the template within the current binding.
23
+ #
24
+ # @param template [String] the template to compile
25
+ # @return [String] the compiled template
26
+ def self.compile(template)
27
+ "#{ERB.new(template).src}; YAML::load(_erbout).to_json"
28
+ end
29
+ end
30
+
31
+ require 'jason/version'
32
+
33
+ if defined? ActionView::Template
34
+ require 'jason/rails_template_handler'
35
+ end
@@ -0,0 +1,21 @@
1
+ module Jason
2
+ # Rails plugin for using Jason as a template handler.
3
+ #
4
+ # Name your view templates like so: `view_name.jason`.
5
+ #
6
+ # Jason loads this module only if it can find `ActionView`.
7
+ class RailsTemplateHandler
8
+ class_attribute :default_format
9
+ self.default_format = Mime::JSON
10
+
11
+ # Compile the Rails template.
12
+ #
13
+ # @param template [Class] the Rails template class
14
+ # @return [String] the compiled template
15
+ def call(template)
16
+ Jason.compile(template.source)
17
+ end
18
+ end
19
+ end
20
+
21
+ ActionView::Template.register_template_handler(:jason, Jason::RailsTemplateHandler.new)
@@ -0,0 +1,4 @@
1
+ module Jason
2
+ # Jason version number
3
+ VERSION = '0.1.0'
4
+ end
@@ -0,0 +1,5 @@
1
+ require 'bundler/setup'
2
+
3
+ Autotest.add_hook :initialize do |at|
4
+ at.testlib = 'minitest/unit'
5
+ end
@@ -0,0 +1,17 @@
1
+ *.rbc
2
+ *.sassc
3
+ .sass-cache
4
+ capybara-*.html
5
+ .rspec
6
+ /.bundle
7
+ /vendor/bundle
8
+ /log/*
9
+ /tmp/*
10
+ /db/*.sqlite3
11
+ /public/system/*
12
+ /coverage/
13
+ /spec/tmp/*
14
+ **.orig
15
+ config/*.yml
16
+ rerun.txt
17
+ pickle-email-*.html
@@ -0,0 +1,11 @@
1
+ source 'http://rubygems.org'
2
+
3
+ gem 'rails', '3.0.5'
4
+ gem 'jason', :path => '../../'
5
+
6
+ group :development, :test do
7
+ gem 'minitest', '~> 2.0'
8
+ gem 'mocha', '~> 0.9'
9
+ gem 'autotest', '~> 4.4'
10
+ gem 'json', '~> 1.5'
11
+ end
@@ -0,0 +1,87 @@
1
+ PATH
2
+ remote: ../../
3
+ specs:
4
+ jason (0.1.0)
5
+
6
+ GEM
7
+ remote: http://rubygems.org/
8
+ specs:
9
+ ZenTest (4.5.0)
10
+ abstract (1.0.0)
11
+ actionmailer (3.0.5)
12
+ actionpack (= 3.0.5)
13
+ mail (~> 2.2.15)
14
+ actionpack (3.0.5)
15
+ activemodel (= 3.0.5)
16
+ activesupport (= 3.0.5)
17
+ builder (~> 2.1.2)
18
+ erubis (~> 2.6.6)
19
+ i18n (~> 0.4)
20
+ rack (~> 1.2.1)
21
+ rack-mount (~> 0.6.13)
22
+ rack-test (~> 0.5.7)
23
+ tzinfo (~> 0.3.23)
24
+ activemodel (3.0.5)
25
+ activesupport (= 3.0.5)
26
+ builder (~> 2.1.2)
27
+ i18n (~> 0.4)
28
+ activerecord (3.0.5)
29
+ activemodel (= 3.0.5)
30
+ activesupport (= 3.0.5)
31
+ arel (~> 2.0.2)
32
+ tzinfo (~> 0.3.23)
33
+ activeresource (3.0.5)
34
+ activemodel (= 3.0.5)
35
+ activesupport (= 3.0.5)
36
+ activesupport (3.0.5)
37
+ arel (2.0.9)
38
+ autotest (4.4.6)
39
+ ZenTest (>= 4.4.1)
40
+ builder (2.1.2)
41
+ erubis (2.6.6)
42
+ abstract (>= 1.0.0)
43
+ i18n (0.5.0)
44
+ json (1.5.1)
45
+ mail (2.2.15)
46
+ activesupport (>= 2.3.6)
47
+ i18n (>= 0.4.0)
48
+ mime-types (~> 1.16)
49
+ treetop (~> 1.4.8)
50
+ mime-types (1.16)
51
+ minitest (2.1.0)
52
+ mocha (0.9.12)
53
+ polyglot (0.3.1)
54
+ rack (1.2.2)
55
+ rack-mount (0.6.13)
56
+ rack (>= 1.0.0)
57
+ rack-test (0.5.7)
58
+ rack (>= 1.0)
59
+ rails (3.0.5)
60
+ actionmailer (= 3.0.5)
61
+ actionpack (= 3.0.5)
62
+ activerecord (= 3.0.5)
63
+ activeresource (= 3.0.5)
64
+ activesupport (= 3.0.5)
65
+ bundler (~> 1.0)
66
+ railties (= 3.0.5)
67
+ railties (3.0.5)
68
+ actionpack (= 3.0.5)
69
+ activesupport (= 3.0.5)
70
+ rake (>= 0.8.7)
71
+ thor (~> 0.14.4)
72
+ rake (0.8.7)
73
+ thor (0.14.6)
74
+ treetop (1.4.9)
75
+ polyglot (>= 0.3.1)
76
+ tzinfo (0.3.25)
77
+
78
+ PLATFORMS
79
+ ruby
80
+
81
+ DEPENDENCIES
82
+ autotest (~> 4.4)
83
+ jason!
84
+ json (~> 1.5)
85
+ minitest (~> 2.0)
86
+ mocha (~> 0.9)
87
+ rails (= 3.0.5)
@@ -0,0 +1 @@
1
+ Bare-bones Rails 3 application for testing Jason.
@@ -0,0 +1,4 @@
1
+ require File.expand_path('../config/application', __FILE__)
2
+ require 'rake'
3
+
4
+ JasonApp::Application.load_tasks
@@ -0,0 +1,2 @@
1
+ class ApplicationController < ActionController::Base
2
+ end
@@ -0,0 +1,6 @@
1
+ class TestController < ApplicationController
2
+ def index
3
+ @instance_var = 'OK'
4
+ render 'index', :locals => { :local_var => 'OK' }
5
+ end
6
+ end
@@ -0,0 +1,2 @@
1
+ instance: <%= @instance_var %>
2
+ local: <%= local_var %>
@@ -0,0 +1,4 @@
1
+ # This file is used by Rack-based servers to start the application.
2
+
3
+ require ::File.expand_path('../config/environment', __FILE__)
4
+ run JasonApp::Application
@@ -0,0 +1,15 @@
1
+ require File.expand_path('../boot', __FILE__)
2
+
3
+ require 'action_controller/railtie'
4
+ require 'rails/test_unit/railtie'
5
+
6
+ # If you have a Gemfile, require the gems listed there, including any gems
7
+ # you've limited to :test, :development, or :production.
8
+ Bundler.require(:default, Rails.env) if defined?(Bundler)
9
+
10
+ module JasonApp
11
+ class Application < Rails::Application
12
+ # Configure the default encoding used in templates for Ruby 1.9.
13
+ config.encoding = 'utf-8'
14
+ end
15
+ end
@@ -0,0 +1,6 @@
1
+ require 'rubygems'
2
+
3
+ # Set up gems listed in the Gemfile.
4
+ ENV['BUNDLE_GEMFILE'] ||= File.expand_path('../../Gemfile', __FILE__)
5
+
6
+ require 'bundler/setup' if File.exists?(ENV['BUNDLE_GEMFILE'])
@@ -0,0 +1,5 @@
1
+ # Load the rails application
2
+ require File.expand_path('../application', __FILE__)
3
+
4
+ # Initialize the rails application
5
+ JasonApp::Application.initialize!
@@ -0,0 +1,9 @@
1
+ JasonApp::Application.configure do
2
+ config.cache_classes = false
3
+ config.whiny_nils = true
4
+ config.consider_all_requests_local = true
5
+ config.action_view.debug_rjs = true
6
+ config.action_controller.perform_caching = false
7
+ config.active_support.deprecation = :log
8
+ config.action_dispatch.best_standards_support = :builtin
9
+ end
@@ -0,0 +1,9 @@
1
+ JasonApp::Application.configure do
2
+ config.cache_classes = true
3
+ config.consider_all_requests_local = false
4
+ config.action_controller.perform_caching = true
5
+ config.action_dispatch.x_sendfile_header = 'X-Sendfile'
6
+ config.serve_static_assets = false
7
+ config.i18n.fallbacks = true
8
+ config.active_support.deprecation = :notify
9
+ end
@@ -0,0 +1,9 @@
1
+ JasonApp::Application.configure do
2
+ config.cache_classes = true
3
+ config.whiny_nils = true
4
+ config.consider_all_requests_local = true
5
+ config.action_controller.perform_caching = false
6
+ config.action_dispatch.show_exceptions = false
7
+ config.action_controller.allow_forgery_protection = false
8
+ config.active_support.deprecation = :stderr
9
+ end
@@ -0,0 +1 @@
1
+ JasonApp::Application.config.secret_token = '5ddfeaf6267d5da9a3409c06628538253d49c742d72b512724abc93a89df4f37ae8dc9bafaeb4ebd0b40be6eb13ca47e4bcaedbf423ed8c6774d61de1abe51eb'
@@ -0,0 +1 @@
1
+ JasonApp::Application.config.session_store :cookie_store, :key => '_jason_app_session'
@@ -0,0 +1,3 @@
1
+ JasonApp::Application.routes.draw do
2
+ root :to => 'test#index'
3
+ end
@@ -0,0 +1,26 @@
1
+ <!DOCTYPE html>
2
+ <html>
3
+ <head>
4
+ <title>The page you were looking for doesn't exist (404)</title>
5
+ <style type="text/css">
6
+ body { background-color: #fff; color: #666; text-align: center; font-family: arial, sans-serif; }
7
+ div.dialog {
8
+ width: 25em;
9
+ padding: 0 4em;
10
+ margin: 4em auto 0 auto;
11
+ border: 1px solid #ccc;
12
+ border-right-color: #999;
13
+ border-bottom-color: #999;
14
+ }
15
+ h1 { font-size: 100%; color: #f00; line-height: 1.5em; }
16
+ </style>
17
+ </head>
18
+
19
+ <body>
20
+ <!-- This file lives in public/404.html -->
21
+ <div class="dialog">
22
+ <h1>The page you were looking for doesn't exist.</h1>
23
+ <p>You may have mistyped the address or the page may have moved.</p>
24
+ </div>
25
+ </body>
26
+ </html>
@@ -0,0 +1,26 @@
1
+ <!DOCTYPE html>
2
+ <html>
3
+ <head>
4
+ <title>The change you wanted was rejected (422)</title>
5
+ <style type="text/css">
6
+ body { background-color: #fff; color: #666; text-align: center; font-family: arial, sans-serif; }
7
+ div.dialog {
8
+ width: 25em;
9
+ padding: 0 4em;
10
+ margin: 4em auto 0 auto;
11
+ border: 1px solid #ccc;
12
+ border-right-color: #999;
13
+ border-bottom-color: #999;
14
+ }
15
+ h1 { font-size: 100%; color: #f00; line-height: 1.5em; }
16
+ </style>
17
+ </head>
18
+
19
+ <body>
20
+ <!-- This file lives in public/422.html -->
21
+ <div class="dialog">
22
+ <h1>The change you wanted was rejected.</h1>
23
+ <p>Maybe you tried to change something you didn't have access to.</p>
24
+ </div>
25
+ </body>
26
+ </html>
@@ -0,0 +1,26 @@
1
+ <!DOCTYPE html>
2
+ <html>
3
+ <head>
4
+ <title>We're sorry, but something went wrong (500)</title>
5
+ <style type="text/css">
6
+ body { background-color: #fff; color: #666; text-align: center; font-family: arial, sans-serif; }
7
+ div.dialog {
8
+ width: 25em;
9
+ padding: 0 4em;
10
+ margin: 4em auto 0 auto;
11
+ border: 1px solid #ccc;
12
+ border-right-color: #999;
13
+ border-bottom-color: #999;
14
+ }
15
+ h1 { font-size: 100%; color: #f00; line-height: 1.5em; }
16
+ </style>
17
+ </head>
18
+
19
+ <body>
20
+ <!-- This file lives in public/500.html -->
21
+ <div class="dialog">
22
+ <h1>We're sorry, but something went wrong.</h1>
23
+ <p>We've been notified about this issue and we'll take a look at it shortly.</p>
24
+ </div>
25
+ </body>
26
+ </html>
File without changes
@@ -0,0 +1,5 @@
1
+ # See http://www.robotstxt.org/wc/norobots.html for documentation on how to use the robots.txt file
2
+ #
3
+ # To ban all spiders from the entire site uncomment the next two lines:
4
+ # User-Agent: *
5
+ # Disallow: /
@@ -0,0 +1,6 @@
1
+ #!/usr/bin/env ruby
2
+ # This command will automatically be run when you run "rails" with Rails 3 gems installed from the root of your application.
3
+
4
+ APP_PATH = File.expand_path('../../config/application', __FILE__)
5
+ require File.expand_path('../../config/boot', __FILE__)
6
+ require 'rails/commands'
@@ -0,0 +1,8 @@
1
+ require 'test_helper'
2
+
3
+ class JasonTest < ActionDispatch::IntegrationTest
4
+ def test_render_json
5
+ get '/', :format => :json
6
+ assert_equal({ 'instance' => 'OK', 'local' => 'OK' }, JSON.parse(response.body))
7
+ end
8
+ end
@@ -0,0 +1,3 @@
1
+ ENV['RAILS_ENV'] = 'test'
2
+ require File.expand_path('../../config/environment', __FILE__)
3
+ require 'rails/test_help'
@@ -0,0 +1,7 @@
1
+ require 'bundler/setup'
2
+ require 'minitest/autorun'
3
+ require 'minitest/pride'
4
+ require 'mocha'
5
+ require 'jason'
6
+
7
+ Dir[File.dirname(__FILE__) + '/support/**/*.rb'].each { |f| require f }
@@ -0,0 +1,32 @@
1
+ require 'test_helper'
2
+
3
+ class TestJason < MiniTest::Unit::TestCase
4
+ def test_render_without_binding
5
+ template = <<-EOF
6
+ foo: bar
7
+ baz:
8
+ - quz
9
+ - quuz
10
+ EOF
11
+
12
+ assert_equal({'foo' => 'bar', 'baz' => ['quz', 'quuz']}, JSON.parse(Jason.render(template)))
13
+ end
14
+
15
+ def test_render_with_binding
16
+ test_string = 'bar'
17
+ template = <<-EOF
18
+ foo: <%= test_string %>
19
+ EOF
20
+
21
+ assert_equal({'foo' => 'bar' }, JSON.parse(Jason.render(template, binding)))
22
+ end
23
+
24
+ def test_compile
25
+ test_string = 'bar'
26
+ template = <<-EOF
27
+ foo: <%= test_string %>
28
+ EOF
29
+
30
+ assert_equal({'foo' => 'bar' }, JSON.parse(eval(Jason.compile(template))))
31
+ end
32
+ end
metadata ADDED
@@ -0,0 +1,201 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: jason
3
+ version: !ruby/object:Gem::Version
4
+ prerelease:
5
+ version: 0.1.0
6
+ platform: ruby
7
+ authors:
8
+ - Alexander Kern
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+
13
+ date: 2011-04-19 00:00:00 -07:00
14
+ default_executable:
15
+ dependencies:
16
+ - !ruby/object:Gem::Dependency
17
+ name: minitest
18
+ prerelease: false
19
+ requirement: &id001 !ruby/object:Gem::Requirement
20
+ none: false
21
+ requirements:
22
+ - - ~>
23
+ - !ruby/object:Gem::Version
24
+ version: "2.0"
25
+ type: :development
26
+ version_requirements: *id001
27
+ - !ruby/object:Gem::Dependency
28
+ name: mocha
29
+ prerelease: false
30
+ requirement: &id002 !ruby/object:Gem::Requirement
31
+ none: false
32
+ requirements:
33
+ - - ~>
34
+ - !ruby/object:Gem::Version
35
+ version: "0.9"
36
+ type: :development
37
+ version_requirements: *id002
38
+ - !ruby/object:Gem::Dependency
39
+ name: autotest
40
+ prerelease: false
41
+ requirement: &id003 !ruby/object:Gem::Requirement
42
+ none: false
43
+ requirements:
44
+ - - ~>
45
+ - !ruby/object:Gem::Version
46
+ version: "4.4"
47
+ type: :development
48
+ version_requirements: *id003
49
+ - !ruby/object:Gem::Dependency
50
+ name: rails
51
+ prerelease: false
52
+ requirement: &id004 !ruby/object:Gem::Requirement
53
+ none: false
54
+ requirements:
55
+ - - "="
56
+ - !ruby/object:Gem::Version
57
+ version: 3.0.5
58
+ type: :development
59
+ version_requirements: *id004
60
+ - !ruby/object:Gem::Dependency
61
+ name: json
62
+ prerelease: false
63
+ requirement: &id005 !ruby/object:Gem::Requirement
64
+ none: false
65
+ requirements:
66
+ - - ~>
67
+ - !ruby/object:Gem::Version
68
+ version: "1.5"
69
+ type: :development
70
+ version_requirements: *id005
71
+ - !ruby/object:Gem::Dependency
72
+ name: yard
73
+ prerelease: false
74
+ requirement: &id006 !ruby/object:Gem::Requirement
75
+ none: false
76
+ requirements:
77
+ - - ~>
78
+ - !ruby/object:Gem::Version
79
+ version: "0.6"
80
+ type: :development
81
+ version_requirements: *id006
82
+ - !ruby/object:Gem::Dependency
83
+ name: maruku
84
+ prerelease: false
85
+ requirement: &id007 !ruby/object:Gem::Requirement
86
+ none: false
87
+ requirements:
88
+ - - ~>
89
+ - !ruby/object:Gem::Version
90
+ version: "0.6"
91
+ type: :development
92
+ version_requirements: *id007
93
+ description: Create JSON templates using YAML and ERb
94
+ email:
95
+ - alex@kernul.com
96
+ executables: []
97
+
98
+ extensions: []
99
+
100
+ extra_rdoc_files: []
101
+
102
+ files:
103
+ - .autotest
104
+ - .gitignore
105
+ - .travis.yml
106
+ - Gemfile
107
+ - Gemfile.lock
108
+ - LICENSE
109
+ - README.md
110
+ - Rakefile
111
+ - jason.gemspec
112
+ - lib/jason.rb
113
+ - lib/jason/rails_template_handler.rb
114
+ - lib/jason/version.rb
115
+ - test/rails/.autotest
116
+ - test/rails/.gitignore
117
+ - test/rails/Gemfile
118
+ - test/rails/Gemfile.lock
119
+ - test/rails/README.md
120
+ - test/rails/Rakefile
121
+ - test/rails/app/controllers/application_controller.rb
122
+ - test/rails/app/controllers/test_controller.rb
123
+ - test/rails/app/views/test/index.jason
124
+ - test/rails/config.ru
125
+ - test/rails/config/application.rb
126
+ - test/rails/config/boot.rb
127
+ - test/rails/config/environment.rb
128
+ - test/rails/config/environments/development.rb
129
+ - test/rails/config/environments/production.rb
130
+ - test/rails/config/environments/test.rb
131
+ - test/rails/config/initializers/secret_token.rb
132
+ - test/rails/config/initializers/session_store.rb
133
+ - test/rails/config/routes.rb
134
+ - test/rails/public/404.html
135
+ - test/rails/public/422.html
136
+ - test/rails/public/500.html
137
+ - test/rails/public/favicon.ico
138
+ - test/rails/public/robots.txt
139
+ - test/rails/script/rails
140
+ - test/rails/test/integration/jason_test.rb
141
+ - test/rails/test/test_helper.rb
142
+ - test/test_helper.rb
143
+ - test/test_jason.rb
144
+ has_rdoc: true
145
+ homepage: https://github.com/CapnKernul/jason
146
+ licenses: []
147
+
148
+ post_install_message:
149
+ rdoc_options: []
150
+
151
+ require_paths:
152
+ - lib
153
+ required_ruby_version: !ruby/object:Gem::Requirement
154
+ none: false
155
+ requirements:
156
+ - - ">="
157
+ - !ruby/object:Gem::Version
158
+ version: "0"
159
+ required_rubygems_version: !ruby/object:Gem::Requirement
160
+ none: false
161
+ requirements:
162
+ - - ">="
163
+ - !ruby/object:Gem::Version
164
+ version: "0"
165
+ requirements: []
166
+
167
+ rubyforge_project: jason
168
+ rubygems_version: 1.6.2
169
+ signing_key:
170
+ specification_version: 3
171
+ summary: Insanely simple JSON templates
172
+ test_files:
173
+ - test/rails/.autotest
174
+ - test/rails/.gitignore
175
+ - test/rails/Gemfile
176
+ - test/rails/Gemfile.lock
177
+ - test/rails/README.md
178
+ - test/rails/Rakefile
179
+ - test/rails/app/controllers/application_controller.rb
180
+ - test/rails/app/controllers/test_controller.rb
181
+ - test/rails/app/views/test/index.jason
182
+ - test/rails/config.ru
183
+ - test/rails/config/application.rb
184
+ - test/rails/config/boot.rb
185
+ - test/rails/config/environment.rb
186
+ - test/rails/config/environments/development.rb
187
+ - test/rails/config/environments/production.rb
188
+ - test/rails/config/environments/test.rb
189
+ - test/rails/config/initializers/secret_token.rb
190
+ - test/rails/config/initializers/session_store.rb
191
+ - test/rails/config/routes.rb
192
+ - test/rails/public/404.html
193
+ - test/rails/public/422.html
194
+ - test/rails/public/500.html
195
+ - test/rails/public/favicon.ico
196
+ - test/rails/public/robots.txt
197
+ - test/rails/script/rails
198
+ - test/rails/test/integration/jason_test.rb
199
+ - test/rails/test/test_helper.rb
200
+ - test/test_helper.rb
201
+ - test/test_jason.rb