tokamak 1.1.5 → 1.2.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.
@@ -7,12 +7,15 @@ module Tokamak
7
7
  class << self
8
8
  def builder_for(*args)
9
9
  # class instance variable to store media types handled by a builder
10
- @media_types = args
10
+ @media_types ||= []
11
11
  args.each do |media_type|
12
+ @media_types << media_type
12
13
  @@global_media_types[media_type] = self
13
14
  end
14
15
  end
15
-
16
+
17
+ alias_method :add_media_type, :builder_for
18
+
16
19
  def media_types
17
20
  @media_types
18
21
  end
@@ -22,11 +25,7 @@ module Tokamak
22
25
  end
23
26
 
24
27
  def build(obj, options = {}, &block)
25
- if block_given?
26
- recipe = block
27
- else
28
- recipe = options.delete(:recipe)
29
- end
28
+ recipe = block_given? ? block : options.delete(:recipe)
30
29
 
31
30
  unless recipe.respond_to?(:call)
32
31
  recipe = Tokamak::Recipes[recipe]
@@ -41,10 +40,7 @@ module Tokamak
41
40
  end
42
41
 
43
42
  def helper
44
- unless instance_variable_get(:@helper_module)
45
- @helper_module = Tokamak::Builder.helper_module_for(self)
46
- end
47
- @helper_module
43
+ @helper_module ||= Tokamak::Builder.helper_module_for(self)
48
44
  end
49
45
 
50
46
  def collection_helper_default_options(options = {}, &block)
@@ -23,16 +23,15 @@ module Tokamak
23
23
  raise Tokamak::BuilderError.new("Members method require a collection to execute") unless collection.respond_to?(:each)
24
24
  root = options[:root] || "members"
25
25
 
26
- add_to_current(root, [])
26
+ add_to(@current, root, [])
27
27
  collection.each do |member|
28
- node = {}
29
28
 
30
29
  parent = @current
31
- @current = node
30
+ @current = {}
32
31
  block.call(self, member)
32
+ add_to(parent, root, @current)
33
33
  @current = parent
34
34
 
35
- add_to_current(root, node)
36
35
  end
37
36
  end
38
37
 
@@ -61,7 +60,7 @@ module Tokamak
61
60
  @current = parent
62
61
  end
63
62
 
64
- add_to_current(name, node)
63
+ add_to(@current, name, node)
65
64
  end
66
65
 
67
66
  def representation
@@ -98,15 +97,15 @@ module Tokamak
98
97
  end
99
98
  end
100
99
 
101
- def add_to_current(name, value)
102
- if @current[name]
103
- if @current[name].kind_of?(Array)
104
- @current[name] << value
100
+ def add_to(node, name, value)
101
+ if node[name]
102
+ if node[name].kind_of?(Array)
103
+ node[name] << value
105
104
  else
106
- @current[name] = [@current[name], value]
105
+ node[name] = [node[name], value]
107
106
  end
108
107
  else
109
- @current[name] = value
108
+ node[name] = value
110
109
  end
111
110
  end
112
111
 
@@ -33,11 +33,7 @@ module Tokamak
33
33
 
34
34
  def values(options = {}, &block)
35
35
  options.each do |key,value|
36
- attr = key.to_s
37
- if attr =~ /^xmlns(:\w+)?$/
38
- ns = attr.split(":", 2)[1]
39
- @parent.add_namespace_definition(ns, value)
40
- end
36
+ apply_namespace(@parent, key.to_s, value)
41
37
  end
42
38
  yield Values.new(self)
43
39
  end
@@ -68,50 +64,45 @@ module Tokamak
68
64
 
69
65
  private
70
66
 
67
+ def apply_namespace(node, key, value)
68
+ if key =~ /^xmlns(:\w+)?$/
69
+ ns_name = key.split(":", 2)[1]
70
+ node.add_namespace_definition(ns_name, value)
71
+ return true
72
+ end
73
+ false
74
+ end
75
+
71
76
  def create_element(node, prefix, *args)
72
- node = @raw.create_element(node) do |n|
73
- if prefix
74
- if namespace = prefix_valid?(prefix)
75
- # Adding namespace prefix
76
- n.namespace = namespace
77
- namespace = nil
78
- end
77
+ n = @raw.create_element(node)
78
+ if prefix
79
+ if namespace = find_prefix(prefix)
80
+ n.namespace = namespace
79
81
  end
82
+ end
80
83
 
81
- args.each do |arg|
82
- case arg
84
+ args.each do |arg|
85
+ if arg.kind_of? Hash
83
86
  # Adding XML attributes
84
- when Hash
85
- arg.each { |k,v|
86
- key = k.to_s
87
- if key =~ /^xmlns(:\w+)?$/
88
- ns_name = key.split(":", 2)[1]
89
- n.add_namespace_definition(ns_name, v)
90
- next
91
- end
92
- n[k.to_s] = v.to_s
93
- }
87
+ arg.each { |k,v|
88
+ key = k.to_s
89
+ n[key] = v.to_s unless apply_namespace(n, key, v)
90
+ }
91
+ elsif arg.kind_of?(Time) || arg.kind_of?(DateTime)
94
92
  # Adding XML node content
95
- else
96
- content = arg.kind_of?(Time) || arg.kind_of?(DateTime) ? arg.xmlschema : arg
97
- n.content = content
98
- end
93
+ n.content = arg.xmlschema
94
+ else
95
+ n.content = arg
99
96
  end
100
97
  end
98
+ n
101
99
  end
102
100
 
103
- def prefix_valid?(prefix)
104
- ns = @parent.namespace_definitions.find { |x| x.prefix == prefix.to_s }
105
-
106
- unless ns
107
- @parent.ancestors.each do |a|
108
- next if a == @raw
109
- ns = a.namespace_definitions.find { |x| x.prefix == prefix.to_s }
110
- break if ns
111
- end
101
+ def find_prefix(prefix)
102
+ all = [@parent] + @parent.ancestors
103
+ all.each do |a|
104
+ return a.namespace_definitions.find { |x| x.prefix == prefix.to_s } if a != @raw
112
105
  end
113
-
114
- return ns
115
106
  end
116
107
 
117
108
  end
@@ -49,10 +49,8 @@ module Tokamak
49
49
  extend @content_type_helpers
50
50
  context = eval("(class << self; self; end)", binding)
51
51
 
52
- unless caller_binding[:locals].nil?
53
- caller_binding[:locals].each do |k, v|
54
- context.send(:define_method, k.to_sym) { v }
55
- end
52
+ caller_binding.fetch(:locals, {}).each do |k, v|
53
+ context.send(:define_method, k.to_sym) { v }
56
54
  end
57
55
 
58
56
  partial(partial_path, binding)
@@ -6,12 +6,15 @@ module Tokamak
6
6
 
7
7
  class TokamakTemplate < ::Tilt::Template
8
8
  def initialize_engine
9
- return if defined?(::Tokamak)
10
9
  require_template_library 'tokamak'
11
10
  end
12
11
 
12
+ def self.engine_initialized?
13
+ defined? ::Tokamak
14
+ end
15
+
13
16
  def prepare
14
- @media_type = options[:media_type]
17
+ @media_type = options[:media_type] || @options[:media_type]
15
18
  raise Tokamak::BuilderError.new("Content type required to build representation.") unless @media_type
16
19
  end
17
20
 
@@ -1,8 +1,8 @@
1
1
  module Tokamak
2
2
  module VERSION #:nodoc:
3
3
  MAJOR = 1
4
- MINOR = 1
5
- TINY = 5
4
+ MINOR = 2
5
+ TINY = 0
6
6
 
7
7
  STRING = [MAJOR, MINOR, TINY].join('.')
8
8
 
