jsont 0.1.0 → 0.1.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (5) hide show
  1. data/History.txt +7 -3
  2. data/Rakefile +2 -4
  3. data/lib/jsont.rb +4 -7
  4. data/test/test_jsont.rb +49 -7
  5. metadata +7 -7
@@ -1,4 +1,8 @@
1
- == 0.0.1 2008-11-25
1
+ == 0.1.1 2008-11-27
2
2
 
3
- * 1 major enhancement:
4
- * Initial release
3
+ * Removed JSON dependency. You'll have to parse the rules and input before you send it in.
4
+ * Fixed mixed case replacement expressions
5
+
6
+ == 0.1.0 2008-11-25
7
+
8
+ * Initial release
data/Rakefile CHANGED
@@ -8,11 +8,9 @@ $hoe = Hoe.new('jsont', Jsont::VERSION) do |p|
8
8
  p.changes = p.paragraphs_of("History.txt", 0..1).join("\n\n")
9
9
  p.post_install_message = 'PostInstall.txt' # TODO remove if post-install message not required
10
10
  p.rubyforge_name = p.name # TODO this is default value
11
- p.extra_deps = [
12
- ['json'],
13
- ]
14
11
  p.extra_dev_deps = [
15
- ['newgem', ">= #{::Newgem::VERSION}"]
12
+ ['newgem', ">= #{::Newgem::VERSION}"],
13
+ ['json']
16
14
  ]
17
15
 
18
16
  p.clean_globs |= %w[**/.DS_Store tmp *.log]
@@ -1,14 +1,11 @@
1
1
  $:.unshift(File.dirname(__FILE__)) unless
2
2
  $:.include?(File.dirname(__FILE__)) || $:.include?(File.expand_path(File.dirname(__FILE__)))
3
3
 
4
- require 'rubygems'
5
- require 'json'
6
-
7
4
  class Jsont
8
- VERSION = '0.1.0'
5
+ VERSION = '0.1.1'
9
6
 
10
7
  def initialize(rules)
11
- @rules = rules.is_a?(String) ? JSON.parse(rules) : rules.dup
8
+ @rules = rules
12
9
  @rules.each do |r,v|
13
10
  if r[0,4] != 'self'
14
11
  @rules["self.#{r}"] = @rules.delete(r)
@@ -17,7 +14,7 @@ class Jsont
17
14
  end
18
15
 
19
16
  def transform(target)
20
- @parent = target.is_a?(String) ? JSON.parse(target) : target
17
+ @parent = target
21
18
  apply!('self',@parent)
22
19
  end
23
20
 
@@ -34,7 +31,7 @@ class Jsont
34
31
  end
35
32
 
36
33
  if (rule = @rules[target_path])
37
- rule.gsub(/\{([a-z0-9\$\.]+)\}/) do |match|
34
+ rule.gsub(/\{([a-z0-9\$\.]+)\}/i) do |match|
38
35
  path = match[1,match.size - 2]
39
36
  n = case path[0]
40
37
  when ?$
@@ -1,30 +1,72 @@
1
1
  require File.dirname(__FILE__) + '/test_helper.rb'
2
-
2
+ require 'json'
3
3
  class TestJsont < Test::Unit::TestCase
4
4
 
5
5
  def setup
6
6
  end
7
7
 
8
8
  def test_expressions
9
- assert_equal(Jsont.new('{ "self": "<table>{pnt}</table>", "pnt": "<tr><td>{pnt.x}</td><td>{pnt.y}</td></tr>" }').transform('{"pnt": { "x":2, "y":3 }}'), '<table><tr><td>2</td><td>3</td></tr></table>')
9
+ assert_equal(Jsont.new(JSON.parse('{ "self": "<table>{pnt}</table>", "pnt": "<tr><td>{pnt.x}</td><td>{pnt.y}</td></tr>" }')).transform(JSON.parse('{"pnt": { "x":2, "y":3 }}')), '<table><tr><td>2</td><td>3</td></tr></table>')
10
10
 
11
- assert_equal(Jsont.new('{ "self": "<table><tr>{$}</tr></table>","self[*]": "<td>{$}</td>" }').transform('[1,2]'), '<table><tr><td>1</td><td>2</td></tr></table>')
11
+ assert_equal(Jsont.new(JSON.parse('{ "self": "<table><tr>{$}</tr></table>","self[*]": "<td>{$}</td>" }')).transform(JSON.parse('[1,2]')), '<table><tr><td>1</td><td>2</td></tr></table>')
12
12
 
