jsonr 0.0.2 → 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.
data/LICENSE CHANGED
@@ -1,4 +1,4 @@
1
- Copyright (c) 2009 Jiri Zajpt
1
+ Copyright (c) 2010 Jiri Zajpt
2
2
 
3
3
  Permission is hereby granted, free of charge, to any person obtaining
4
4
  a copy of this software and associated documentation files (the
data/Rakefile CHANGED
@@ -11,6 +11,7 @@ begin
11
11
  gem.homepage = "http://github.com/jzajpt/jsonr"
12
12
  gem.authors = ["Jiri Zajpt"]
13
13
  gem.add_development_dependency "rspec", ">= 1.2.9"
14
+ gem.add_dependency('activesupport', '>= 3.0.0.beta4')
14
15
  # gem is a Gem::Specification... see http://www.rubygems.org/read/chapter/20 for additional settings
15
16
  end
16
17
  Jeweler::GemcutterTasks.new
@@ -18,21 +19,21 @@ rescue LoadError
18
19
  puts "Jeweler (or a dependency) not available. Install it with: gem install jeweler"
19
20
  end
20
21
 
21
- # require 'spec/rake/spectask'
22
- # Spec::Rake::SpecTask.new(:spec) do |spec|
23
- # spec.libs << 'lib' << 'spec'
24
- # spec.spec_files = FileList['spec/**/*_spec.rb']
25
- # end
26
- #
27
- # Spec::Rake::SpecTask.new(:rcov) do |spec|
28
- # spec.libs << 'lib' << 'spec'
29
- # spec.pattern = 'spec/**/*_spec.rb'
30
- # spec.rcov = true
31
- # end
32
- #
33
- # task :spec => :check_dependencies
34
- #
35
- # task :default => :spec
22
+ require 'spec/rake/spectask'
23
+ Spec::Rake::SpecTask.new(:spec) do |spec|
24
+ spec.libs << 'lib' << 'spec'
25
+ spec.spec_files = FileList['spec/**/*_spec.rb']
26
+ end
27
+
28
+ Spec::Rake::SpecTask.new(:rcov) do |spec|
29
+ spec.libs << 'lib' << 'spec'
30
+ spec.pattern = 'spec/**/*_spec.rb'
31
+ spec.rcov = true
32
+ end
33
+
34
+ task :spec => :check_dependencies
35
+
36
+ task :default => :spec
36
37
 
37
38
  require 'rake/rdoctask'
38
39
  Rake::RDocTask.new do |rdoc|
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.0.2
1
+ 0.1.0
data/init.rb ADDED
@@ -0,0 +1 @@
1
+ require File.join(File.dirname(__FILE__), 'rails', 'init')
@@ -0,0 +1,62 @@
1
+ # Generated by jeweler
2
+ # DO NOT EDIT THIS FILE DIRECTLY
3
+ # Instead, edit Jeweler::Tasks in Rakefile, and run the gemspec command
4
+ # -*- encoding: utf-8 -*-
5
+
6
+ Gem::Specification.new do |s|
7
+ s.name = %q{jsonr}
8
+ s.version = "0.1.0"
9
+
10
+ s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
+ s.authors = ["Jiri Zajpt"]
12
+ s.date = %q{2010-07-16}
13
+ s.description = %q{A replacement for RJS templates using JSON.}
14
+ s.email = %q{jzajpt@blueberryapps.com}
15
+ s.extra_rdoc_files = [
16
+ "LICENSE",
17
+ "README.rdoc"
18
+ ]
19
+ s.files = [
20
+ ".document",
21
+ ".gitignore",
22
+ "LICENSE",
23
+ "README.rdoc",
24
+ "Rakefile",
25
+ "VERSION",
26
+ "init.rb",
27
+ "jsonr.gemspec",
28
+ "lib/jsonr.rb",
29
+ "lib/jsonr/generator.rb",
30
+ "lib/jsonr/template_handler.rb",
31
+ "rails/init.rb",
32
+ "spec/jsonr_spec.rb",
33
+ "spec/spec.opts",
34
+ "spec/spec_helper.rb"
35
+ ]
36
+ s.homepage = %q{http://github.com/jzajpt/jsonr}
37
+ s.rdoc_options = ["--charset=UTF-8"]
38
+ s.require_paths = ["lib"]
39
+ s.rubygems_version = %q{1.3.7}
40
+ s.summary = %q{A replacement for RJS templates using JSON.}
41
+ s.test_files = [
42
+ "spec/jsonr_spec.rb",
43
+ "spec/spec_helper.rb"
44
+ ]
45
+
46
+ if s.respond_to? :specification_version then
47
+ current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
48
+ s.specification_version = 3
49
+
50
+ if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
51
+ s.add_development_dependency(%q<rspec>, [">= 1.2.9"])
52
+ s.add_runtime_dependency(%q<activesupport>, [">= 3.0.0.beta4"])
53
+ else
54
+ s.add_dependency(%q<rspec>, [">= 1.2.9"])
55
+ s.add_dependency(%q<activesupport>, [">= 3.0.0.beta4"])
56
+ end
57
+ else
58
+ s.add_dependency(%q<rspec>, [">= 1.2.9"])
59
+ s.add_dependency(%q<activesupport>, [">= 3.0.0.beta4"])
60
+ end
61
+ end
62
+
@@ -1,2 +1,9 @@
1
1
  require 'jsonr/generator'
2
- require 'jsonr/template_handler'
2
+
3
+ if defined?(::ActionView)
4
+ require 'jsonr/template_handler'
5
+
6
+ # Hook into ActionView, register jsonr extension.
7
+ ::ActionView::Template.register_template_handler :jsonr, Jsonr::TemplateHandler
8
+ end
9
+
@@ -1,5 +1,8 @@
1
1
  # Jsonr
2
2
 
3
+ require 'active_support/ordered_hash'
4
+ require 'active_support/json'
5
+
3
6
  module Jsonr
4
7
 
5
8
  class Generator
@@ -11,7 +14,7 @@ module Jsonr
11
14
 
12
15
  # Convert to a JSON string representation.
13
16
  def to_s
14
- @commands.to_json
17
+ ActiveSupport::JSON.encode(@commands)
15
18
  end
16
19
 
17
20
  # Replaces a content of an element with given selector with given value.
@@ -93,7 +96,7 @@ module Jsonr
93
96
  # page.flash :notice, "A person detail's were updated."
94
97
  #
95
98
  def flash(severity, message)
96
- @commands[:flash] ||= {}
99
+ @commands[:flash] ||= ActiveSupport::OrderedHash.new
97
100
  @commands[:flash][severity] = message
98
101
  end
99
102
 
@@ -144,6 +147,11 @@ module Jsonr
144
147
  @commands[:remove].push *selectors
145
148
  end
146
149
 
150
+ # Sets given +key+ to a given +value+. Useful for passing custom objects.
151
+ #
152
+ # Example:
153
+ #
154
+ # page.data :person, @person
147
155
  def data(key, value)
148
156
  @commands[key] = value
149
157
  end
@@ -1,8 +1,8 @@
1
1
  module Jsonr
2
2
 
3
- class TemplateHandler < ActionView::TemplateHandler
3
+ class TemplateHandler < ::ActionView::TemplateHandler
4
4
 
5
- include ActionView::TemplateHandlers::Compilable
5
+ include ::ActionView::TemplateHandlers::Compilable
6
6
 
7
7
  def compile(template)
8
8
  "@template_format = :html;" +
@@ -1,4 +1 @@
1
- require 'jsonr'
2
-
3
- # Hook into ActionView, register jsonr extension.
4
- ActionView::Template.register_template_handler :jsonr, Jsonr::TemplateHandler
1
+ require 'jsonr'
@@ -1,7 +1,97 @@
1
1
  require File.expand_path(File.dirname(__FILE__) + '/spec_helper')
2
2
 
3
- describe "Jsonr" do
4
- it "fails" do
5
- fail "hey buddy, you should probably rename this file and start specing for real"
3
+ describe "Jsonr::Generator" do
4
+
5
+ context "an empty generator instance" do
6
+
7
+ it "converts to empty json object" do
8
+ generator = Jsonr::Generator.new
9
+ generator.to_s.should == '{}'
10
+ end
11
+
12
+ end
13
+
14
+ context "#redirect_to" do
15
+
16
+ it "converts to json object with redirect_to key" do
17
+ generator = Jsonr::Generator.new do |page|
18
+ page.redirect_to '/new/url'
19
+ end
20
+
21
+ generator.to_s.should == %Q|{"redirect_to":"/new/url"}|
22
+ end
23
+
24
+ end
25
+
26
+ context "#flash" do
27
+
28
+ it "converts to json object with flash key" do
29
+ generator = Jsonr::Generator.new do |page|
30
+ page.flash :notice, "it's done!"
31
+ end
32
+
33
+ generator.to_s.should == %Q|{"flash":{"notice":"it's done!"}}|
34
+ end
35
+
36
+ it "converts all flashes" do
37
+ generator = Jsonr::Generator.new do |page|
38
+ page.flash :notice, "it's done!"
39
+ page.flash :error, "no it's not!"
40
+ end
41
+
42
+ generator.to_s.should == %Q|{"flash":{"notice":"it's done!","error":"no it's not!"}}|
43
+ end
44
+
6
45
  end
46
+
47
+ %w(hide show toggle remove).each do |cmd|
48
+
49
+ context "##{cmd}" do
50
+
51
+ it "convert to json object with hide key" do
52
+ generator = Jsonr::Generator.new do |page|
53
+ page.send cmd, '#selector1'
54
+ end
55
+
56
+ generator.to_s.should == %Q|{"#{cmd}":["#selector1"]}|
57
+ end
58
+
59
+ it "convert all given selectors" do
60
+ generator = Jsonr::Generator.new do |page|
61
+ page.send cmd, '#selector1', '.selector2'
62
+ end
63
+
64
+ generator.to_s.should == %Q|{"#{cmd}":["#selector1",".selector2"]}|
65
+ end
66
+
67
+ it "convert all given selectors when called more times" do
68
+ generator = Jsonr::Generator.new do |page|
69
+ page.send cmd, '#selector1'
70
+ page.send cmd, '.selector2'
71
+ end
72
+
73
+ generator.to_s.should == %Q|{"#{cmd}":["#selector1",".selector2"]}|
74
+ end
75
+
76
+ end
77
+
78
+ end
79
+
80
+
81
+ %w(replace append prepend replace_with insert_before).each do |cmd|
82
+
83
+ context "##{cmd}" do
84
+
85
+ it "convert to json object with #{cmd} key" do
86
+ generator = Jsonr::Generator.new do |page|
87
+ page.send(cmd, "#selector1", "content")
88
+ end
89
+
90
+ generator.to_s.should == %Q|{"#{cmd}":{"#selector1":"content"}}|
91
+ end
92
+
93
+ end
94
+
95
+ end
96
+
7
97
  end
@@ -1,9 +1,10 @@
1
1
  $LOAD_PATH.unshift(File.dirname(__FILE__))
2
2
  $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
3
+ require 'rubygems'
3
4
  require 'jsonr'
4
5
  require 'spec'
5
6
  require 'spec/autorun'
6
7
 
7
8
  Spec::Runner.configure do |config|
8
-
9
+
9
10
  end
metadata CHANGED
@@ -5,9 +5,9 @@ version: !ruby/object:Gem::Version
5
5
  prerelease: false
6
6
  segments:
7
7
  - 0
8
+ - 1
8
9
  - 0
9
- - 2
10
- version: 0.0.2
10
+ version: 0.1.0
11
11
  platform: ruby
12
12
  authors:
13
13
  - Jiri Zajpt
@@ -34,6 +34,23 @@ dependencies:
34
34
  version: 1.2.9
35
35
  type: :development
36
36
  version_requirements: *id001
37
+ - !ruby/object:Gem::Dependency
38
+ name: activesupport
39
+ prerelease: false
40
+ requirement: &id002 !ruby/object:Gem::Requirement
41
+ none: false
42
+ requirements:
43
+ - - ">="
44
+ - !ruby/object:Gem::Version
45
+ hash: -1848230024
46
+ segments:
47
+ - 3
48
+ - 0
49
+ - 0
50
+ - beta4
51
+ version: 3.0.0.beta4
52
+ type: :runtime
53
+ version_requirements: *id002
37
54
  description: A replacement for RJS templates using JSON.
38
55
  email: jzajpt@blueberryapps.com
39
56
  executables: []
@@ -50,6 +67,8 @@ files:
50
67
  - README.rdoc
51
68
  - Rakefile
52
69
  - VERSION
70
+ - init.rb
71
+ - jsonr.gemspec
53
72
  - lib/jsonr.rb
54
73
  - lib/jsonr/generator.rb
55
74
  - lib/jsonr/template_handler.rb