@@ -1273,3 +1273,333 @@ Completed in 13ms (View: 11 | 200 OK [http://www.example.com/test/feed]
1273
1273
  Processing TestController#show (for 127.0.0.1 at 2011-02-24 08:48:44) [GET]
1274
1274
  Rendering test/show
1275
1275
  Completed in 4ms (View: 2 | 200 OK [http://www.example.com/test/show]
1276
+
1277
+
1278
+ Processing TestController#show (for 127.0.0.1 at 2011-03-31 08:56:03) [GET]
1279
+ Rendering test/show
1280
+ Completed in 7ms (View: 6 | 200 OK [http://www.example.com/test/show]
1281
+
1282
+
1283
+ Processing TestController#feed (for 127.0.0.1 at 2011-03-31 08:56:03) [GET]
1284
+ Rendering test/feed
1285
+ Completed in 13ms (View: 11 | 200 OK [http://www.example.com/test/feed]
1286
+
1287
+
1288
+ Processing TestController#show (for 127.0.0.1 at 2011-03-31 08:56:03) [GET]
1289
+ Rendering test/show
1290
+ Completed in 4ms (View: 2 | 200 OK [http://www.example.com/test/show]
1291
+
1292
+
1293
+ Processing TestController#show (for 127.0.0.1 at 2011-03-31 09:20:43) [GET]
1294
+ Rendering test/show
1295
+ Completed in 7ms (View: 6 | 200 OK [http://www.example.com/test/show]
1296
+
1297
+
1298
+ Processing TestController#feed (for 127.0.0.1 at 2011-03-31 09:20:43) [GET]
1299
+ Rendering test/feed
1300
+ Completed in 13ms (View: 11 | 200 OK [http://www.example.com/test/feed]
1301
+
1302
+
1303
+ Processing TestController#show (for 127.0.0.1 at 2011-03-31 09:20:43) [GET]
1304
+ Rendering test/show
1305
+ Completed in 4ms (View: 2 | 200 OK [http://www.example.com/test/show]
1306
+
1307
+
1308
+ Processing TestController#show (for 127.0.0.1 at 2011-03-31 09:22:10) [GET]
1309
+ Rendering test/show
1310
+ Completed in 7ms (View: 6 | 200 OK [http://www.example.com/test/show]
1311
+
1312
+
1313
+ Processing TestController#feed (for 127.0.0.1 at 2011-03-31 09:22:10) [GET]
1314
+ Rendering test/feed
1315
+ Completed in 13ms (View: 11 | 200 OK [http://www.example.com/test/feed]
1316
+
1317
+
1318
+ Processing TestController#show (for 127.0.0.1 at 2011-03-31 09:22:10) [GET]
1319
+ Rendering test/show
1320
+ Completed in 4ms (View: 2 | 200 OK [http://www.example.com/test/show]
1321
+
1322
+
1323
+ Processing TestController#show (for 127.0.0.1 at 2011-03-31 09:38:07) [GET]
1324
+ Rendering test/show
1325
+ Completed in 7ms (View: 6 | 200 OK [http://www.example.com/test/show]
1326
+
1327
+
1328
+ Processing TestController#feed (for 127.0.0.1 at 2011-03-31 09:38:07) [GET]
1329
+ Rendering test/feed
1330
+ Completed in 13ms (View: 11 | 200 OK [http://www.example.com/test/feed]
1331
+
1332
+
1333
+ Processing TestController#show (for 127.0.0.1 at 2011-03-31 09:38:07) [GET]
1334
+ Rendering test/show
1335
+ Completed in 4ms (View: 2 | 200 OK [http://www.example.com/test/show]
1336
+
1337
+
1338
+ Processing TestController#show (for 127.0.0.1 at 2011-03-31 09:40:31) [GET]
1339
+ Rendering test/show
1340
+ Completed in 7ms (View: 6 | 200 OK [http://www.example.com/test/show]
1341
+
1342
+
1343
+ Processing TestController#feed (for 127.0.0.1 at 2011-03-31 09:40:31) [GET]
1344
+ Rendering test/feed
1345
+ Completed in 14ms (View: 12 | 200 OK [http://www.example.com/test/feed]
1346
+
1347
+
1348
+ Processing TestController#show (for 127.0.0.1 at 2011-03-31 09:40:31) [GET]
1349
+ Rendering test/show
1350
+ Completed in 4ms (View: 2 | 200 OK [http://www.example.com/test/show]
1351
+
1352
+
1353
+ Processing TestController#show (for 127.0.0.1 at 2011-03-31 09:44:17) [GET]
1354
+ Rendering test/show
1355
+ Completed in 7ms (View: 6 | 200 OK [http://www.example.com/test/show]
1356
+
1357
+
1358
+ Processing TestController#feed (for 127.0.0.1 at 2011-03-31 09:44:17) [GET]
1359
+ Rendering test/feed
1360
+ Completed in 13ms (View: 11 | 200 OK [http://www.example.com/test/feed]
1361
+
1362
+
1363
+ Processing TestController#show (for 127.0.0.1 at 2011-03-31 09:44:17) [GET]
1364
+ Rendering test/show
1365
+ Completed in 4ms (View: 2 | 200 OK [http://www.example.com/test/show]
1366
+
1367
+
1368
+ Processing TestController#show (for 127.0.0.1 at 2011-03-31 09:45:06) [GET]
1369
+ Rendering test/show
1370
+ Completed in 7ms (View: 6 | 200 OK [http://www.example.com/test/show]
1371
+
1372
+
1373
+ Processing TestController#feed (for 127.0.0.1 at 2011-03-31 09:45:06) [GET]
1374
+ Rendering test/feed
1375
+ Completed in 13ms (View: 12 | 200 OK [http://www.example.com/test/feed]
1376
+
1377
+
1378
+ Processing TestController#show (for 127.0.0.1 at 2011-03-31 09:45:06) [GET]
1379
+ Rendering test/show
1380
+ Completed in 4ms (View: 2 | 200 OK [http://www.example.com/test/show]
1381
+
1382
+
1383
+ Processing TestController#show (for 127.0.0.1 at 2011-03-31 10:08:49) [GET]
1384
+ Rendering test/show
1385
+ Completed in 7ms (View: 6 | 200 OK [http://www.example.com/test/show]
1386
+
1387
+
1388
+ Processing TestController#feed (for 127.0.0.1 at 2011-03-31 10:08:49) [GET]
1389
+ Rendering test/feed
1390
+ Completed in 13ms (View: 12 | 200 OK [http://www.example.com/test/feed]
1391
+
1392
+
1393
+ Processing TestController#show (for 127.0.0.1 at 2011-03-31 10:08:49) [GET]
1394
+ Rendering test/show
1395
+ Completed in 4ms (View: 2 | 200 OK [http://www.example.com/test/show]
1396
+
1397
+
1398
+ Processing TestController#show (for 127.0.0.1 at 2011-03-31 10:11:55) [GET]
1399
+ Rendering test/show
1400
+ Completed in 7ms (View: 6 | 200 OK [http://www.example.com/test/show]
1401
+
1402
+
1403
+ Processing TestController#feed (for 127.0.0.1 at 2011-03-31 10:11:55) [GET]
1404
+ Rendering test/feed
1405
+ Completed in 13ms (View: 11 | 200 OK [http://www.example.com/test/feed]
1406
+
1407
+
1408
+ Processing TestController#show (for 127.0.0.1 at 2011-03-31 10:11:55) [GET]
1409
+ Rendering test/show
1410
+ Completed in 4ms (View: 2 | 200 OK [http://www.example.com/test/show]
1411
+
1412
+
1413
+ Processing TestController#show (for 127.0.0.1 at 2011-03-31 10:15:42) [GET]
1414
+ Rendering test/show
1415
+ Completed in 7ms (View: 6 | 200 OK [http://www.example.com/test/show]
1416
+
1417
+
1418
+ Processing TestController#feed (for 127.0.0.1 at 2011-03-31 10:15:42) [GET]
1419
+ Rendering test/feed
1420
+ Completed in 12ms (View: 11 | 200 OK [http://www.example.com/test/feed]
1421
+
1422
+
1423
+ Processing TestController#show (for 127.0.0.1 at 2011-03-31 10:15:42) [GET]
1424
+ Rendering test/show
1425
+ Completed in 3ms (View: 2 | 200 OK [http://www.example.com/test/show]
1426
+
1427
+
1428
+ Processing TestController#show (for 127.0.0.1 at 2011-03-31 10:18:38) [GET]
1429
+ Rendering test/show
1430
+ Completed in 7ms (View: 6 | 200 OK [http://www.example.com/test/show]
1431
+
1432
+
1433
+ Processing TestController#feed (for 127.0.0.1 at 2011-03-31 10:18:39) [GET]
1434
+ Rendering test/feed
1435
+ Completed in 12ms (View: 11 | 200 OK [http://www.example.com/test/feed]
1436
+
1437
+
1438
+ Processing TestController#show (for 127.0.0.1 at 2011-03-31 10:18:39) [GET]
1439
+ Rendering test/show
1440
+ Completed in 3ms (View: 2 | 200 OK [http://www.example.com/test/show]
1441
+
1442
+
1443
+ Processing TestController#show (for 127.0.0.1 at 2011-03-31 10:21:31) [GET]
1444
+ Rendering test/show
1445
+ Completed in 7ms (View: 6 | 200 OK [http://www.example.com/test/show]
1446
+
1447
+
1448
+ Processing TestController#feed (for 127.0.0.1 at 2011-03-31 10:21:31) [GET]
1449
+ Rendering test/feed
1450
+ Completed in 12ms (View: 11 | 200 OK [http://www.example.com/test/feed]
1451
+
1452
+
1453
+ Processing TestController#show (for 127.0.0.1 at 2011-03-31 10:21:31) [GET]
1454
+ Rendering test/show
1455
+ Completed in 3ms (View: 2 | 200 OK [http://www.example.com/test/show]
1456
+
1457
+
1458
+ Processing TestController#show (for 127.0.0.1 at 2011-03-31 10:28:16) [GET]
1459
+ Rendering test/show
1460
+ Completed in 7ms (View: 6 | 200 OK [http://www.example.com/test/show]
1461
+
1462
+
1463
+ Processing TestController#feed (for 127.0.0.1 at 2011-03-31 10:28:16) [GET]
1464
+ Rendering test/feed
1465
+ Completed in 12ms (View: 11 | 200 OK [http://www.example.com/test/feed]
1466
+
1467
+
1468
+ Processing TestController#show (for 127.0.0.1 at 2011-03-31 10:28:16) [GET]
1469
+ Rendering test/show
1470
+ Completed in 3ms (View: 2 | 200 OK [http://www.example.com/test/show]
1471
+
1472
+
1473
+ Processing TestController#show (for 127.0.0.1 at 2011-03-31 10:28:20) [GET]
1474
+ Rendering test/show
1475
+ Completed in 7ms (View: 6 | 200 OK [http://www.example.com/test/show]
1476
+
1477
+
1478
+ Processing TestController#feed (for 127.0.0.1 at 2011-03-31 10:28:20) [GET]
1479
+ Rendering test/feed
1480
+ Completed in 12ms (View: 11 | 200 OK [http://www.example.com/test/feed]
1481
+
1482
+
1483
+ Processing TestController#show (for 127.0.0.1 at 2011-03-31 10:28:20) [GET]
1484
+ Rendering test/show
1485
+ Completed in 3ms (View: 2 | 200 OK [http://www.example.com/test/show]
1486
+
1487
+
1488
+ Processing TestController#show (for 127.0.0.1 at 2011-03-31 11:26:20) [GET]
1489
+ Rendering test/show
1490
+ Completed in 7ms (View: 6 | 200 OK [http://www.example.com/test/show]
1491
+
1492
+
1493
+ Processing TestController#feed (for 127.0.0.1 at 2011-03-31 11:26:20) [GET]
1494
+ Rendering test/feed
1495
+ Completed in 12ms (View: 11 | 200 OK [http://www.example.com/test/feed]
1496
+
1497
+
1498
+ Processing TestController#show (for 127.0.0.1 at 2011-03-31 11:26:20) [GET]
1499
+ Rendering test/show
1500
+ Completed in 3ms (View: 2 | 200 OK [http://www.example.com/test/show]
1501
+
1502
+
1503
+ Processing TestController#show (for 127.0.0.1 at 2011-03-31 11:26:38) [GET]
1504
+ Rendering test/show
1505
+ Completed in 7ms (View: 6 | 200 OK [http://www.example.com/test/show]
1506
+
1507
+
1508
+ Processing TestController#feed (for 127.0.0.1 at 2011-03-31 11:26:38) [GET]
1509
+ Rendering test/feed
1510
+ Completed in 12ms (View: 11 | 200 OK [http://www.example.com/test/feed]
1511
+
1512
+
1513
+ Processing TestController#show (for 127.0.0.1 at 2011-03-31 11:26:38) [GET]
1514
+ Rendering test/show
1515
+ Completed in 3ms (View: 2 | 200 OK [http://www.example.com/test/show]
1516
+
1517
+
1518
+ Processing TestController#show (for 127.0.0.1 at 2011-03-31 11:27:18) [GET]
1519
+ Rendering test/show
1520
+ Completed in 7ms (View: 6 | 200 OK [http://www.example.com/test/show]
1521
+
1522
+
1523
+ Processing TestController#feed (for 127.0.0.1 at 2011-03-31 11:27:18) [GET]
1524
+ Rendering test/feed
1525
+ Completed in 12ms (View: 11 | 200 OK [http://www.example.com/test/feed]
1526
+
1527
+
1528
+ Processing TestController#show (for 127.0.0.1 at 2011-03-31 11:27:18) [GET]
1529
+ Rendering test/show
1530
+ Completed in 3ms (View: 2 | 200 OK [http://www.example.com/test/show]
1531
+
1532
+
1533
+ Processing TestController#show (for 127.0.0.1 at 2011-03-31 11:28:47) [GET]
1534
+ Rendering test/show
1535
+ Completed in 7ms (View: 6 | 200 OK [http://www.example.com/test/show]
1536
+
1537
+
1538
+ Processing TestController#feed (for 127.0.0.1 at 2011-03-31 11:28:47) [GET]
1539
+ Rendering test/feed
1540
+ Completed in 12ms (View: 11 | 200 OK [http://www.example.com/test/feed]
1541
+
1542
+
1543
+ Processing TestController#show (for 127.0.0.1 at 2011-03-31 11:28:47) [GET]
1544
+ Rendering test/show
1545
+ Completed in 3ms (View: 2 | 200 OK [http://www.example.com/test/show]
1546
+
1547
+
1548
+ Processing TestController#show (for 127.0.0.1 at 2011-03-31 11:29:05) [GET]
1549
+ Rendering test/show
1550
+ Completed in 7ms (View: 6 | 200 OK [http://www.example.com/test/show]
1551
+
1552
+
1553
+ Processing TestController#feed (for 127.0.0.1 at 2011-03-31 11:29:05) [GET]
1554
+ Rendering test/feed
1555
+ Completed in 12ms (View: 11 | 200 OK [http://www.example.com/test/feed]
1556
+
1557
+
1558
+ Processing TestController#show (for 127.0.0.1 at 2011-03-31 11:29:05) [GET]
1559
+ Rendering test/show
1560
+ Completed in 3ms (View: 2 | 200 OK [http://www.example.com/test/show]
1561
+
1562
+
1563
+ Processing TestController#show (for 127.0.0.1 at 2011-03-31 11:29:22) [GET]
1564
+ Rendering test/show
1565
+ Completed in 7ms (View: 6 | 200 OK [http://www.example.com/test/show]
1566
+
1567
+
1568
+ Processing TestController#feed (for 127.0.0.1 at 2011-03-31 11:29:22) [GET]
1569
+ Rendering test/feed
1570
+ Completed in 12ms (View: 11 | 200 OK [http://www.example.com/test/feed]
1571
+
1572
+
1573
+ Processing TestController#show (for 127.0.0.1 at 2011-03-31 11:29:22) [GET]
1574
+ Rendering test/show
1575
+ Completed in 3ms (View: 2 | 200 OK [http://www.example.com/test/show]
1576
+
1577
+
1578
+ Processing TestController#show (for 127.0.0.1 at 2011-03-31 11:29:49) [GET]
1579
+ Rendering test/show
1580
+ Completed in 8ms (View: 6 | 200 OK [http://www.example.com/test/show]
1581
+
1582
+
1583
+ Processing TestController#feed (for 127.0.0.1 at 2011-03-31 11:29:49) [GET]
1584
+ Rendering test/feed
1585
+ Completed in 12ms (View: 11 | 200 OK [http://www.example.com/test/feed]
1586
+
1587
+
1588
+ Processing TestController#show (for 127.0.0.1 at 2011-03-31 11:29:49) [GET]
1589
+ Rendering test/show
1590
+ Completed in 3ms (View: 2 | 200 OK [http://www.example.com/test/show]
1591
+
1592
+
1593
+ Processing TestController#show (for 127.0.0.1 at 2011-03-31 11:42:32) [GET]
1594
+ Rendering test/show
1595
+ Completed in 7ms (View: 6 | 200 OK [http://www.example.com/test/show]
1596
+
1597
+
1598
+ Processing TestController#feed (for 127.0.0.1 at 2011-03-31 11:42:32) [GET]
1599
+ Rendering test/feed
1600
+ Completed in 12ms (View: 11 | 200 OK [http://www.example.com/test/feed]
1601
+
1602
+
1603
+ Processing TestController#show (for 127.0.0.1 at 2011-03-31 11:42:33) [GET]
1604
+ Rendering test/show
1605
+ Completed in 3ms (View: 2 | 200 OK [http://www.example.com/test/show]
@@ -17,6 +17,11 @@ class Tokamak::Builder::BaseTest < Test::Unit::TestCase
17
17
  def test_should_support_media_type_registering
18
18
  assert_equal ["valid/media_type"] , SomeBuilder.media_types
19
19
  assert_equal ["valid/media_type","another_valid/media_type"], AnotherBuilder.media_types
20
+
21
+ AnotherBuilder.add_media_type "awesome/media_type"
22
+
23
+ assert_equal ["valid/media_type","another_valid/media_type","awesome/media_type"], AnotherBuilder.media_types
24
+ assert_equal AnotherBuilder , Tokamak.builder_lookup("awesome/media_type")
20
25
  end
21
26
 
22
27
  def test_builder_lookup
@@ -24,5 +29,5 @@ class Tokamak::Builder::BaseTest < Test::Unit::TestCase
24
29
  assert_equal AnotherBuilder , Tokamak.builder_lookup("another_valid/media_type")
25
30
  assert_equal YetAnotherBuilder, Tokamak.builder_lookup("yet_another_valid/media_type")
26
31
  end
27
-
32
+
28
33
  end
@@ -27,6 +27,29 @@ class Tokamak::Builder::JsonTest < Test::Unit::TestCase
27
27
  assert hash.members.kind_of?(Array)
28
28
  end
29
29
 
30
+ def test_empty_value_as_nil
31
+ obj = [{ :foo => "bar" }]
32
+ json = Tokamak::Builder::Json.build(obj) do |collection|
33
+ collection.values do |values|
34
+ values.id "an_id"
35
+ values.empty_value
36
+ end
37
+
38
+ collection.members do |member, some_foos|
39
+ member.values do |values|
40
+ values.id some_foos[:foo]
41
+ end
42
+ end
43
+ end
44
+
45
+ hash = JSON.parse(json).extend(Methodize)
46
+
47
+ assert_equal nil , hash.empty_value
48
+ assert_equal "an_id", hash.id
49
+ assert_equal "bar" , hash.members.first.id
50
+ assert hash.members.kind_of?(Array)
51
+ end
52
+
30
53
  def test_root_set_on_builder
31
54
  obj = [{ :foo => "bar" }, { :foo => "zue" }]
32
55
  json = Tokamak::Builder::Json.build(obj, :root => "foos") do |collection|
@@ -74,7 +74,7 @@ class Tokamak::Builder::XmlTest < Test::Unit::TestCase
74
74
  obj = 42
75
75
 
76
76
  assert_raise Tokamak::BuilderError do
77
- json = Tokamak::Builder::Json.build(obj) do |collection, number|
77
+ json = Tokamak::Builder::Xml.build(obj) do |collection, number|
78
78
  collection.values do |values|
79
79
  values.id number
80
80
  end
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: tokamak
3
3
  version: !ruby/object:Gem::Version
4
- hash: 25
4
+ hash: 31
5
5
  prerelease: false
6
6
  segments:
7
7
  - 1
8
- - 1
9
- - 5
10
- version: 1.1.5
8
+ - 2
9
+ - 0
10
+ version: 1.2.0
11
11
  platform: ruby
12
12
  authors:
13
13
  - Luis Cipriani
@@ -15,7 +15,7 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2011-02-24 00:00:00 -03:00
18
+ date: 2011-05-11 00:00:00 -03:00
19
19
  default_executable:
20
20
  dependencies:
21
21
  - !ruby/object:Gem::Dependency