13
- assert_equal(Jsont.new('{ "self": "<table>\n{$}\n</table>",
13
+ assert_equal(Jsont.new(JSON.parse('{ "self": "<table>\n{$}\n</table>",
14
14
  "self[*]": "<tr>{$}</tr>\n",
15
- "self[*][*]": "<td>{$}</td>" }').transform('[[1,2],[3,4]]'), '<table>
15
+ "self[*][*]": "<td>{$}</td>" }')).transform(JSON.parse('[[1,2],[3,4]]')), '<table>
16
16
  <tr><td>1</td><td>2</td></tr>
17
17
  <tr><td>3</td><td>4</td></tr>
18
18
 
19
19
  </table>')
20
20
 
21
- assert_equal(Jsont.new('{"self": "<div>\n{p}\n</div>", "p": "<table><tr>{$}</tr></table>\n", "p[*]": "<td>{$.x}</td><td>{$.y}</td>"}').transform('{"a":"hello", "p":[{"x":1, "y":2},{"x":3, "y":4}]}'),'<div>
21
+ assert_equal(Jsont.new(JSON.parse('{"self": "<div>\n{p}\n</div>", "p": "<table><tr>{$}</tr></table>\n", "p[*]": "<td>{$.x}</td><td>{$.y}</td>"}')).transform(JSON.parse('{"a":"hello", "p":[{"x":1, "y":2},{"x":3, "y":4}]}')),'<div>
22
22
  <table><tr><td>1</td><td>2</td><td>3</td><td>4</td></tr></table>
23
23
 
24
24
  </div>')
25
25
 
26
- assert_equal(Jsont.new('{ "self": "<a href=\"{uri}\" title=\'{title}\'>{$.title}</a>" }').transform('{ "uri":"http://somewhere.org", "title":"somewhere homepage" }'), '<a href="http://somewhere.org" title=\'somewhere homepage\'>somewhere homepage</a>')
26
+ assert_equal(Jsont.new(JSON.parse('{ "self": "<a href=\"{uri}\" title=\'{title}\'>{$.title}</a>" }')).transform(JSON.parse('{ "uri":"http://somewhere.org", "title":"somewhere homepage" }')), '<a href="http://somewhere.org" title=\'somewhere homepage\'>somewhere homepage</a>')
27
27
 
28
28
  assert_equal(Jsont.new({'self' => '<div>{$.test}</div>', 'test' => '<p>{$.x} {$.y}</p>'}).transform({'test' => {'x' => 1, 'y' => 2}}), '<div><p>1 2</p></div>')
29
+
30
+ assert_equal(Jsont.new({
31
+ "self" => "<div id=\"topNav\">{$.mainNav}{$.subNav}</div>",
32
+ "mainNav" => "<ul id=\"mainNav\">{$.menus}</ul>",
33
+ "mainNav.menus[*]" => "<li class=\"dropdown {$.class}\"><a class=\"navLabel\" href=\"{$.url}\">{$.label}</a>\n<ul class=\"clearfix\">{$.items}</ul></li>",
34
+ "mainNav.menus[*].items[*]" => "<li class=\"dropDownItem\"><a href=\"{$.url}\">{$.label}</a></li>",
35
+ "subNav" => "<ul id=\"subNav\">{$.menus}</ul>",
36
+ "subNav.menus[*]" => "<div class=\"{$.class}\">{$.items}</div>",
37
+ "subNav.menus[*].items[*]" => "<li><a class=\"{$.class}\" href=\"{$.url}\">{$.label}</a></li>"
38
+ }).transform({
39
+ "mainNav"=> {
40
+ "menus"=> [
41
+ { "label"=> "Research", "url"=> "http://localhost/research/databases.php", "class"=> "research", "items"=> [
42
+ {"url"=> "http://localhost/research/databases.php", "label"=> "Databases"},
43
+ {"url"=> "http://localhost/research/homework-help.php", "label"=> "Homework Help"},
44
+ {"url"=> "http://localhost/research/government.php", "label"=> "Government"},
45
+ {"url"=> "http://localhost/research/local-history.php", "label"=> "Local/Family History"},
46
+ {"url"=> "http://localhost/research/teacher-resources.php", "label"=> "Teacher Resources"},
47
+ {"url"=> "http://localhost/research/business.php", "label"=> "Business"},
48
+ {"url"=> "http://localhost/research/investing.php", "label"=> "Investing"},
49
+ {"url"=> "http://localhost/research/careers.php", "label"=> "Careers"}
50
+ ] }
51
+ ] },
52
+ "subNav"=> {
53
+ "menus"=> [
54
+ { "class"=> "research", "items"=> [
55
+ {"url"=> "http://localhost/research/databases.php", "label"=> "Databases"},
56
+ {"url"=> "http://localhost/research/homework-help.php", "label"=> "Homework Help"},
57
+ {"url"=> "http://localhost/research/government.php", "label"=> "Government"},
58
+ {"url"=> "http://localhost/research/local-history.php", "label"=> "Local/Family History"},
59
+ {"url"=> "http://localhost/research/teacher-resources.php", "label"=> "Teacher Resources"},
60
+ {"url"=> "http://localhost/research/business.php", "label"=> "Business"},
61
+ {"url"=> "http://localhost/research/investing.php", "label"=> "Investing"},
62
+ {"url"=> "http://localhost/research/careers.php", "label"=> "Careers"}
63
+ ]
64
+ } ]
65
+ }
66
+ }), '<div id="topNav"><ul id="mainNav"><li class="dropdown research"><a class="navLabel" href="http://localhost/research/databases.php">Research</a>
67
+ <ul class="clearfix"><li class="dropDownItem"><a href="http://localhost/research/databases.php">Databases</a></li><li class="dropDownItem"><a href="http://localhost/research/homework-help.php">Homework Help</a></li><li class="dropDownItem"><a href="http://localhost/research/government.php">Government</a></li><li class="dropDownItem"><a href="http://localhost/research/local-history.php">Local/Family History</a></li><li class="dropDownItem"><a href="http://localhost/research/teacher-resources.php">Teacher Resources</a></li><li class="dropDownItem"><a href="http://localhost/research/business.php">Business</a></li><li class="dropDownItem"><a href="http://localhost/research/investing.php">Investing</a></li><li class="dropDownItem"><a href="http://localhost/research/careers.php">Careers</a></li></ul></li></ul><ul id="subNav"><div class="research"><li><a class="" href="http://localhost/research/databases.php">Databases</a></li><li><a class="" href="http://localhost/research/homework-help.php">Homework Help</a></li><li><a class="" href="http://localhost/research/government.php">Government</a></li><li><a class="" href="http://localhost/research/local-history.php">Local/Family History</a></li><li><a class="" href="http://localhost/research/teacher-resources.php">Teacher Resources</a></li><li><a class="" href="http://localhost/research/business.php">Business</a></li><li><a class="" href="http://localhost/research/investing.php">Investing</a></li><li><a class="" href="http://localhost/research/careers.php">Careers</a></li></div></ul></div>')
68
+
69
+
70
+
29
71
  end
30
72
  end
metadata CHANGED
@@ -50,13 +50,13 @@ rubygems_version: 1.2.0
50
50
  requirements: []
51
51
  authors:
52
52
  - FIXME full name
53
- date: 2008-11-25 05:00:00 +00:00
53
+ date: 2008-11-27 05:00:00 +00:00
54
54
  platform: ruby
55
55
  test_files:
56
56
  - test/test_helper.rb
57
57
  - test/test_jsont.rb
58
58
  version: !ruby/object:Gem::Version
59
- version: 0.1.0
59
+ version: 0.1.1
60
60
  require_paths:
61
61
  - lib
62
62
  dependencies:
@@ -65,21 +65,21 @@ dependencies:
65
65
  requirements:
66
66
  - - '>='
67
67
  - !ruby/object:Gem::Version
68
- version: !str 0
68
+ version: 1.1.0
69
69
  version:
70
- type: :runtime
70
+ type: :development
71
71
  version_requirement:
72
- name: json
72
+ name: newgem
73
73
  - !ruby/object:Gem::Dependency
74
74
  version_requirements: !ruby/object:Gem::Requirement
75
75
  requirements:
76
76
  - - '>='
77
77
  - !ruby/object:Gem::Version
78
- version: 1.1.0
78
+ version: !str 0
79
79
  version:
80
80
  type: :development
81
81
  version_requirement:
82
- name: newgem
82
+ name: json
83
83
  - !ruby/object:Gem::Dependency
84
84
  version_requirements: !ruby/object:Gem::Requirement
85
85
  requirements: