brianmario-yajl-ruby 0.3.4 → 0.4.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (82) hide show
  1. data/.gitignore +4 -0
  2. data/CHANGELOG.rdoc +13 -0
  3. data/MIT-LICENSE +20 -0
  4. data/README.rdoc +39 -3
  5. data/Rakefile +4 -12
  6. data/VERSION.yml +2 -2
  7. data/benchmark/http.rb +28 -0
  8. data/benchmark/stream.rb +40 -0
  9. data/benchmark/subjects/contacts.json +1 -0
  10. data/benchmark/subjects/item.json +1 -0
  11. data/benchmark/subjects/ohai.json +1216 -0
  12. data/benchmark/subjects/twitter_search.json +1 -0
  13. data/benchmark/subjects/unicode.json +3315 -0
  14. data/benchmark/subjects/yelp.json +1 -0
  15. data/ext/extconf.rb +1 -0
  16. data/ext/yajl.c +86 -40
  17. data/ext/yajl.h +45 -0
  18. data/lib/yajl/http_stream.rb +67 -0
  19. data/lib/yajl.rb +32 -0
  20. data/specs/active_support_spec.rb +50 -0
  21. data/specs/fixtures/fail.15.json +1 -0
  22. data/specs/fixtures/fail.16.json +1 -0
  23. data/specs/fixtures/fail.17.json +1 -0
  24. data/specs/fixtures/fail.26.json +1 -0
  25. data/specs/fixtures/fail11.json +1 -0
  26. data/specs/fixtures/fail12.json +1 -0
  27. data/specs/fixtures/fail13.json +1 -0
  28. data/specs/fixtures/fail14.json +1 -0
  29. data/specs/fixtures/fail19.json +1 -0
  30. data/specs/fixtures/fail20.json +1 -0
  31. data/specs/fixtures/fail21.json +1 -0
  32. data/specs/fixtures/fail22.json +1 -0
  33. data/specs/fixtures/fail23.json +1 -0
  34. data/specs/fixtures/fail24.json +1 -0
  35. data/specs/fixtures/fail25.json +1 -0
  36. data/specs/fixtures/fail27.json +2 -0
  37. data/specs/fixtures/fail28.json +2 -0
  38. data/specs/fixtures/fail3.json +1 -0
  39. data/specs/fixtures/fail4.json +1 -0
  40. data/specs/fixtures/fail5.json +1 -0
  41. data/specs/fixtures/fail6.json +1 -0
  42. data/specs/fixtures/fail9.json +1 -0
  43. data/specs/fixtures/pass.array.json +6 -0
  44. data/specs/fixtures/pass.codepoints_from_unicode_org.json +1 -0
  45. data/specs/fixtures/pass.contacts.json +1 -0
  46. data/specs/fixtures/pass.db100.xml.json +1 -0
  47. data/specs/fixtures/pass.db1000.xml.json +1 -0
  48. data/specs/fixtures/pass.dc_simple_with_comments.json +11 -0
  49. data/specs/fixtures/pass.deep_arrays.json +1 -0
  50. data/specs/fixtures/pass.difficult_json_c_test_case.json +1 -0
  51. data/specs/fixtures/pass.difficult_json_c_test_case_with_comments.json +1 -0
  52. data/specs/fixtures/pass.doubles.json +1 -0
  53. data/specs/fixtures/pass.empty_array.json +1 -0
  54. data/specs/fixtures/pass.empty_string.json +1 -0
  55. data/specs/fixtures/pass.escaped_bulgarian.json +4 -0
  56. data/specs/fixtures/pass.escaped_foobar.json +1 -0
  57. data/specs/fixtures/pass.item.json +1 -0
  58. data/specs/fixtures/pass.json-org-sample1.json +23 -0
  59. data/specs/fixtures/pass.json-org-sample2.json +11 -0
  60. data/specs/fixtures/pass.json-org-sample3.json +26 -0
  61. data/specs/fixtures/pass.json-org-sample4-nows.json +88 -0
  62. data/specs/fixtures/pass.json-org-sample4.json +89 -0
  63. data/specs/fixtures/pass.json-org-sample5.json +27 -0
  64. data/specs/fixtures/pass.map-spain.xml.json +1 -0
  65. data/specs/fixtures/pass.ns-invoice100.xml.json +1 -0
  66. data/specs/fixtures/pass.ns-soap.xml.json +1 -0
  67. data/specs/fixtures/pass.numbers-fp-4k.json +6 -0
  68. data/specs/fixtures/pass.numbers-fp-64k.json +61 -0
  69. data/specs/fixtures/pass.numbers-int-4k.json +11 -0
  70. data/specs/fixtures/pass.numbers-int-64k.json +154 -0
  71. data/specs/fixtures/pass.twitter-search.json +1 -0
  72. data/specs/fixtures/pass.twitter-search2.json +1 -0
  73. data/specs/fixtures/pass.unicode.json +3315 -0
  74. data/specs/fixtures/pass.yelp.json +1 -0
  75. data/specs/fixtures/pass1.json +56 -0
  76. data/specs/fixtures/pass2.json +1 -0
  77. data/specs/fixtures/pass3.json +6 -0
  78. data/specs/fixtures_spec.rb +25 -0
  79. data/specs/one_off_spec.rb +11 -0
  80. data/specs/spec_helper.rb +4 -0
  81. data/yajl-ruby.gemspec +115 -0
  82. metadata +79 -2
@@ -0,0 +1,11 @@
1
+ {
2
+ "this": "is", // ignore this
3
+ "really": "simple",
4
+ /* ignore
5
+ this
6
+ too * /
7
+ ** //
8
+ (/
9
+ ******/
10
+ "json": "right?"
11
+ }
@@ -0,0 +1 @@
1
+ [[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]
@@ -0,0 +1 @@
1
+ { "glossary": { "title": "example glossary", "GlossDiv": { "title": "S", "GlossList": [ { "ID": "SGML", "SortAs": "SGML", "GlossTerm": "Standard Generalized Markup Language", "Acronym": "SGML", "Abbrev": "ISO 8879:1986", "GlossDef": "A meta-markup language, used to create markup languages such as DocBook.", "GlossSeeAlso": ["GML", "XML", "markup"] } ] } } }
@@ -0,0 +1 @@
1
+ { "glossary": { /* you */ "title": /**/ "example glossary", /*should*/"GlossDiv": { "title": /*never*/"S", /*ever*/"GlossList": [ { "ID": "SGML", "SortAs": "SGML", "GlossTerm": "Standard Generalized Markup Language", "Acronym": "SGML", "Abbrev": "ISO 8879:1986", "GlossDef": "A meta-markup language, used to create markup languages such as DocBook.", /*see*/"GlossSeeAlso"/*this*/:/*coming*/[/*out*/"GML"/*of*/,/*the*/"XML"/*parser!*/, "markup"] /*hey*/}/*ho*/]/*hey*/}/*ho*/} } // and the parser won't even get this far, so chill. /* hah!
@@ -0,0 +1 @@
1
+ [ 0.1e2, 1e1, 3.141569, 10000000000000e-10]
@@ -0,0 +1 @@
1
+ []
@@ -0,0 +1 @@
1
+ ""
@@ -0,0 +1,4 @@
1
+ ["\u0414\u0430",
2
+ "\u041c\u0443",
3
+ "\u0415\u0431\u0430",
4
+ "\u041c\u0430\u0439\u043a\u0430\u0442\u0430"]
@@ -0,0 +1 @@
1
+ "\u0066\u006f\u006f\u0062\u0061\u0072"
@@ -0,0 +1 @@
1
+ {"item": {"name": "generated", "cached_tag_list": "", "updated_at": "2009-03-24T05:25:09Z", "updated_by_id": null, "price": 1.99, "delta": false, "cost": 0.597, "account_id": 16, "unit": null, "import_tag": null, "taxable": true, "id": 1, "created_by_id": null, "description": null, "company_id": 0, "sku": "06317-0306", "created_at": "2009-03-24T05:25:09Z", "active": true}}
@@ -0,0 +1,23 @@
1
+ {
2
+ "glossary": {
3
+ "title": "example glossary",
4
+ "GlossDiv": {
5
+ "title": "S",
6
+ "GlossList": {
7
+ "GlossEntry": {
8
+ "ID": "SGML",
9
+ "SortAs": "SGML",
10
+ "GlossTerm": "Standard Generalized Markup Language",
11
+ "Acronym": "SGML",
12
+ "Abbrev": "ISO 8879:1986",
13
+ "GlossDef": {
14
+ "para": "A meta-markup language, used to create markup languages such as DocBook.",
15
+ "GlossSeeAlso": ["GML", "XML"]
16
+ },
17
+ "GlossSee": "markup"
18
+ }
19
+ }
20
+ }
21
+ }
22
+ }
23
+
@@ -0,0 +1,11 @@
1
+ {"menu": {
2
+ "id": "file",
3
+ "value": "File",
4
+ "popup": {
5
+ "menuitem": [
6
+ {"value": "New", "onclick": "CreateNewDoc()"},
7
+ {"value": "Open", "onclick": "OpenDoc()"},
8
+ {"value": "Close", "onclick": "CloseDoc()"}
9
+ ]
10
+ }
11
+ }}
@@ -0,0 +1,26 @@
1
+ {"widget": {
2
+ "debug": "on",
3
+ "window": {
4
+ "title": "Sample Konfabulator Widget",
5
+ "name": "main_window",
6
+ "width": 500,
7
+ "height": 500
8
+ },
9
+ "image": {
10
+ "src": "Images/Sun.png",
11
+ "name": "sun1",
12
+ "hOffset": 250,
13
+ "vOffset": 250,
14
+ "alignment": "center"
15
+ },
16
+ "text": {
17
+ "data": "Click Here",
18
+ "size": 36,
19
+ "style": "bold",
20
+ "name": "text1",
21
+ "hOffset": 250,
22
+ "vOffset": 100,
23
+ "alignment": "center",
24
+ "onMouseUp": "sun1.opacity = (sun1.opacity / 100) * 90;"
25
+ }
26
+ }}
@@ -0,0 +1,88 @@
1
+ {"web-app":{
2
+ "servlet":[
3
+ {
4
+ "servlet-name": "cofaxCDS",
5
+ "servlet-class": "org.cofax.cds.CDSServlet",
6
+ "init-param": {
7
+ "configGlossary:installationAt": "Philadelphia, PA",
8
+ "configGlossary:adminEmail": "ksm@pobox.com",
9
+ "configGlossary:poweredBy": "Cofax",
10
+ "configGlossary:poweredByIcon": "/images/cofax.gif",
11
+ "configGlossary:staticPath": "/content/static",
12
+ "templateProcessorClass": "org.cofax.WysiwygTemplate",
13
+ "templateLoaderClass": "org.cofax.FilesTemplateLoader",
14
+ "templatePath": "templates",
15
+ "templateOverridePath": "",
16
+ "defaultListTemplate": "listTemplate.htm",
17
+ "defaultFileTemplate": "articleTemplate.htm",
18
+ "useJSP": false,
19
+ "jspListTemplate": "listTemplate.jsp",
20
+ "jspFileTemplate": "articleTemplate.jsp",
21
+ "cachePackageTagsTrack": 200,
22
+ "cachePackageTagsStore": 200,
23
+ "cachePackageTagsRefresh": 60,
24
+ "cacheTemplatesTrack": 100,
25
+ "cacheTemplatesStore": 50,
26
+ "cacheTemplatesRefresh": 15,
27
+ "cachePagesTrack": 200,
28
+ "cachePagesStore": 100,
29
+ "cachePagesRefresh": 10,
30
+ "cachePagesDirtyRead": 10,
31
+ "searchEngineListTemplate": "forSearchEnginesList.htm",
32
+ "searchEngineFileTemplate": "forSearchEngines.htm",
33
+ "searchEngineRobotsDb": "WEB-INF/robots.db",
34
+ "useDataStore": true,
35
+ "dataStoreClass": "org.cofax.SqlDataStore",
36
+ "redirectionClass": "org.cofax.SqlRedirection",
37
+ "dataStoreName": "cofax",
38
+ "dataStoreDriver": "com.microsoft.jdbc.sqlserver.SQLServerDriver",
39
+ "dataStoreUrl": "jdbc:microsoft:sqlserver://LOCALHOST:1433;DatabaseName=goon",
40
+ "dataStoreUser": "sa",
41
+ "dataStorePassword": "dataStoreTestQuery",
42
+ "dataStoreTestQuery": "SET NOCOUNT ON;select test='test';",
43
+ "dataStoreLogFile": "/usr/local/tomcat/logs/datastore.log",
44
+ "dataStoreInitConns": 10,
45
+ "dataStoreMaxConns": 100,
46
+ "dataStoreConnUsageLimit": 100,
47
+ "dataStoreLogLevel": "debug",
48
+ "maxUrlLength": 500}},
49
+ {
50
+ "servlet-name": "cofaxEmail",
51
+ "servlet-class": "org.cofax.cds.EmailServlet",
52
+ "init-param": {
53
+ "mailHost": "mail1",
54
+ "mailHostOverride": "mail2"}},
55
+ {
56
+ "servlet-name": "cofaxAdmin",
57
+ "servlet-class": "org.cofax.cds.AdminServlet"},
58
+
59
+ {
60
+ "servlet-name": "fileServlet",
61
+ "servlet-class": "org.cofax.cds.FileServlet"},
62
+ {
63
+ "servlet-name": "cofaxTools",
64
+ "servlet-class": "org.cofax.cms.CofaxToolsServlet",
65
+ "init-param": {
66
+ "templatePath": "toolstemplates/",
67
+ "log": 1,
68
+ "logLocation": "/usr/local/tomcat/logs/CofaxTools.log",
69
+ "logMaxSize": "",
70
+ "dataLog": 1,
71
+ "dataLogLocation": "/usr/local/tomcat/logs/dataLog.log",
72
+ "dataLogMaxSize": "",
73
+ "removePageCache": "/content/admin/remove?cache=pages&id=",
74
+ "removeTemplateCache": "/content/admin/remove?cache=templates&id=",
75
+ "fileTransferFolder": "/usr/local/tomcat/webapps/content/fileTransferFolder",
76
+ "lookInContext": 1,
77
+ "adminGroupID": 4,
78
+ "betaServer": true}}],
79
+ "servlet-mapping": {
80
+ "cofaxCDS": "/",
81
+ "cofaxEmail": "/cofaxutil/aemail/*",
82
+ "cofaxAdmin": "/admin/*",
83
+ "fileServlet": "/static/*",
84
+ "cofaxTools": "/tools/*"},
85
+ "taglib": {
86
+ "taglib-uri": "cofax.tld",
87
+ "taglib-location": "/WEB-INF/tlds/cofax.tld"}
88
+ }}
@@ -0,0 +1,89 @@
1
+ {"web-app": {
2
+ "servlet": [
3
+ {
4
+ "servlet-name": "cofaxCDS",
5
+ "servlet-class": "org.cofax.cds.CDSServlet",
6
+ "init-param": {
7
+ "configGlossary:installationAt": "Philadelphia, PA",
8
+ "configGlossary:adminEmail": "ksm@pobox.com",
9
+ "configGlossary:poweredBy": "Cofax",
10
+ "configGlossary:poweredByIcon": "/images/cofax.gif",
11
+ "configGlossary:staticPath": "/content/static",
12
+ "templateProcessorClass": "org.cofax.WysiwygTemplate",
13
+ "templateLoaderClass": "org.cofax.FilesTemplateLoader",
14
+ "templatePath": "templates",
15
+ "templateOverridePath": "",
16
+ "defaultListTemplate": "listTemplate.htm",
17
+ "defaultFileTemplate": "articleTemplate.htm",
18
+ "useJSP": false,
19
+ "jspListTemplate": "listTemplate.jsp",
20
+ "jspFileTemplate": "articleTemplate.jsp",
21
+ "cachePackageTagsTrack": 200,
22
+ "cachePackageTagsStore": 200,
23
+ "cachePackageTagsRefresh": 60,
24
+ "cacheTemplatesTrack": 100,
25
+ "cacheTemplatesStore": 50,
26
+ "cacheTemplatesRefresh": 15,
27
+ "cachePagesTrack": 200,
28
+ "cachePagesStore": 100,
29
+ "cachePagesRefresh": 10,
30
+ "cachePagesDirtyRead": 10,
31
+ "searchEngineListTemplate": "forSearchEnginesList.htm",
32
+ "searchEngineFileTemplate": "forSearchEngines.htm",
33
+ "searchEngineRobotsDb": "WEB-INF/robots.db",
34
+ "useDataStore": true,
35
+ "dataStoreClass": "org.cofax.SqlDataStore",
36
+ "redirectionClass": "org.cofax.SqlRedirection",
37
+ "dataStoreName": "cofax",
38
+ "dataStoreDriver": "com.microsoft.jdbc.sqlserver.SQLServerDriver",
39
+ "dataStoreUrl": "jdbc:microsoft:sqlserver://LOCALHOST:1433;DatabaseName=goon",
40
+ "dataStoreUser": "sa",
41
+ "dataStorePassword": "dataStoreTestQuery",
42
+ "dataStoreTestQuery": "SET NOCOUNT ON;select test='test';",
43
+ "dataStoreLogFile": "/usr/local/tomcat/logs/datastore.log",
44
+ "dataStoreInitConns": 10,
45
+ "dataStoreMaxConns": 100,
46
+ "dataStoreConnUsageLimit": 100,
47
+ "dataStoreLogLevel": "debug",
48
+ "maxUrlLength": 500}},
49
+ {
50
+ "servlet-name": "cofaxEmail",
51
+ "servlet-class": "org.cofax.cds.EmailServlet",
52
+ "init-param": {
53
+ "mailHost": "mail1",
54
+ "mailHostOverride": "mail2"}},
55
+ {
56
+ "servlet-name": "cofaxAdmin",
57
+ "servlet-class": "org.cofax.cds.AdminServlet"},
58
+
59
+ {
60
+ "servlet-name": "fileServlet",
61
+ "servlet-class": "org.cofax.cds.FileServlet"},
62
+ {
63
+ "servlet-name": "cofaxTools",
64
+ "servlet-class": "org.cofax.cms.CofaxToolsServlet",
65
+ "init-param": {
66
+ "templatePath": "toolstemplates/",
67
+ "log": 1,
68
+ "logLocation": "/usr/local/tomcat/logs/CofaxTools.log",
69
+ "logMaxSize": "",
70
+ "dataLog": 1,
71
+ "dataLogLocation": "/usr/local/tomcat/logs/dataLog.log",
72
+ "dataLogMaxSize": "",
73
+ "removePageCache": "/content/admin/remove?cache=pages&id=",
74
+ "removeTemplateCache": "/content/admin/remove?cache=templates&id=",
75
+ "fileTransferFolder": "/usr/local/tomcat/webapps/content/fileTransferFolder",
76
+ "lookInContext": 1,
77
+ "adminGroupID": 4,
78
+ "betaServer": true}}],
79
+ "servlet-mapping": {
80
+ "cofaxCDS": "/",
81
+ "cofaxEmail": "/cofaxutil/aemail/*",
82
+ "cofaxAdmin": "/admin/*",
83
+ "fileServlet": "/static/*",
84
+ "cofaxTools": "/tools/*"},
85
+
86
+ "taglib": {
87
+ "taglib-uri": "cofax.tld",
88
+ "taglib-location": "/WEB-INF/tlds/cofax.tld"}
89
+ }}
@@ -0,0 +1,27 @@
1
+ {"menu": {
2
+ "header": "SVG Viewer",
3
+ "items": [
4
+ {"id": "Open"},
5
+ {"id": "OpenNew", "label": "Open New"},
6
+ null,
7
+ {"id": "ZoomIn", "label": "Zoom In"},
8
+ {"id": "ZoomOut", "label": "Zoom Out"},
9
+ {"id": "OriginalView", "label": "Original View"},
10
+ null,
11
+ {"id": "Quality"},
12
+ {"id": "Pause"},
13
+ {"id": "Mute"},
14
+ null,
15
+ {"id": "Find", "label": "Find..."},
16
+ {"id": "FindAgain", "label": "Find Again"},
17
+ {"id": "Copy"},
18
+ {"id": "CopyAgain", "label": "Copy Again"},
19
+ {"id": "CopySVG", "label": "Copy SVG"},
20
+ {"id": "ViewSVG", "label": "View SVG"},
21
+ {"id": "ViewSource", "label": "View Source"},
22
+ {"id": "SaveAs", "label": "Save As"},
23
+ null,
24
+ {"id": "Help"},
25
+ {"id": "About", "label": "About Adobe CVG Viewer..."}
26
+ ]
27
+ }}