diff options
author | murphy <murphy@rubychan.de> | 2008-10-08 20:18:31 +0000 |
---|---|---|
committer | murphy <murphy@rubychan.de> | 2008-10-08 20:18:31 +0000 |
commit | 23e5605488f613bd864671a322562ecfcb2d945d (patch) | |
tree | dd165d49db8bca9569e06748fbab92d77216a9e9 /test | |
parent | a4bd413ca4e835fd3d1fdc24eebce67cd54231ca (diff) | |
download | coderay-23e5605488f613bd864671a322562ecfcb2d945d.tar.gz |
New: *JSON* (closes #53). Version 0.8 is near!
* Simple and really nice scanner (I think), produces colorful output.
* Checked against strange examples from Ruby's JSON lib.
More changes:
* Changed version number. Finally!
* Added some token styles for :key token group.
* cYcnus style: chars inside of strings are highlighted purple instead of blue.
* murphy style needs work.
Diffstat (limited to 'test')
-rw-r--r-- | test/scanners/json/big.expected.raydebug | 295 | ||||
-rw-r--r-- | test/scanners/json/big.in.json | 295 | ||||
-rw-r--r-- | test/scanners/json/big2.expected.raydebug | 267 | ||||
-rw-r--r-- | test/scanners/json/big2.in.json | 267 | ||||
-rw-r--r-- | test/scanners/json/example.expected.raydebug | 22 | ||||
-rw-r--r-- | test/scanners/json/example.in.json | 22 | ||||
-rw-r--r-- | test/scanners/json/json-lib.expected.raydebug | 73 | ||||
-rw-r--r-- | test/scanners/json/json-lib.in.json | 73 | ||||
-rw-r--r-- | test/scanners/json/suite.rb | 2 |
9 files changed, 1316 insertions, 0 deletions
diff --git a/test/scanners/json/big.expected.raydebug b/test/scanners/json/big.expected.raydebug new file mode 100644 index 0000000..c72cb2b --- /dev/null +++ b/test/scanners/json/big.expected.raydebug @@ -0,0 +1,295 @@ +operator([) + operator({) + key<delimiter(")content(import_url)delimiter(")>operator(:) string<delimiter(")content(http:)char(\\/)char(\\/)content(localhost:3000)char(\\/)content(neighbourhoods)char(\\/)content(Neighbourhoods::Storage)char(\\/)content(import)delimiter(")>operator(,) + key<delimiter(")content(type)delimiter(")>operator(:) string<delimiter(")content(Neighbourhood)delimiter(")>operator(,) + key<delimiter(")content(reflected)delimiter(")>operator(:) reserved(false)operator(,) + key<delimiter(")content(selected)delimiter(")>operator(:) reserved(true)operator(,) + key<delimiter(")content(export_url)delimiter(")>operator(:) string<delimiter(")content(http:)char(\\/)char(\\/)content(localhost:3000)char(\\/)content(neighbourhoods)char(\\/)content(Neighbourhoods::Storage)char(\\/)content(export)delimiter(")>operator(,) + key<delimiter(")content(snapshots_url)delimiter(")>operator(:) string<delimiter(")content(http:)char(\\/)char(\\/)content(localhost:3000)char(\\/)content(snapshots)delimiter(")>operator(,) + key<delimiter(")content(uri)delimiter(")>operator(:) string<delimiter(")content(http:)char(\\/)char(\\/)content(localhost:3000)char(\\/)content(neighbourhoods)char(\\/)content(Neighbourhoods::Storage)char(\\/)content(lists)delimiter(")>operator(,) + key<delimiter(")content(print_url)delimiter(")>operator(:) string<delimiter(")content(http:)char(\\/)char(\\/)content(localhost:3000)char(\\/)content(neighbourhoods)char(\\/)content(Neighbourhoods::Storage)char(\\/)content(print)delimiter(")>operator(,) + key<delimiter(")content(locked)delimiter(")>operator(:) reserved(false)operator(,) + key<delimiter(")content(name)delimiter(")>operator(:) string<delimiter(")content(Lager)delimiter(")>operator(,) + key<delimiter(")content(lists)delimiter(")>operator(:) operator([) + operator({) + key<delimiter(")content(type)delimiter(")>operator(:) string<delimiter(")content(List)delimiter(")>operator(,) + key<delimiter(")content(sort_keys)delimiter(")>operator(:) operator({) + key<delimiter(")content(options)delimiter(")>operator(:) operator([) + operator({) + key<delimiter(")content(name)delimiter(")>operator(:) string<delimiter(")content(Standardsortierung)delimiter(")>operator(,) + key<delimiter(")content(id)delimiter(")>operator(:) reserved(null) + operator(}) + operator(]) + operator(})operator(,) + key<delimiter(")content(uri)delimiter(")>operator(:) string<delimiter(")content(http:)char(\\/)char(\\/)content(localhost:3000)char(\\/)content(lists)char(\\/)content(Lists::Manufacturers)char(\\/)content(elements.json)delimiter(")>operator(,) + key<delimiter(")content(sort_key_uri)delimiter(")>operator(:) string<delimiter(")content(http:)char(\\/)char(\\/)content(localhost:3000)char(\\/)content(lists)char(\\/)content(Lists::Manufacturers)char(\\/)content(sort_key)delimiter(")>operator(,) + key<delimiter(")content(name)delimiter(")>operator(:) string<delimiter(")content(Hersteller)delimiter(")>operator(,) + key<delimiter(")content(readable)delimiter(")>operator(:) reserved(true)operator(,) + key<delimiter(")content(id)delimiter(")>operator(:) string<delimiter(")content(Lists::Manufacturers)delimiter(")>operator(,) + key<delimiter(")content(element_types)delimiter(")>operator(:) operator([) + operator({) + key<delimiter(")content(create_element_url)delimiter(")>operator(:) string<delimiter(")content(http:)char(\\/)char(\\/)content(localhost:3000)char(\\/)content(elements?list=Lists%3A%3AManufacturers&type=Elements%3A%3AManufacturer)delimiter(")>operator(,) + key<delimiter(")content(essential_attributes)delimiter(")>operator(:) operator([) + operator(])operator(,) + key<delimiter(")content(name)delimiter(")>operator(:) string<delimiter(")content(Hersteller)delimiter(")>operator(,) + key<delimiter(")content(ask_for_email)delimiter(")>operator(:) reserved(false)operator(,) + key<delimiter(")content(id)delimiter(")>operator(:) string<delimiter(")content(Elements::Manufacturer)delimiter(")> + operator(}) + operator(])operator(,) + key<delimiter(")content(writable)delimiter(")>operator(:) reserved(true) + operator(})operator(,) + operator({) + key<delimiter(")content(type)delimiter(")>operator(:) string<delimiter(")content(List)delimiter(")>operator(,) + key<delimiter(")content(sort_keys)delimiter(")>operator(:) operator({) + key<delimiter(")content(options)delimiter(")>operator(:) operator([) + operator({) + key<delimiter(")content(name)delimiter(")>operator(:) string<delimiter(")content(Standardsortierung)delimiter(")>operator(,) + key<delimiter(")content(id)delimiter(")>operator(:) reserved(null) + operator(}) + operator(]) + operator(})operator(,) + key<delimiter(")content(uri)delimiter(")>operator(:) string<delimiter(")content(http:)char(\\/)char(\\/)content(localhost:3000)char(\\/)content(lists)char(\\/)content(Lists::Categories)char(\\/)content(elements.json)delimiter(")>operator(,) + key<delimiter(")content(sort_key_uri)delimiter(")>operator(:) string<delimiter(")content(http:)char(\\/)char(\\/)content(localhost:3000)char(\\/)content(lists)char(\\/)content(Lists::Categories)char(\\/)content(sort_key)delimiter(")>operator(,) + key<delimiter(")content(name)delimiter(")>operator(:) string<delimiter(")content(Rubriken)delimiter(")>operator(,) + key<delimiter(")content(readable)delimiter(")>operator(:) reserved(true)operator(,) + key<delimiter(")content(id)delimiter(")>operator(:) string<delimiter(")content(Lists::Categories)delimiter(")>operator(,) + key<delimiter(")content(element_types)delimiter(")>operator(:) operator([) + operator({) + key<delimiter(")content(create_element_url)delimiter(")>operator(:) string<delimiter(")content(http:)char(\\/)char(\\/)content(localhost:3000)char(\\/)content(elements?list=Lists%3A%3ACategories&type=Elements%3A%3ACategory)delimiter(")>operator(,) + key<delimiter(")content(essential_attributes)delimiter(")>operator(:) operator([) + operator(])operator(,) + key<delimiter(")content(name)delimiter(")>operator(:) string<delimiter(")content(Rubrik)delimiter(")>operator(,) + key<delimiter(")content(ask_for_email)delimiter(")>operator(:) reserved(false)operator(,) + key<delimiter(")content(id)delimiter(")>operator(:) string<delimiter(")content(Elements::Category)delimiter(")> + operator(}) + operator(])operator(,) + key<delimiter(")content(writable)delimiter(")>operator(:) reserved(true) + operator(})operator(,) + operator({) + key<delimiter(")content(type)delimiter(")>operator(:) string<delimiter(")content(List)delimiter(")>operator(,) + key<delimiter(")content(sort_keys)delimiter(")>operator(:) operator({) + key<delimiter(")content(options)delimiter(")>operator(:) operator([) + operator({) + key<delimiter(")content(name)delimiter(")>operator(:) string<delimiter(")content(Standardsortierung)delimiter(")>operator(,) + key<delimiter(")content(id)delimiter(")>operator(:) reserved(null) + operator(}) + operator(]) + operator(})operator(,) + key<delimiter(")content(uri)delimiter(")>operator(:) string<delimiter(")content(http:)char(\\/)char(\\/)content(localhost:3000)char(\\/)content(lists)char(\\/)content(Lists::ArticlesList)char(\\/)content(elements.json)delimiter(")>operator(,) + key<delimiter(")content(sort_key_uri)delimiter(")>operator(:) string<delimiter(")content(http:)char(\\/)char(\\/)content(localhost:3000)char(\\/)content(lists)char(\\/)content(Lists::ArticlesList)char(\\/)content(sort_key)delimiter(")>operator(,) + key<delimiter(")content(name)delimiter(")>operator(:) string<delimiter(")content(Artikel)delimiter(")>operator(,) + key<delimiter(")content(readable)delimiter(")>operator(:) reserved(true)operator(,) + key<delimiter(")content(id)delimiter(")>operator(:) string<delimiter(")content(Lists::ArticlesList)delimiter(")>operator(,) + key<delimiter(")content(element_types)delimiter(")>operator(:) operator([) + operator({) + key<delimiter(")content(create_element_url)delimiter(")>operator(:) string<delimiter(")content(http:)char(\\/)char(\\/)content(localhost:3000)char(\\/)content(elements?list=Lists%3A%3AArticlesList&type=Elements%3A%3AArticle)delimiter(")>operator(,) + key<delimiter(")content(essential_attributes)delimiter(")>operator(:) operator([) + operator(])operator(,) + key<delimiter(")content(name)delimiter(")>operator(:) string<delimiter(")content(Artikel)delimiter(")>operator(,) + key<delimiter(")content(ask_for_email)delimiter(")>operator(:) reserved(false)operator(,) + key<delimiter(")content(id)delimiter(")>operator(:) string<delimiter(")content(Elements::Article)delimiter(")> + operator(}) + operator(])operator(,) + key<delimiter(")content(writable)delimiter(")>operator(:) reserved(true) + operator(})operator(,) + operator({) + key<delimiter(")content(type)delimiter(")>operator(:) string<delimiter(")content(List)delimiter(")>operator(,) + key<delimiter(")content(sort_keys)delimiter(")>operator(:) operator({) + key<delimiter(")content(options)delimiter(")>operator(:) operator([) + operator({) + key<delimiter(")content(name)delimiter(")>operator(:) string<delimiter(")content(Standardsortierung)delimiter(")>operator(,) + key<delimiter(")content(id)delimiter(")>operator(:) reserved(null) + operator(})operator(,) + operator({) + key<delimiter(")content(name)delimiter(")>operator(:) string<delimiter(")content(Bestelldatum)delimiter(")>operator(,) + key<delimiter(")content(id)delimiter(")>operator(:) string<delimiter(")content(Date)delimiter(")> + operator(})operator(,) + operator({) + key<delimiter(")content(name)delimiter(")>operator(:) string<delimiter(")content(bestellt von)delimiter(")>operator(,) + key<delimiter(")content(id)delimiter(")>operator(:) string<delimiter(")content(OrderedBy)delimiter(")> + operator(})operator(,) + operator({) + key<delimiter(")content(name)delimiter(")>operator(:) string<delimiter(")content(Summe)delimiter(")>operator(,) + key<delimiter(")content(id)delimiter(")>operator(:) string<delimiter(")content(Total)delimiter(")> + operator(}) + operator(]) + operator(})operator(,) + key<delimiter(")content(uri)delimiter(")>operator(:) string<delimiter(")content(http:)char(\\/)char(\\/)content(localhost:3000)char(\\/)content(lists)char(\\/)content(Lists::Orders)char(\\/)content(elements.json)delimiter(")>operator(,) + key<delimiter(")content(sort_key_uri)delimiter(")>operator(:) string<delimiter(")content(http:)char(\\/)char(\\/)content(localhost:3000)char(\\/)content(lists)char(\\/)content(Lists::Orders)char(\\/)content(sort_key)delimiter(")>operator(,) + key<delimiter(")content(name)delimiter(")>operator(:) string<delimiter(")content(Bestellungen)delimiter(")>operator(,) + key<delimiter(")content(readable)delimiter(")>operator(:) reserved(true)operator(,) + key<delimiter(")content(id)delimiter(")>operator(:) string<delimiter(")content(Lists::Orders)delimiter(")>operator(,) + key<delimiter(")content(element_types)delimiter(")>operator(:) operator([) + operator({) + key<delimiter(")content(create_element_url)delimiter(")>operator(:) string<delimiter(")content(http:)char(\\/)char(\\/)content(localhost:3000)char(\\/)content(elements?list=Lists%3A%3AOrders&type=Elements%3A%3AOrder)delimiter(")>operator(,) + key<delimiter(")content(essential_attributes)delimiter(")>operator(:) operator([) + operator(])operator(,) + key<delimiter(")content(name)delimiter(")>operator(:) string<delimiter(")content(Bestellung)delimiter(")>operator(,) + key<delimiter(")content(ask_for_email)delimiter(")>operator(:) reserved(false)operator(,) + key<delimiter(")content(id)delimiter(")>operator(:) string<delimiter(")content(Elements::Order)delimiter(")> + operator(}) + operator(])operator(,) + key<delimiter(")content(writable)delimiter(")>operator(:) reserved(true) + operator(}) + operator(])operator(,) + key<delimiter(")content(release_export_lock_url)delimiter(")>operator(:) string<delimiter(")content(http:)char(\\/)char(\\/)content(localhost:3000)char(\\/)content(neighbourhoods)char(\\/)content(Neighbourhoods::Storage)char(\\/)content(release_export_lock)delimiter(")>operator(,) + key<delimiter(")content(readable)delimiter(")>operator(:) reserved(true)operator(,) + key<delimiter(")content(replay_latest_snapshot_url)delimiter(")>operator(:) string<delimiter(")content(http:)char(\\/)char(\\/)content(localhost:3000)char(\\/)content(snapshots)char(\\/)content(replay_latest)delimiter(")>operator(,) + key<delimiter(")content(id)delimiter(")>operator(:) string<delimiter(")content(Neighbourhoods::Storage)delimiter(")>operator(,) + key<delimiter(")content(writable)delimiter(")>operator(:) reserved(true) + operator(})operator(,) + operator({) + key<delimiter(")content(import_url)delimiter(")>operator(:) string<delimiter(")content(http:)char(\\/)char(\\/)content(localhost:3000)char(\\/)content(neighbourhoods)char(\\/)content(Neighbourhoods::Administration)char(\\/)content(import)delimiter(")>operator(,) + key<delimiter(")content(type)delimiter(")>operator(:) string<delimiter(")content(Neighbourhood)delimiter(")>operator(,) + key<delimiter(")content(reflected)delimiter(")>operator(:) reserved(true)operator(,) + key<delimiter(")content(selected)delimiter(")>operator(:) reserved(false)operator(,) + key<delimiter(")content(export_url)delimiter(")>operator(:) string<delimiter(")content(http:)char(\\/)char(\\/)content(localhost:3000)char(\\/)content(neighbourhoods)char(\\/)content(Neighbourhoods::Administration)char(\\/)content(export)delimiter(")>operator(,) + key<delimiter(")content(snapshots_url)delimiter(")>operator(:) string<delimiter(")content(http:)char(\\/)char(\\/)content(localhost:3000)char(\\/)content(snapshots)delimiter(")>operator(,) + key<delimiter(")content(uri)delimiter(")>operator(:) string<delimiter(")content(http:)char(\\/)char(\\/)content(localhost:3000)char(\\/)content(neighbourhoods)char(\\/)content(Neighbourhoods::Administration)char(\\/)content(lists)delimiter(")>operator(,) + key<delimiter(")content(print_url)delimiter(")>operator(:) string<delimiter(")content(http:)char(\\/)char(\\/)content(localhost:3000)char(\\/)content(neighbourhoods)char(\\/)content(Neighbourhoods::Administration)char(\\/)content(print)delimiter(")>operator(,) + key<delimiter(")content(locked)delimiter(")>operator(:) reserved(false)operator(,) + key<delimiter(")content(name)delimiter(")>operator(:) string<delimiter(")content(Verwaltung)delimiter(")>operator(,) + key<delimiter(")content(lists)delimiter(")>operator(:) operator([) + operator({) + key<delimiter(")content(type)delimiter(")>operator(:) string<delimiter(")content(List)delimiter(")>operator(,) + key<delimiter(")content(sort_keys)delimiter(")>operator(:) operator({) + key<delimiter(")content(options)delimiter(")>operator(:) operator([) + operator({) + key<delimiter(")content(name)delimiter(")>operator(:) string<delimiter(")content(Standardsortierung)delimiter(")>operator(,) + key<delimiter(")content(id)delimiter(")>operator(:) reserved(null) + operator(}) + operator(]) + operator(})operator(,) + key<delimiter(")content(uri)delimiter(")>operator(:) string<delimiter(")content(http:)char(\\/)char(\\/)content(localhost:3000)char(\\/)content(lists)char(\\/)content(Lists::Employees)char(\\/)content(elements.json)delimiter(")>operator(,) + key<delimiter(")content(sort_key_uri)delimiter(")>operator(:) string<delimiter(")content(http:)char(\\/)char(\\/)content(localhost:3000)char(\\/)content(lists)char(\\/)content(Lists::Employees)char(\\/)content(sort_key)delimiter(")>operator(,) + key<delimiter(")content(name)delimiter(")>operator(:) string<delimiter(")content(Mitarbeiter)delimiter(")>operator(,) + key<delimiter(")content(readable)delimiter(")>operator(:) reserved(true)operator(,) + key<delimiter(")content(id)delimiter(")>operator(:) string<delimiter(")content(Lists::Employees)delimiter(")>operator(,) + key<delimiter(")content(element_types)delimiter(")>operator(:) operator([) + operator({) + key<delimiter(")content(create_element_url)delimiter(")>operator(:) string<delimiter(")content(http:)char(\\/)char(\\/)content(localhost:3000)char(\\/)content(elements?list=Lists%3A%3AEmployees&type=Elements%3A%3APerson)delimiter(")>operator(,) + key<delimiter(")content(essential_attributes)delimiter(")>operator(:) operator([) + operator(])operator(,) + key<delimiter(")content(name)delimiter(")>operator(:) string<delimiter(")content(Person)delimiter(")>operator(,) + key<delimiter(")content(ask_for_email)delimiter(")>operator(:) reserved(true)operator(,) + key<delimiter(")content(id)delimiter(")>operator(:) string<delimiter(")content(Elements::Person)delimiter(")> + operator(}) + operator(])operator(,) + key<delimiter(")content(writable)delimiter(")>operator(:) reserved(true) + operator(})operator(,) + operator({) + key<delimiter(")content(type)delimiter(")>operator(:) string<delimiter(")content(List)delimiter(")>operator(,) + key<delimiter(")content(sort_keys)delimiter(")>operator(:) operator({) + key<delimiter(")content(options)delimiter(")>operator(:) operator([) + operator({) + key<delimiter(")content(name)delimiter(")>operator(:) string<delimiter(")content(Standardsortierung)delimiter(")>operator(,) + key<delimiter(")content(id)delimiter(")>operator(:) reserved(null) + operator(}) + operator(]) + operator(})operator(,) + key<delimiter(")content(uri)delimiter(")>operator(:) string<delimiter(")content(http:)char(\\/)char(\\/)content(localhost:3000)char(\\/)content(lists)char(\\/)content(Lists::Departments)char(\\/)content(elements.json)delimiter(")>operator(,) + key<delimiter(")content(sort_key_uri)delimiter(")>operator(:) string<delimiter(")content(http:)char(\\/)char(\\/)content(localhost:3000)char(\\/)content(lists)char(\\/)content(Lists::Departments)char(\\/)content(sort_key)delimiter(")>operator(,) + key<delimiter(")content(name)delimiter(")>operator(:) string<delimiter(")content(Abteilungen)delimiter(")>operator(,) + key<delimiter(")content(readable)delimiter(")>operator(:) reserved(true)operator(,) + key<delimiter(")content(id)delimiter(")>operator(:) string<delimiter(")content(Lists::Departments)delimiter(")>operator(,) + key<delimiter(")content(element_types)delimiter(")>operator(:) operator([) + operator({) + key<delimiter(")content(create_element_url)delimiter(")>operator(:) string<delimiter(")content(http:)char(\\/)char(\\/)content(localhost:3000)char(\\/)content(elements?list=Lists%3A%3ADepartments&type=Elements%3A%3ADepartment)delimiter(")>operator(,) + key<delimiter(")content(essential_attributes)delimiter(")>operator(:) operator([) + operator(])operator(,) + key<delimiter(")content(name)delimiter(")>operator(:) string<delimiter(")content(Abteilung)delimiter(")>operator(,) + key<delimiter(")content(ask_for_email)delimiter(")>operator(:) reserved(false)operator(,) + key<delimiter(")content(id)delimiter(")>operator(:) string<delimiter(")content(Elements::Department)delimiter(")> + operator(}) + operator(])operator(,) + key<delimiter(")content(writable)delimiter(")>operator(:) reserved(true) + operator(})operator(,) + operator({) + key<delimiter(")content(type)delimiter(")>operator(:) string<delimiter(")content(List)delimiter(")>operator(,) + key<delimiter(")content(sort_keys)delimiter(")>operator(:) operator({) + key<delimiter(")content(options)delimiter(")>operator(:) operator([) + operator({) + key<delimiter(")content(name)delimiter(")>operator(:) string<delimiter(")content(Standardsortierung)delimiter(")>operator(,) + key<delimiter(")content(id)delimiter(")>operator(:) reserved(null) + operator(}) + operator(]) + operator(})operator(,) + key<delimiter(")content(uri)delimiter(")>operator(:) string<delimiter(")content(http:)char(\\/)char(\\/)content(localhost:3000)char(\\/)content(lists)char(\\/)content(Lists::Locations)char(\\/)content(elements.json)delimiter(")>operator(,) + key<delimiter(")content(sort_key_uri)delimiter(")>operator(:) string<delimiter(")content(http:)char(\\/)char(\\/)content(localhost:3000)char(\\/)content(lists)char(\\/)content(Lists::Locations)char(\\/)content(sort_key)delimiter(")>operator(,) + key<delimiter(")content(name)delimiter(")>operator(:) string<delimiter(")content(Standorte)delimiter(")>operator(,) + key<delimiter(")content(readable)delimiter(")>operator(:) reserved(true)operator(,) + key<delimiter(")content(id)delimiter(")>operator(:) string<delimiter(")content(Lists::Locations)delimiter(")>operator(,) + key<delimiter(")content(element_types)delimiter(")>operator(:) operator([) + operator({) + key<delimiter(")content(create_element_url)delimiter(")>operator(:) string<delimiter(")content(http:)char(\\/)char(\\/)content(localhost:3000)char(\\/)content(elements?list=Lists%3A%3ALocations&type=Elements%3A%3ALocation)delimiter(")>operator(,) + key<delimiter(")content(essential_attributes)delimiter(")>operator(:) operator([) + operator(])operator(,) + key<delimiter(")content(name)delimiter(")>operator(:) string<delimiter(")content(Standort)delimiter(")>operator(,) + key<delimiter(")content(ask_for_email)delimiter(")>operator(:) reserved(false)operator(,) + key<delimiter(")content(id)delimiter(")>operator(:) string<delimiter(")content(Elements::Location)delimiter(")> + operator(}) + operator(])operator(,) + key<delimiter(")content(writable)delimiter(")>operator(:) reserved(true) + operator(})operator(,) + operator({) + key<delimiter(")content(type)delimiter(")>operator(:) string<delimiter(")content(List)delimiter(")>operator(,) + key<delimiter(")content(sort_keys)delimiter(")>operator(:) operator({) + key<delimiter(")content(options)delimiter(")>operator(:) operator([) + operator({) + key<delimiter(")content(name)delimiter(")>operator(:) string<delimiter(")content(Standardsortierung)delimiter(")>operator(,) + key<delimiter(")content(id)delimiter(")>operator(:) reserved(null) + operator(}) + operator(]) + operator(})operator(,) + key<delimiter(")content(uri)delimiter(")>operator(:) string<delimiter(")content(http:)char(\\/)char(\\/)content(localhost:3000)char(\\/)content(lists)char(\\/)content(Lists::Stocktakings)char(\\/)content(elements.json)delimiter(")>operator(,) + key<delimiter(")content(sort_key_uri)delimiter(")>operator(:) string<delimiter(")content(http:)char(\\/)char(\\/)content(localhost:3000)char(\\/)content(lists)char(\\/)content(Lists::Stocktakings)char(\\/)content(sort_key)delimiter(")>operator(,) + key<delimiter(")content(name)delimiter(")>operator(:) string<delimiter(")content(Inventuren)delimiter(")>operator(,) + key<delimiter(")content(readable)delimiter(")>operator(:) reserved(true)operator(,) + key<delimiter(")content(id)delimiter(")>operator(:) string<delimiter(")content(Lists::Stocktakings)delimiter(")>operator(,) + key<delimiter(")content(element_types)delimiter(")>operator(:) operator([) + operator({) + key<delimiter(")content(create_element_url)delimiter(")>operator(:) string<delimiter(")content(http:)char(\\/)char(\\/)content(localhost:3000)char(\\/)content(elements?list=Lists%3A%3AStocktakings&type=Elements%3A%3AStocktaking)delimiter(")>operator(,) + key<delimiter(")content(essential_attributes)delimiter(")>operator(:) operator([) + operator(])operator(,) + key<delimiter(")content(name)delimiter(")>operator(:) string<delimiter(")content(Inventur)delimiter(")>operator(,) + key<delimiter(")content(ask_for_email)delimiter(")>operator(:) reserved(false)operator(,) + key<delimiter(")content(id)delimiter(")>operator(:) string<delimiter(")content(Elements::Stocktaking)delimiter(")> + operator(}) + operator(])operator(,) + key<delimiter(")content(writable)delimiter(")>operator(:) reserved(true) + operator(})operator(,) + operator({) + key<delimiter(")content(type)delimiter(")>operator(:) string<delimiter(")content(List)delimiter(")>operator(,) + key<delimiter(")content(sort_keys)delimiter(")>operator(:) operator({) + key<delimiter(")content(options)delimiter(")>operator(:) operator([) + operator({) + key<delimiter(")content(name)delimiter(")>operator(:) string<delimiter(")content(Standardsortierung)delimiter(")>operator(,) + key<delimiter(")content(id)delimiter(")>operator(:) reserved(null) + operator(}) + operator(]) + operator(})operator(,) + key<delimiter(")content(uri)delimiter(")>operator(:) string<delimiter(")content(http:)char(\\/)char(\\/)content(localhost:3000)char(\\/)content(lists)char(\\/)content(Lists::Invoices)char(\\/)content(elements.json)delimiter(")>operator(,) + key<delimiter(")content(sort_key_uri)delimiter(")>operator(:) string<delimiter(")content(http:)char(\\/)char(\\/)content(localhost:3000)char(\\/)content(lists)char(\\/)content(Lists::Invoices)char(\\/)content(sort_key)delimiter(")>operator(,) + key<delimiter(")content(name)delimiter(")>operator(:) string<delimiter(")content(Abrechnungen)delimiter(")>operator(,) + key<delimiter(")content(readable)delimiter(")>operator(:) reserved(true)operator(,) + key<delimiter(")content(id)delimiter(")>operator(:) string<delimiter(")content(Lists::Invoices)delimiter(")>operator(,) + key<delimiter(")content(element_types)delimiter(")>operator(:) operator([) + operator({) + key<delimiter(")content(create_element_url)delimiter(")>operator(:) string<delimiter(")content(http:)char(\\/)char(\\/)content(localhost:3000)char(\\/)content(elements?list=Lists%3A%3AInvoices&type=Elements%3A%3AInvoice)delimiter(")>operator(,) + key<delimiter(")content(essential_attributes)delimiter(")>operator(:) operator([) + operator(])operator(,) + key<delimiter(")content(name)delimiter(")>operator(:) string<delimiter(")content(Abrechnung)delimiter(")>operator(,) + key<delimiter(")content(ask_for_email)delimiter(")>operator(:) reserved(false)operator(,) + key<delimiter(")content(id)delimiter(")>operator(:) string<delimiter(")content(Elements::Invoice)delimiter(")> + operator(}) + operator(])operator(,) + key<delimiter(")content(writable)delimiter(")>operator(:) reserved(true) + operator(}) + operator(])operator(,) + key<delimiter(")content(release_export_lock_url)delimiter(")>operator(:) string<delimiter(")content(http:)char(\\/)char(\\/)content(localhost:3000)char(\\/)content(neighbourhoods)char(\\/)content(Neighbourhoods::Administration)char(\\/)content(release_export_lock)delimiter(")>operator(,) + key<delimiter(")content(readable)delimiter(")>operator(:) reserved(true)operator(,) + key<delimiter(")content(replay_latest_snapshot_url)delimiter(")>operator(:) string<delimiter(")content(http:)char(\\/)char(\\/)content(localhost:3000)char(\\/)content(snapshots)char(\\/)content(replay_latest)delimiter(")>operator(,) + key<delimiter(")content(id)delimiter(")>operator(:) string<delimiter(")content(Neighbourhoods::Administration)delimiter(")>operator(,) + key<delimiter(")content(writable)delimiter(")>operator(:) reserved(true) + operator(}) +operator(])
\ No newline at end of file diff --git a/test/scanners/json/big.in.json b/test/scanners/json/big.in.json new file mode 100644 index 0000000..1af2d3e --- /dev/null +++ b/test/scanners/json/big.in.json @@ -0,0 +1,295 @@ +[ + { + "import_url": "http:\/\/localhost:3000\/neighbourhoods\/Neighbourhoods::Storage\/import", + "type": "Neighbourhood", + "reflected": false, + "selected": true, + "export_url": "http:\/\/localhost:3000\/neighbourhoods\/Neighbourhoods::Storage\/export", + "snapshots_url": "http:\/\/localhost:3000\/snapshots", + "uri": "http:\/\/localhost:3000\/neighbourhoods\/Neighbourhoods::Storage\/lists", + "print_url": "http:\/\/localhost:3000\/neighbourhoods\/Neighbourhoods::Storage\/print", + "locked": false, + "name": "Lager", + "lists": [ + { + "type": "List", + "sort_keys": { + "options": [ + { + "name": "Standardsortierung", + "id": null + } + ] + }, + "uri": "http:\/\/localhost:3000\/lists\/Lists::Manufacturers\/elements.json", + "sort_key_uri": "http:\/\/localhost:3000\/lists\/Lists::Manufacturers\/sort_key", + "name": "Hersteller", + "readable": true, + "id": "Lists::Manufacturers", + "element_types": [ + { + "create_element_url": "http:\/\/localhost:3000\/elements?list=Lists%3A%3AManufacturers&type=Elements%3A%3AManufacturer", + "essential_attributes": [ + ], + "name": "Hersteller", + "ask_for_email": false, + "id": "Elements::Manufacturer" + } + ], + "writable": true + }, + { + "type": "List", + "sort_keys": { + "options": [ + { + "name": "Standardsortierung", + "id": null + } + ] + }, + "uri": "http:\/\/localhost:3000\/lists\/Lists::Categories\/elements.json", + "sort_key_uri": "http:\/\/localhost:3000\/lists\/Lists::Categories\/sort_key", + "name": "Rubriken", + "readable": true, + "id": "Lists::Categories", + "element_types": [ + { + "create_element_url": "http:\/\/localhost:3000\/elements?list=Lists%3A%3ACategories&type=Elements%3A%3ACategory", + "essential_attributes": [ + ], + "name": "Rubrik", + "ask_for_email": false, + "id": "Elements::Category" + } + ], + "writable": true + }, + { + "type": "List", + "sort_keys": { + "options": [ + { + "name": "Standardsortierung", + "id": null + } + ] + }, + "uri": "http:\/\/localhost:3000\/lists\/Lists::ArticlesList\/elements.json", + "sort_key_uri": "http:\/\/localhost:3000\/lists\/Lists::ArticlesList\/sort_key", + "name": "Artikel", + "readable": true, + "id": "Lists::ArticlesList", + "element_types": [ + { + "create_element_url": "http:\/\/localhost:3000\/elements?list=Lists%3A%3AArticlesList&type=Elements%3A%3AArticle", + "essential_attributes": [ + ], + "name": "Artikel", + "ask_for_email": false, + "id": "Elements::Article" + } + ], + "writable": true + }, + { + "type": "List", + "sort_keys": { + "options": [ + { + "name": "Standardsortierung", + "id": null + }, + { + "name": "Bestelldatum", + "id": "Date" + }, + { + "name": "bestellt von", + "id": "OrderedBy" + }, + { + "name": "Summe", + "id": "Total" + } + ] + }, + "uri": "http:\/\/localhost:3000\/lists\/Lists::Orders\/elements.json", + "sort_key_uri": "http:\/\/localhost:3000\/lists\/Lists::Orders\/sort_key", + "name": "Bestellungen", + "readable": true, + "id": "Lists::Orders", + "element_types": [ + { + "create_element_url": "http:\/\/localhost:3000\/elements?list=Lists%3A%3AOrders&type=Elements%3A%3AOrder", + "essential_attributes": [ + ], + "name": "Bestellung", + "ask_for_email": false, + "id": "Elements::Order" + } + ], + "writable": true + } + ], + "release_export_lock_url": "http:\/\/localhost:3000\/neighbourhoods\/Neighbourhoods::Storage\/release_export_lock", + "readable": true, + "replay_latest_snapshot_url": "http:\/\/localhost:3000\/snapshots\/replay_latest", + "id": "Neighbourhoods::Storage", + "writable": true + }, + { + "import_url": "http:\/\/localhost:3000\/neighbourhoods\/Neighbourhoods::Administration\/import", + "type": "Neighbourhood", + "reflected": true, + "selected": false, + "export_url": "http:\/\/localhost:3000\/neighbourhoods\/Neighbourhoods::Administration\/export", + "snapshots_url": "http:\/\/localhost:3000\/snapshots", + "uri": "http:\/\/localhost:3000\/neighbourhoods\/Neighbourhoods::Administration\/lists", + "print_url": "http:\/\/localhost:3000\/neighbourhoods\/Neighbourhoods::Administration\/print", + "locked": false, + "name": "Verwaltung", + "lists": [ + { + "type": "List", + "sort_keys": { + "options": [ + { + "name": "Standardsortierung", + "id": null + } + ] + }, + "uri": "http:\/\/localhost:3000\/lists\/Lists::Employees\/elements.json", + "sort_key_uri": "http:\/\/localhost:3000\/lists\/Lists::Employees\/sort_key", + "name": "Mitarbeiter", + "readable": true, + "id": "Lists::Employees", + "element_types": [ + { + "create_element_url": "http:\/\/localhost:3000\/elements?list=Lists%3A%3AEmployees&type=Elements%3A%3APerson", + "essential_attributes": [ + ], + "name": "Person", + "ask_for_email": true, + "id": "Elements::Person" + } + ], + "writable": true + }, + { + "type": "List", + "sort_keys": { + "options": [ + { + "name": "Standardsortierung", + "id": null + } + ] + }, + "uri": "http:\/\/localhost:3000\/lists\/Lists::Departments\/elements.json", + "sort_key_uri": "http:\/\/localhost:3000\/lists\/Lists::Departments\/sort_key", + "name": "Abteilungen", + "readable": true, + "id": "Lists::Departments", + "element_types": [ + { + "create_element_url": "http:\/\/localhost:3000\/elements?list=Lists%3A%3ADepartments&type=Elements%3A%3ADepartment", + "essential_attributes": [ + ], + "name": "Abteilung", + "ask_for_email": false, + "id": "Elements::Department" + } + ], + "writable": true + }, + { + "type": "List", + "sort_keys": { + "options": [ + { + "name": "Standardsortierung", + "id": null + } + ] + }, + "uri": "http:\/\/localhost:3000\/lists\/Lists::Locations\/elements.json", + "sort_key_uri": "http:\/\/localhost:3000\/lists\/Lists::Locations\/sort_key", + "name": "Standorte", + "readable": true, + "id": "Lists::Locations", + "element_types": [ + { + "create_element_url": "http:\/\/localhost:3000\/elements?list=Lists%3A%3ALocations&type=Elements%3A%3ALocation", + "essential_attributes": [ + ], + "name": "Standort", + "ask_for_email": false, + "id": "Elements::Location" + } + ], + "writable": true + }, + { + "type": "List", + "sort_keys": { + "options": [ + { + "name": "Standardsortierung", + "id": null + } + ] + }, + "uri": "http:\/\/localhost:3000\/lists\/Lists::Stocktakings\/elements.json", + "sort_key_uri": "http:\/\/localhost:3000\/lists\/Lists::Stocktakings\/sort_key", + "name": "Inventuren", + "readable": true, + "id": "Lists::Stocktakings", + "element_types": [ + { + "create_element_url": "http:\/\/localhost:3000\/elements?list=Lists%3A%3AStocktakings&type=Elements%3A%3AStocktaking", + "essential_attributes": [ + ], + "name": "Inventur", + "ask_for_email": false, + "id": "Elements::Stocktaking" + } + ], + "writable": true + }, + { + "type": "List", + "sort_keys": { + "options": [ + { + "name": "Standardsortierung", + "id": null + } + ] + }, + "uri": "http:\/\/localhost:3000\/lists\/Lists::Invoices\/elements.json", + "sort_key_uri": "http:\/\/localhost:3000\/lists\/Lists::Invoices\/sort_key", + "name": "Abrechnungen", + "readable": true, + "id": "Lists::Invoices", + "element_types": [ + { + "create_element_url": "http:\/\/localhost:3000\/elements?list=Lists%3A%3AInvoices&type=Elements%3A%3AInvoice", + "essential_attributes": [ + ], + "name": "Abrechnung", + "ask_for_email": false, + "id": "Elements::Invoice" + } + ], + "writable": true + } + ], + "release_export_lock_url": "http:\/\/localhost:3000\/neighbourhoods\/Neighbourhoods::Administration\/release_export_lock", + "readable": true, + "replay_latest_snapshot_url": "http:\/\/localhost:3000\/snapshots\/replay_latest", + "id": "Neighbourhoods::Administration", + "writable": true + } +]
\ No newline at end of file diff --git a/test/scanners/json/big2.expected.raydebug b/test/scanners/json/big2.expected.raydebug new file mode 100644 index 0000000..9014536 --- /dev/null +++ b/test/scanners/json/big2.expected.raydebug @@ -0,0 +1,267 @@ +operator({) + key<delimiter(")content(url)delimiter(")>operator(:) string<delimiter(")content(http:)char(\\/)char(\\/)content(localhost:3000)char(\\/)content(elements)char(\\/)content(633)char(\\/)content(attributes)delimiter(")>operator(,) + key<delimiter(")content(name)delimiter(")>operator(:) string<delimiter(")content(Bestellung: 3 <strong>Clovis Schwenger<)char(\\/)content(strong> ()char(\\u20ac)content( 12.10, 2008-10-08\))delimiter(")>operator(,) + key<delimiter(")content(attributes)delimiter(")>operator(:) operator([) + operator({) + key<delimiter(")content(color)delimiter(")>operator(:) string<delimiter(")content(red)delimiter(")>operator(,) + key<delimiter(")content(type)delimiter(")>operator(:) string<delimiter(")content(state)delimiter(")>operator(,) + key<delimiter(")content(uri)delimiter(")>operator(:) string<delimiter(")content(http:)char(\\/)char(\\/)content(localhost:3000)char(\\/)content(elements)char(\\/)content(633)char(\\/)content(state)delimiter(")>operator(,) + key<delimiter(")content(options)delimiter(")>operator(:) operator([) + operator({) + key<delimiter(")content(color)delimiter(")>operator(:) string<delimiter(")content(red)delimiter(")>operator(,) + key<delimiter(")content(name)delimiter(")>operator(:) string<delimiter(")content(neu)delimiter(")>operator(,) + key<delimiter(")content(id)delimiter(")>operator(:) string<delimiter(")content(new)delimiter(")> + operator(})operator(,) + operator({) + key<delimiter(")content(color)delimiter(")>operator(:) string<delimiter(")content(orange)delimiter(")>operator(,) + key<delimiter(")content(name)delimiter(")>operator(:) string<delimiter(")content(abgeschlossen)delimiter(")>operator(,) + key<delimiter(")content(id)delimiter(")>operator(:) string<delimiter(")content(closed)delimiter(")> + operator(})operator(,) + operator({) + key<delimiter(")content(color)delimiter(")>operator(:) string<delimiter(")content(green)delimiter(")>operator(,) + key<delimiter(")content(name)delimiter(")>operator(:) string<delimiter(")content(freigegeben)delimiter(")>operator(,) + key<delimiter(")content(id)delimiter(")>operator(:) string<delimiter(")content(approved)delimiter(")> + operator(})operator(,) + operator({) + key<delimiter(")content(color)delimiter(")>operator(:) string<delimiter(")delimiter(")>operator(,) + key<delimiter(")content(name)delimiter(")>operator(:) string<delimiter(")content(verschickt)delimiter(")>operator(,) + key<delimiter(")content(id)delimiter(")>operator(:) string<delimiter(")content(shipped)delimiter(")> + operator(}) + operator(])operator(,) + key<delimiter(")content(name)delimiter(")>operator(:) string<delimiter(")content(Zustand)delimiter(")>operator(,) + key<delimiter(")content(value)delimiter(")>operator(:) string<delimiter(")content(new)delimiter(")>operator(,) + key<delimiter(")content(readable)delimiter(")>operator(:) reserved(true)operator(,) + key<delimiter(")content(journals)delimiter(")>operator(:) operator([) + operator({) + key<delimiter(")content(user)delimiter(")>operator(:) string<delimiter(")content(CS)delimiter(")>operator(,) + key<delimiter(")content(timestamp)delimiter(")>operator(:) string<delimiter(")content(17:05 10)char(\\/)content(07)char(\\/)content(08)delimiter(")>operator(,) + key<delimiter(")content(created)delimiter(")>operator(:) reserved(true) + operator(}) + operator(])operator(,) + key<delimiter(")content(writable)delimiter(")>operator(:) reserved(false) + operator(})operator(,) + operator({) + key<delimiter(")content(type)delimiter(")>operator(:) string<delimiter(")content(boolean)delimiter(")>operator(,) + key<delimiter(")content(mandatory)delimiter(")>operator(:) reserved(false)operator(,) + key<delimiter(")content(confirm)delimiter(")>operator(:) reserved(true)operator(,) + key<delimiter(")content(uri)delimiter(")>operator(:) string<delimiter(")content(http:)char(\\/)char(\\/)content(localhost:3000)char(\\/)content(attributes)char(\\/)content(5217)delimiter(")>operator(,) + key<delimiter(")content(value)delimiter(")>operator(:) reserved(false)operator(,) + key<delimiter(")content(name)delimiter(")>operator(:) string<delimiter(")content(abgeschlossen)delimiter(")>operator(,) + key<delimiter(")content(readable)delimiter(")>operator(:) reserved(true)operator(,) + key<delimiter(")content(id)delimiter(")>operator(:) integer(5217)operator(,) + key<delimiter(")content(writable)delimiter(")>operator(:) reserved(true) + operator(})operator(,) + operator({) + key<delimiter(")content(type)delimiter(")>operator(:) string<delimiter(")content(boolean)delimiter(")>operator(,) + key<delimiter(")content(mandatory)delimiter(")>operator(:) reserved(false)operator(,) + key<delimiter(")content(confirm)delimiter(")>operator(:) reserved(true)operator(,) + key<delimiter(")content(uri)delimiter(")>operator(:) string<delimiter(")content(http:)char(\\/)char(\\/)content(localhost:3000)char(\\/)content(attributes)char(\\/)content(5218)delimiter(")>operator(,) + key<delimiter(")content(value)delimiter(")>operator(:) reserved(false)operator(,) + key<delimiter(")content(name)delimiter(")>operator(:) string<delimiter(")content(freigegeben)delimiter(")>operator(,) + key<delimiter(")content(readable)delimiter(")>operator(:) reserved(true)operator(,) + key<delimiter(")content(id)delimiter(")>operator(:) integer(5218)operator(,) + key<delimiter(")content(writable)delimiter(")>operator(:) reserved(false) + operator(})operator(,) + operator({) + key<delimiter(")content(type)delimiter(")>operator(:) string<delimiter(")content(boolean)delimiter(")>operator(,) + key<delimiter(")content(mandatory)delimiter(")>operator(:) reserved(false)operator(,) + key<delimiter(")content(confirm)delimiter(")>operator(:) reserved(true)operator(,) + key<delimiter(")content(uri)delimiter(")>operator(:) string<delimiter(")content(http:)char(\\/)char(\\/)content(localhost:3000)char(\\/)content(attributes)char(\\/)content(5219)delimiter(")>operator(,) + key<delimiter(")content(value)delimiter(")>operator(:) reserved(false)operator(,) + key<delimiter(")content(name)delimiter(")>operator(:) string<delimiter(")content(verschickt)delimiter(")>operator(,) + key<delimiter(")content(readable)delimiter(")>operator(:) reserved(true)operator(,) + key<delimiter(")content(id)delimiter(")>operator(:) integer(5219)operator(,) + key<delimiter(")content(writable)delimiter(")>operator(:) reserved(false) + operator(})operator(,) + operator({) + key<delimiter(")content(type)delimiter(")>operator(:) string<delimiter(")content(date)delimiter(")>operator(,) + key<delimiter(")content(mandatory)delimiter(")>operator(:) reserved(true)operator(,) + key<delimiter(")content(confirm)delimiter(")>operator(:) reserved(false)operator(,) + key<delimiter(")content(uri)delimiter(")>operator(:) string<delimiter(")content(http:)char(\\/)char(\\/)content(localhost:3000)char(\\/)content(attributes)char(\\/)content(5220)delimiter(")>operator(,) + key<delimiter(")content(value)delimiter(")>operator(:) string<delimiter(")content(2008-10-08)delimiter(")>operator(,) + key<delimiter(")content(name)delimiter(")>operator(:) string<delimiter(")content(Bestelldatum)delimiter(")>operator(,) + key<delimiter(")content(readable)delimiter(")>operator(:) reserved(true)operator(,) + key<delimiter(")content(id)delimiter(")>operator(:) integer(5220)operator(,) + key<delimiter(")content(writable)delimiter(")>operator(:) reserved(false) + operator(})operator(,) + operator({) + key<delimiter(")content(type)delimiter(")>operator(:) string<delimiter(")content(references)delimiter(")>operator(,) + key<delimiter(")content(create_options)delimiter(")>operator(:) operator([) + operator({) + key<delimiter(")content(create_element_url)delimiter(")>operator(:) string<delimiter(")content(http:)char(\\/)char(\\/)content(localhost:3000)char(\\/)content(elements?list=Lists%3A%3AEmployees&source_id=5221&type=Elements%3A%3APerson)delimiter(")>operator(,) + key<delimiter(")content(essential_attributes)delimiter(")>operator(:) operator([) + operator(])operator(,) + key<delimiter(")content(names)delimiter(")>operator(:) operator({) + key<delimiter(")content(type)delimiter(")>operator(:) string<delimiter(")content(Person)delimiter(")>operator(,) + key<delimiter(")content(list)delimiter(")>operator(:) string<delimiter(")content(Mitarbeiter)delimiter(")> + operator(})operator(,) + key<delimiter(")content(ask_for_email)delimiter(")>operator(:) reserved(true) + operator(}) + operator(])operator(,) + key<delimiter(")content(maximum_reached)delimiter(")>operator(:) reserved(true)operator(,) + key<delimiter(")content(constraints)delimiter(")>operator(:) operator({) + key<delimiter(")content(neighbourhood)delimiter(")>operator(:) reserved(null)operator(,) + key<delimiter(")content(attribute)delimiter(")>operator(:) reserved(null)operator(,) + key<delimiter(")content(maximum)delimiter(")>operator(:) integer(1)operator(,) + key<delimiter(")content(element)delimiter(")>operator(:) operator([) + string<delimiter(")content(Elements::Person)delimiter(")> + operator(])operator(,) + key<delimiter(")content(list)delimiter(")>operator(:) reserved(null)operator(,) + key<delimiter(")content(follow)delimiter(")>operator(:) reserved(null) + operator(})operator(,) + key<delimiter(")content(essential_attributes)delimiter(")>operator(:) operator([) + operator(])operator(,) + key<delimiter(")content(mandatory)delimiter(")>operator(:) reserved(false)operator(,) + key<delimiter(")content(confirm)delimiter(")>operator(:) reserved(false)operator(,) + key<delimiter(")content(uri)delimiter(")>operator(:) string<delimiter(")content(http:)char(\\/)char(\\/)content(localhost:3000)char(\\/)content(attributes)char(\\/)content(5221)delimiter(")>operator(,) + key<delimiter(")content(value)delimiter(")>operator(:) operator({) + key<delimiter(")content(elements)delimiter(")>operator(:) operator([) + operator({) + key<delimiter(")content(color)delimiter(")>operator(:) reserved(null)operator(,) + key<delimiter(")content(type)delimiter(")>operator(:) string<delimiter(")content(Elements::Person)delimiter(")>operator(,) + key<delimiter(")content(has_predecessors)delimiter(")>operator(:) reserved(false)operator(,) + key<delimiter(")content(successors)delimiter(")>operator(:) string<delimiter(")content(http:)char(\\/)char(\\/)content(localhost:3000)char(\\/)content(elements)char(\\/)content(582)char(\\/)content(successors)delimiter(")>operator(,) + key<delimiter(")content(uri)delimiter(")>operator(:) string<delimiter(")content(http:)char(\\/)char(\\/)content(localhost:3000)char(\\/)content(elements)char(\\/)content(582)delimiter(")>operator(,) + key<delimiter(")content(name)delimiter(")>operator(:) string<delimiter(")content(Clovis Schwenger)delimiter(")>operator(,) + key<delimiter(")content(attributes)delimiter(")>operator(:) string<delimiter(")content(http:)char(\\/)char(\\/)content(localhost:3000)char(\\/)content(elements)char(\\/)content(582)char(\\/)content(attributes)delimiter(")>operator(,) + key<delimiter(")content(link_url)delimiter(")>operator(:) string<delimiter(")content(http:)char(\\/)char(\\/)content(localhost:3000)char(\\/)content(inbound_references)char(\\/)content(457)delimiter(")>operator(,) + key<delimiter(")content(state)delimiter(")>operator(:) reserved(null)operator(,) + key<delimiter(")content(readable)delimiter(")>operator(:) reserved(true)operator(,) + key<delimiter(")content(list)delimiter(")>operator(:) string<delimiter(")content(Lists::Employees)delimiter(")>operator(,) + key<delimiter(")content(id)delimiter(")>operator(:) integer(582)operator(,) + key<delimiter(")content(writable)delimiter(")>operator(:) reserved(true)operator(,) + key<delimiter(")content(family)delimiter(")>operator(:) string<delimiter(")content(http:)char(\\/)char(\\/)content(localhost:3000)char(\\/)content(elements)char(\\/)content(582)char(\\/)content(family)delimiter(")> + operator(}) + operator(]) + operator(})operator(,) + key<delimiter(")content(name)delimiter(")>operator(:) string<delimiter(")content(bestellt von)delimiter(")>operator(,) + key<delimiter(")content(candidates_uri)delimiter(")>operator(:) string<delimiter(")content(http:)char(\\/)char(\\/)content(localhost:3000)char(\\/)content(attributes)char(\\/)content(5221)char(\\/)content(candidates)delimiter(")>operator(,) + key<delimiter(")content(create_reference_uri)delimiter(")>operator(:) string<delimiter(")content(http:)char(\\/)char(\\/)content(localhost:3000)char(\\/)content(inbound_references)delimiter(")>operator(,) + key<delimiter(")content(readable)delimiter(")>operator(:) reserved(true)operator(,) + key<delimiter(")content(id)delimiter(")>operator(:) integer(5221)operator(,) + key<delimiter(")content(writable)delimiter(")>operator(:) reserved(false) + operator(})operator(,) + operator({) + key<delimiter(")content(type)delimiter(")>operator(:) string<delimiter(")content(text)delimiter(")>operator(,) + key<delimiter(")content(mandatory)delimiter(")>operator(:) reserved(false)operator(,) + key<delimiter(")content(confirm)delimiter(")>operator(:) reserved(false)operator(,) + key<delimiter(")content(uri)delimiter(")>operator(:) string<delimiter(")content(http:)char(\\/)char(\\/)content(localhost:3000)char(\\/)content(attributes)char(\\/)content(5222)delimiter(")>operator(,) + key<delimiter(")content(value)delimiter(")>operator(:) operator({) + key<delimiter(")content(language)delimiter(")>operator(:) reserved(null)operator(,) + key<delimiter(")content(version)delimiter(")>operator(:) integer(0)operator(,) + key<delimiter(")content(text)delimiter(")>operator(:) string<delimiter(")delimiter(")> + operator(})operator(,) + key<delimiter(")content(name)delimiter(")>operator(:) string<delimiter(")content(Verwendungszweck)delimiter(")>operator(,) + key<delimiter(")content(multiline)delimiter(")>operator(:) reserved(true)operator(,) + key<delimiter(")content(readable)delimiter(")>operator(:) reserved(true)operator(,) + key<delimiter(")content(id)delimiter(")>operator(:) integer(5222)operator(,) + key<delimiter(")content(languages)delimiter(")>operator(:) operator([) + operator(])operator(,) + key<delimiter(")content(writable)delimiter(")>operator(:) reserved(true) + operator(})operator(,) + operator({) + key<delimiter(")content(type)delimiter(")>operator(:) string<delimiter(")content(references)delimiter(")>operator(,) + key<delimiter(")content(create_options)delimiter(")>operator(:) operator([) + operator(])operator(,) + key<delimiter(")content(maximum_reached)delimiter(")>operator(:) reserved(null)operator(,) + key<delimiter(")content(constraints)delimiter(")>operator(:) operator({) + key<delimiter(")content(neighbourhood)delimiter(")>operator(:) reserved(null)operator(,) + key<delimiter(")content(attribute)delimiter(")>operator(:) reserved(null)operator(,) + key<delimiter(")content(maximum)delimiter(")>operator(:) reserved(null)operator(,) + key<delimiter(")content(element)delimiter(")>operator(:) operator([) + string<delimiter(")content(Elements::Merchandise)delimiter(")> + operator(])operator(,) + key<delimiter(")content(list)delimiter(")>operator(:) reserved(null)operator(,) + key<delimiter(")content(follow)delimiter(")>operator(:) string<delimiter(")content(Article)delimiter(")> + operator(})operator(,) + key<delimiter(")content(essential_attributes)delimiter(")>operator(:) operator([) + operator({) + key<delimiter(")content(name)delimiter(")>operator(:) string<delimiter(")content(Menge)delimiter(")>operator(,) + key<delimiter(")content(default)delimiter(")>operator(:) integer(1)operator(,) + key<delimiter(")content(id)delimiter(")>operator(:) string<delimiter(")content(Amount)delimiter(")> + operator(}) + operator(])operator(,) + key<delimiter(")content(mandatory)delimiter(")>operator(:) reserved(true)operator(,) + key<delimiter(")content(confirm)delimiter(")>operator(:) reserved(false)operator(,) + key<delimiter(")content(uri)delimiter(")>operator(:) string<delimiter(")content(http:)char(\\/)char(\\/)content(localhost:3000)char(\\/)content(attributes)char(\\/)content(5223)delimiter(")>operator(,) + key<delimiter(")content(value)delimiter(")>operator(:) operator({) + key<delimiter(")content(elements)delimiter(")>operator(:) operator([) + operator({) + key<delimiter(")content(color)delimiter(")>operator(:) reserved(null)operator(,) + key<delimiter(")content(type)delimiter(")>operator(:) string<delimiter(")content(Elements::Merchandise)delimiter(")>operator(,) + key<delimiter(")content(has_predecessors)delimiter(")>operator(:) reserved(true)operator(,) + key<delimiter(")content(successors)delimiter(")>operator(:) string<delimiter(")content(http:)char(\\/)char(\\/)content(localhost:3000)char(\\/)content(elements)char(\\/)content(627)char(\\/)content(successors)delimiter(")>operator(,) + key<delimiter(")content(uri)delimiter(")>operator(:) string<delimiter(")content(http:)char(\\/)char(\\/)content(localhost:3000)char(\\/)content(elements)char(\\/)content(627)delimiter(")>operator(,) + key<delimiter(")content(name)delimiter(")>operator(:) string<delimiter(")content(8 x <div class=)char(\\")content(thumbnail)char(\\")content(><img src=)char(\\")content(http:)char(\\/)char(\\/)content(localhost:3000)char(\\/)content(files)char(\\/)content(875)char(\\/)content(thumbnail?attribute_id=5001)char(\\")content( )char(\\/)content(><)char(\\/)content(div>#005 Stressball)delimiter(")>operator(,) + key<delimiter(")content(attributes)delimiter(")>operator(:) string<delimiter(")content(http:)char(\\/)char(\\/)content(localhost:3000)char(\\/)content(elements)char(\\/)content(627)char(\\/)content(attributes)delimiter(")>operator(,) + key<delimiter(")content(link_url)delimiter(")>operator(:) string<delimiter(")content(http:)char(\\/)char(\\/)content(localhost:3000)char(\\/)content(inbound_references)char(\\/)content(458)delimiter(")>operator(,) + key<delimiter(")content(state)delimiter(")>operator(:) reserved(null)operator(,) + key<delimiter(")content(readable)delimiter(")>operator(:) reserved(true)operator(,) + key<delimiter(")content(list)delimiter(")>operator(:) string<delimiter(")content(Lists::OrderItems)delimiter(")>operator(,) + key<delimiter(")content(id)delimiter(")>operator(:) integer(627)operator(,) + key<delimiter(")content(writable)delimiter(")>operator(:) reserved(true)operator(,) + key<delimiter(")content(family)delimiter(")>operator(:) string<delimiter(")content(http:)char(\\/)char(\\/)content(localhost:3000)char(\\/)content(elements)char(\\/)content(627)char(\\/)content(family)delimiter(")> + operator(})operator(,) + operator({) + key<delimiter(")content(color)delimiter(")>operator(:) reserved(null)operator(,) + key<delimiter(")content(type)delimiter(")>operator(:) string<delimiter(")content(Elements::Merchandise)delimiter(")>operator(,) + key<delimiter(")content(has_predecessors)delimiter(")>operator(:) reserved(true)operator(,) + key<delimiter(")content(successors)delimiter(")>operator(:) string<delimiter(")content(http:)char(\\/)char(\\/)content(localhost:3000)char(\\/)content(elements)char(\\/)content(628)char(\\/)content(successors)delimiter(")>operator(,) + key<delimiter(")content(uri)delimiter(")>operator(:) string<delimiter(")content(http:)char(\\/)char(\\/)content(localhost:3000)char(\\/)content(elements)char(\\/)content(628)delimiter(")>operator(,) + key<delimiter(")content(name)delimiter(")>operator(:) string<delimiter(")content(3 x <div class=)char(\\")content(thumbnail)char(\\")content(><img src=)char(\\")content(http:)char(\\/)char(\\/)content(localhost:3000)char(\\/)content(files)char(\\/)content(881)char(\\/)content(thumbnail?attribute_id=5091)char(\\")content( )char(\\/)content(><)char(\\/)content(div>#011 Post-It Block)delimiter(")>operator(,) + key<delimiter(")content(attributes)delimiter(")>operator(:) string<delimiter(")content(http:)char(\\/)char(\\/)content(localhost:3000)char(\\/)content(elements)char(\\/)content(628)char(\\/)content(attributes)delimiter(")>operator(,) + key<delimiter(")content(link_url)delimiter(")>operator(:) string<delimiter(")content(http:)char(\\/)char(\\/)content(localhost:3000)char(\\/)content(inbound_references)char(\\/)content(459)delimiter(")>operator(,) + key<delimiter(")content(state)delimiter(")>operator(:) reserved(null)operator(,) + key<delimiter(")content(readable)delimiter(")>operator(:) reserved(true)operator(,) + key<delimiter(")content(list)delimiter(")>operator(:) string<delimiter(")content(Lists::OrderItems)delimiter(")>operator(,) + key<delimiter(")content(id)delimiter(")>operator(:) integer(628)operator(,) + key<delimiter(")content(writable)delimiter(")>operator(:) reserved(true)operator(,) + key<delimiter(")content(family)delimiter(")>operator(:) string<delimiter(")content(http:)char(\\/)char(\\/)content(localhost:3000)char(\\/)content(elements)char(\\/)content(628)char(\\/)content(family)delimiter(")> + operator(}) + operator(]) + operator(})operator(,) + key<delimiter(")content(name)delimiter(")>operator(:) string<delimiter(")content(Bestellpositionen)delimiter(")>operator(,) + key<delimiter(")content(candidates_uri)delimiter(")>operator(:) string<delimiter(")content(http:)char(\\/)char(\\/)content(localhost:3000)char(\\/)content(attributes)char(\\/)content(5223)char(\\/)content(candidates)delimiter(")>operator(,) + key<delimiter(")content(create_reference_uri)delimiter(")>operator(:) string<delimiter(")content(http:)char(\\/)char(\\/)content(localhost:3000)char(\\/)content(inbound_references)delimiter(")>operator(,) + key<delimiter(")content(readable)delimiter(")>operator(:) reserved(true)operator(,) + key<delimiter(")content(id)delimiter(")>operator(:) integer(5223)operator(,) + key<delimiter(")content(writable)delimiter(")>operator(:) reserved(true) + operator(})operator(,) + operator({) + key<delimiter(")content(type)delimiter(")>operator(:) string<delimiter(")content(float)delimiter(")>operator(,) + key<delimiter(")content(mandatory)delimiter(")>operator(:) reserved(false)operator(,) + key<delimiter(")content(confirm)delimiter(")>operator(:) reserved(false)operator(,) + key<delimiter(")content(uri)delimiter(")>operator(:) string<delimiter(")content(http:)char(\\/)char(\\/)content(localhost:3000)char(\\/)content(attributes)char(\\/)content(5224)delimiter(")>operator(,) + key<delimiter(")content(value)delimiter(")>operator(:) string<delimiter(")content(12,10)delimiter(")>operator(,) + key<delimiter(")content(name)delimiter(")>operator(:) string<delimiter(")content(Summe)delimiter(")>operator(,) + key<delimiter(")content(readable)delimiter(")>operator(:) reserved(true)operator(,) + key<delimiter(")content(id)delimiter(")>operator(:) integer(5224)operator(,) + key<delimiter(")content(writable)delimiter(")>operator(:) reserved(false) + operator(})operator(,) + operator({) + key<delimiter(")content(type)delimiter(")>operator(:) string<delimiter(")content(document)delimiter(")>operator(,) + key<delimiter(")content(files)delimiter(")>operator(:) operator([) + operator(])operator(,) + key<delimiter(")content(mandatory)delimiter(")>operator(:) reserved(false)operator(,) + key<delimiter(")content(confirm)delimiter(")>operator(:) reserved(false)operator(,) + key<delimiter(")content(uri)delimiter(")>operator(:) string<delimiter(")content(http:)char(\\/)char(\\/)content(localhost:3000)char(\\/)content(attributes)char(\\/)content(5225)delimiter(")>operator(,) + key<delimiter(")content(name)delimiter(")>operator(:) string<delimiter(")content(Bestellschein)delimiter(")>operator(,) + key<delimiter(")content(readable)delimiter(")>operator(:) reserved(true)operator(,) + key<delimiter(")content(id)delimiter(")>operator(:) integer(5225)operator(,) + key<delimiter(")content(writable)delimiter(")>operator(:) reserved(false) + operator(})operator(,) + operator({) + key<delimiter(")content(type)delimiter(")>operator(:) string<delimiter(")content(document)delimiter(")>operator(,) + key<delimiter(")content(files)delimiter(")>operator(:) operator([) + operator(])operator(,) + key<delimiter(")content(mandatory)delimiter(")>operator(:) reserved(false)operator(,) + key<delimiter(")content(confirm)delimiter(")>operator(:) reserved(false)operator(,) + key<delimiter(")content(uri)delimiter(")>operator(:) string<delimiter(")content(http:)char(\\/)char(\\/)content(localhost:3000)char(\\/)content(attributes)char(\\/)content(5226)delimiter(")>operator(,) + key<delimiter(")content(name)delimiter(")>operator(:) string<delimiter(")content(Empf)char(\\u00e4)content(ngernachweis)delimiter(")>operator(,) + key<delimiter(")content(readable)delimiter(")>operator(:) reserved(true)operator(,) + key<delimiter(")content(id)delimiter(")>operator(:) integer(5226)operator(,) + key<delimiter(")content(writable)delimiter(")>operator(:) reserved(false) + operator(}) + operator(])operator(,) + key<delimiter(")content(writable)delimiter(")>operator(:) reserved(true) +operator(})
\ No newline at end of file diff --git a/test/scanners/json/big2.in.json b/test/scanners/json/big2.in.json new file mode 100644 index 0000000..3a81cd7 --- /dev/null +++ b/test/scanners/json/big2.in.json @@ -0,0 +1,267 @@ +{ + "url": "http:\/\/localhost:3000\/elements\/633\/attributes", + "name": "Bestellung: 3 <strong>Clovis Schwenger<\/strong> (\u20ac 12.10, 2008-10-08)", + "attributes": [ + { + "color": "red", + "type": "state", + "uri": "http:\/\/localhost:3000\/elements\/633\/state", + "options": [ + { + "color": "red", + "name": "neu", + "id": "new" + }, + { + "color": "orange", + "name": "abgeschlossen", + "id": "closed" + }, + { + "color": "green", + "name": "freigegeben", + "id": "approved" + }, + { + "color": "", + "name": "verschickt", + "id": "shipped" + } + ], + "name": "Zustand", + "value": "new", + "readable": true, + "journals": [ + { + "user": "CS", + "timestamp": "17:05 10\/07\/08", + "created": true + } + ], + "writable": false + }, + { + "type": "boolean", + "mandatory": false, + "confirm": true, + "uri": "http:\/\/localhost:3000\/attributes\/5217", + "value": false, + "name": "abgeschlossen", + "readable": true, + "id": 5217, + "writable": true + }, + { + "type": "boolean", + "mandatory": false, + "confirm": true, + "uri": "http:\/\/localhost:3000\/attributes\/5218", + "value": false, + "name": "freigegeben", + "readable": true, + "id": 5218, + "writable": false + }, + { + "type": "boolean", + "mandatory": false, + "confirm": true, + "uri": "http:\/\/localhost:3000\/attributes\/5219", + "value": false, + "name": "verschickt", + "readable": true, + "id": 5219, + "writable": false + }, + { + "type": "date", + "mandatory": true, + "confirm": false, + "uri": "http:\/\/localhost:3000\/attributes\/5220", + "value": "2008-10-08", + "name": "Bestelldatum", + "readable": true, + "id": 5220, + "writable": false + }, + { + "type": "references", + "create_options": [ + { + "create_element_url": "http:\/\/localhost:3000\/elements?list=Lists%3A%3AEmployees&source_id=5221&type=Elements%3A%3APerson", + "essential_attributes": [ + ], + "names": { + "type": "Person", + "list": "Mitarbeiter" + }, + "ask_for_email": true + } + ], + "maximum_reached": true, + "constraints": { + "neighbourhood": null, + "attribute": null, + "maximum": 1, + "element": [ + "Elements::Person" + ], + "list": null, + "follow": null + }, + "essential_attributes": [ + ], + "mandatory": false, + "confirm": false, + "uri": "http:\/\/localhost:3000\/attributes\/5221", + "value": { + "elements": [ + { + "color": null, + "type": "Elements::Person", + "has_predecessors": false, + "successors": "http:\/\/localhost:3000\/elements\/582\/successors", + "uri": "http:\/\/localhost:3000\/elements\/582", + "name": "Clovis Schwenger", + "attributes": "http:\/\/localhost:3000\/elements\/582\/attributes", + "link_url": "http:\/\/localhost:3000\/inbound_references\/457", + "state": null, + "readable": true, + "list": "Lists::Employees", + "id": 582, + "writable": true, + "family": "http:\/\/localhost:3000\/elements\/582\/family" + } + ] + }, + "name": "bestellt von", + "candidates_uri": "http:\/\/localhost:3000\/attributes\/5221\/candidates", + "create_reference_uri": "http:\/\/localhost:3000\/inbound_references", + "readable": true, + "id": 5221, + "writable": false + }, + { + "type": "text", + "mandatory": false, + "confirm": false, + "uri": "http:\/\/localhost:3000\/attributes\/5222", + "value": { + "language": null, + "version": 0, + "text": "" + }, + "name": "Verwendungszweck", + "multiline": true, + "readable": true, + "id": 5222, + "languages": [ + ], + "writable": true + }, + { + "type": "references", + "create_options": [ + ], + "maximum_reached": null, + "constraints": { + "neighbourhood": null, + "attribute": null, + "maximum": null, + "element": [ + "Elements::Merchandise" + ], + "list": null, + "follow": "Article" + }, + "essential_attributes": [ + { + "name": "Menge", + "default": 1, + "id": "Amount" + } + ], + "mandatory": true, + "confirm": false, + "uri": "http:\/\/localhost:3000\/attributes\/5223", + "value": { + "elements": [ + { + "color": null, + "type": "Elements::Merchandise", + "has_predecessors": true, + "successors": "http:\/\/localhost:3000\/elements\/627\/successors", + "uri": "http:\/\/localhost:3000\/elements\/627", + "name": "8 x <div class=\"thumbnail\"><img src=\"http:\/\/localhost:3000\/files\/875\/thumbnail?attribute_id=5001\" \/><\/div>#005 Stressball", + "attributes": "http:\/\/localhost:3000\/elements\/627\/attributes", + "link_url": "http:\/\/localhost:3000\/inbound_references\/458", + "state": null, + "readable": true, + "list": "Lists::OrderItems", + "id": 627, + "writable": true, + "family": "http:\/\/localhost:3000\/elements\/627\/family" + }, + { + "color": null, + "type": "Elements::Merchandise", + "has_predecessors": true, + "successors": "http:\/\/localhost:3000\/elements\/628\/successors", + "uri": "http:\/\/localhost:3000\/elements\/628", + "name": "3 x <div class=\"thumbnail\"><img src=\"http:\/\/localhost:3000\/files\/881\/thumbnail?attribute_id=5091\" \/><\/div>#011 Post-It Block", + "attributes": "http:\/\/localhost:3000\/elements\/628\/attributes", + "link_url": "http:\/\/localhost:3000\/inbound_references\/459", + "state": null, + "readable": true, + "list": "Lists::OrderItems", + "id": 628, + "writable": true, + "family": "http:\/\/localhost:3000\/elements\/628\/family" + } + ] + }, + "name": "Bestellpositionen", + "candidates_uri": "http:\/\/localhost:3000\/attributes\/5223\/candidates", + "create_reference_uri": "http:\/\/localhost:3000\/inbound_references", + "readable": true, + "id": 5223, + "writable": true + }, + { + "type": "float", + "mandatory": false, + "confirm": false, + "uri": "http:\/\/localhost:3000\/attributes\/5224", + "value": "12,10", + "name": "Summe", + "readable": true, + "id": 5224, + "writable": false + }, + { + "type": "document", + "files": [ + ], + "mandatory": false, + "confirm": false, + "uri": "http:\/\/localhost:3000\/attributes\/5225", + "name": "Bestellschein", + "readable": true, + "id": 5225, + "writable": false + }, + { + "type": "document", + "files": [ + ], + "mandatory": false, + "confirm": false, + "uri": "http:\/\/localhost:3000\/attributes\/5226", + "name": "Empf\u00e4ngernachweis", + "readable": true, + "id": 5226, + "writable": false + } + ], + "writable": true +}
\ No newline at end of file diff --git a/test/scanners/json/example.expected.raydebug b/test/scanners/json/example.expected.raydebug new file mode 100644 index 0000000..20a1560 --- /dev/null +++ b/test/scanners/json/example.expected.raydebug @@ -0,0 +1,22 @@ +operator([) + operator({) + key<delimiter(")content(precision)delimiter(")>operator(:) string<delimiter(")content(zip)delimiter(")>operator(,) + key<delimiter(")content(Latitude)delimiter(")>operator(:) float(37.7668)operator(,) + key<delimiter(")content(Longitude)delimiter(")>operator(:) float(-122.3959)operator(,) + key<delimiter(")content(Address)delimiter(")>operator(:) string<delimiter(")delimiter(")>operator(,) + key<delimiter(")content(City)delimiter(")>operator(:) string<delimiter(")content(SAN FRANCISCO)delimiter(")>operator(,) + key<delimiter(")content(State)delimiter(")>operator(:) string<delimiter(")content(CA)delimiter(")>operator(,) + key<delimiter(")content(Zip)delimiter(")>operator(:) string<delimiter(")content(94107)delimiter(")>operator(,) + key<delimiter(")content(Country)delimiter(")>operator(:) string<delimiter(")content(US)delimiter(")> + operator(})operator(,) + operator({) + key<delimiter(")content(precision)delimiter(")>operator(:) string<delimiter(")content(zip)delimiter(")>operator(,) + key<delimiter(")content(Latitude)delimiter(")>operator(:) float(37.371991)operator(,) + key<delimiter(")content(Longitude)delimiter(")>operator(:) float(-122.026020)operator(,) + key<delimiter(")content(Address)delimiter(")>operator(:) string<delimiter(")delimiter(")>operator(,) + key<delimiter(")content(City)delimiter(")>operator(:) string<delimiter(")content(SUNNYVALE)delimiter(")>operator(,) + key<delimiter(")content(State)delimiter(")>operator(:) string<delimiter(")content(CA)delimiter(")>operator(,) + key<delimiter(")content(Zip)delimiter(")>operator(:) string<delimiter(")content(94085)delimiter(")>operator(,) + key<delimiter(")content(Country)delimiter(")>operator(:) string<delimiter(")content(US)delimiter(")> + operator(}) +operator(]) diff --git a/test/scanners/json/example.in.json b/test/scanners/json/example.in.json new file mode 100644 index 0000000..2a0cb68 --- /dev/null +++ b/test/scanners/json/example.in.json @@ -0,0 +1,22 @@ +[ + { + "precision": "zip", + "Latitude": 37.7668, + "Longitude": -122.3959, + "Address": "", + "City": "SAN FRANCISCO", + "State": "CA", + "Zip": "94107", + "Country": "US" + }, + { + "precision": "zip", + "Latitude": 37.371991, + "Longitude": -122.026020, + "Address": "", + "City": "SUNNYVALE", + "State": "CA", + "Zip": "94085", + "Country": "US" + } +] diff --git a/test/scanners/json/json-lib.expected.raydebug b/test/scanners/json/json-lib.expected.raydebug new file mode 100644 index 0000000..cb2b188 --- /dev/null +++ b/test/scanners/json/json-lib.expected.raydebug @@ -0,0 +1,73 @@ +operator([) + string<delimiter(")content(JSON Test Pattern pass1)delimiter(")>operator(,) + operator({)key<delimiter(")content(object with 1 member)delimiter(")>operator(:)operator([)string<delimiter(")content(array with 1 element)delimiter(")>operator(])operator(})operator(,) + operator({)operator(})operator(,) + operator([)operator(])operator(,) + integer(-42)operator(,) + reserved(true)operator(,) + reserved(false)operator(,) + reserved(null)operator(,) + operator({) + key<delimiter(")content(integer)delimiter(")>operator(:) integer(1234567890)operator(,) + key<delimiter(")content(real)delimiter(")>operator(:) float(-9876.543210)operator(,) + key<delimiter(")content(e)delimiter(")>operator(:) float(0.123456789e-12)operator(,) + key<delimiter(")content(E)delimiter(")>operator(:) float(1.234567890E+34)operator(,) + key<delimiter(")delimiter(")>operator(:) float(23456789012E666)operator(,) + key<delimiter(")content(zero)delimiter(")>operator(:) integer(0)operator(,) + key<delimiter(")content(one)delimiter(")>operator(:) integer(1)operator(,) + key<delimiter(")content(space)delimiter(")>operator(:) string<delimiter(")content( )delimiter(")>operator(,) + key<delimiter(")content(quote)delimiter(")>operator(:) string<delimiter(")char(\\")delimiter(")>operator(,) + key<delimiter(")content(backslash)delimiter(")>operator(:) string<delimiter(")char(\\\\)delimiter(")>operator(,) + key<delimiter(")content(controls)delimiter(")>operator(:) string<delimiter(")char(\\b)char(\\f)char(\\n)char(\\r)char(\\t)delimiter(")>operator(,) + key<delimiter(")content(slash)delimiter(")>operator(:) string<delimiter(")content(/ & )char(\\/)delimiter(")>operator(,) + key<delimiter(")content(alpha)delimiter(")>operator(:) string<delimiter(")content(abcdefghijklmnopqrstuvwyz)delimiter(")>operator(,) + key<delimiter(")content(ALPHA)delimiter(")>operator(:) string<delimiter(")content(ABCDEFGHIJKLMNOPQRSTUVWYZ)delimiter(")>operator(,) + key<delimiter(")content(digit)delimiter(")>operator(:) string<delimiter(")content(0123456789)delimiter(")>operator(,) + key<delimiter(")content(special)delimiter(")>operator(:) string<delimiter(")content(`1~!@#$%^&*(\)_+-={':[,]}|;.</>?)delimiter(")>operator(,) + key<delimiter(")content(hex)delimiter(")>operator(:) string<delimiter(")char(\\u0123)char(\\u4567)char(\\u89AB)char(\\uCDEF)char(\\uabcd)char(\\uef4A)delimiter(")>operator(,) + key<delimiter(")content(true)delimiter(")>operator(:) reserved(true)operator(,) + key<delimiter(")content(false)delimiter(")>operator(:) reserved(false)operator(,) + key<delimiter(")content(null)delimiter(")>operator(:) reserved(null)operator(,) + key<delimiter(")content(array)delimiter(")>operator(:)operator([) operator(])operator(,) + key<delimiter(")content(object)delimiter(")>operator(:)operator({) operator(})operator(,) + key<delimiter(")content(address)delimiter(")>operator(:) string<delimiter(")content(50 St. James Street)delimiter(")>operator(,) + key<delimiter(")content(url)delimiter(")>operator(:) string<delimiter(")content(http://www.JSON.org/)delimiter(")>operator(,) + key<delimiter(")content(comment)delimiter(")>operator(:) string<delimiter(")content(// /* <!-- --)delimiter(")>operator(,) + key<delimiter(")content(# -- --> */)delimiter(")>operator(:) string<delimiter(")content( )delimiter(")>operator(,) + key<delimiter(")content( s p a c e d )delimiter(")> operator(:)operator([)integer(1)operator(,)integer(2) operator(,) integer(3) + +operator(,) + +integer(4) operator(,) integer(5) operator(,) integer(6) operator(,)integer(7) operator(])operator(,) + key<delimiter(")content(compact)delimiter(")>operator(:) operator([)integer(1)operator(,)integer(2)operator(,)integer(3)operator(,)integer(4)operator(,)integer(5)operator(,)integer(6)operator(,)integer(7)operator(])operator(,) + key<delimiter(")content(jsontext)delimiter(")>operator(:) string<delimiter(")content({)char(\\")content(object with 1 member)char(\\")content(:[)char(\\")content(array with 1 element)char(\\")content(]})delimiter(")>operator(,) + key<delimiter(")content(quotes)delimiter(")>operator(:) string<delimiter(")content(" )char(\\u0022)content( %22 0x22 034 ")delimiter(")>operator(,) + key<delimiter(")char(\\/)char(\\\\)char(\\")char(\\uCAFE)char(\\uBABE)char(\\uAB98)char(\\uFCDE)char(\\ubcda)char(\\uef4A)char(\\b)char(\\f)char(\\n)char(\\r)char(\\t)content(`1~!@#$%^&*(\)_+-=[]{}|;:',./<>?)delimiter(")> +operator(:) string<delimiter(")content(A key can be any string)delimiter(")> + operator(})operator(,) + float(0.5) operator(,)float(98.6) +operator(,) +float(99.44) +operator(,) + +integer(1066) + + +operator(,)string<delimiter(")content(rosebud)delimiter(")>operator(]) + +operator([)string<delimiter(")content(Illegal backslash escape: )content(\\x)content(15)delimiter(")>operator(]) + +operator([)string<delimiter(")content(Illegal backslash escape: )content(\\')delimiter(")>operator(]) + +operator([)string<delimiter(")content(Illegal backslash escape: )content(\\0)content(17)delimiter(")>operator(]) + +operator([)operator([)operator([)operator([)operator([)operator([)operator([)operator([)operator([)operator([)operator([)operator([)operator([)operator([)operator([)operator([)operator([)operator([)operator([)string<delimiter(")content(Not too deep)delimiter(")>operator(])operator(])operator(])operator(])operator(])operator(])operator(])operator(])operator(])operator(])operator(])operator(])operator(])operator(])operator(])operator(])operator(])operator(])operator(]) + +operator([)string<delimiter(")content(tab)content(\\ )content( character)content(\\ )content( in)content(\\ )content( string)content(\\ )content( )delimiter(")>operator(]) + +operator({) + key<delimiter(")content(JSON Test Pattern pass3)delimiter(")>operator(:) operator({) + key<delimiter(")content(The outermost value)delimiter(")>operator(:) string<delimiter(")content(must be an object or array.)delimiter(")>operator(,) + key<delimiter(")content(In this test)delimiter(")>operator(:) string<delimiter(")content(It is an object.)delimiter(")> + operator(}) +operator(}) diff --git a/test/scanners/json/json-lib.in.json b/test/scanners/json/json-lib.in.json new file mode 100644 index 0000000..b007f5a --- /dev/null +++ b/test/scanners/json/json-lib.in.json @@ -0,0 +1,73 @@ +[ + "JSON Test Pattern pass1", + {"object with 1 member":["array with 1 element"]}, + {}, + [], + -42, + true, + false, + null, + { + "integer": 1234567890, + "real": -9876.543210, + "e": 0.123456789e-12, + "E": 1.234567890E+34, + "": 23456789012E666, + "zero": 0, + "one": 1, + "space": " ", + "quote": "\"", + "backslash": "\\", + "controls": "\b\f\n\r\t", + "slash": "/ & \/", + "alpha": "abcdefghijklmnopqrstuvwyz", + "ALPHA": "ABCDEFGHIJKLMNOPQRSTUVWYZ", + "digit": "0123456789", + "special": "`1~!@#$%^&*()_+-={':[,]}|;.</>?", + "hex": "\u0123\u4567\u89AB\uCDEF\uabcd\uef4A", + "true": true, + "false": false, + "null": null, + "array":[ ], + "object":{ }, + "address": "50 St. James Street", + "url": "http://www.JSON.org/", + "comment": "// /* <!-- --", + "# -- --> */": " ", + " s p a c e d " :[1,2 , 3 + +, + +4 , 5 , 6 ,7 ], + "compact": [1,2,3,4,5,6,7], + "jsontext": "{\"object with 1 member\":[\"array with 1 element\"]}", + "quotes": "" \u0022 %22 0x22 034 "", + "\/\\\"\uCAFE\uBABE\uAB98\uFCDE\ubcda\uef4A\b\f\n\r\t`1~!@#$%^&*()_+-=[]{}|;:',./<>?" +: "A key can be any string" + }, + 0.5 ,98.6 +, +99.44 +, + +1066 + + +,"rosebud"] + +["Illegal backslash escape: \x15"] + +["Illegal backslash escape: \'"] + +["Illegal backslash escape: \017"] + +[[[[[[[[[[[[[[[[[[["Not too deep"]]]]]]]]]]]]]]]]]]] + +["tab\ character\ in\ string\ "] + +{ + "JSON Test Pattern pass3": { + "The outermost value": "must be an object or array.", + "In this test": "It is an object." + } +} diff --git a/test/scanners/json/suite.rb b/test/scanners/json/suite.rb new file mode 100644 index 0000000..3497d34 --- /dev/null +++ b/test/scanners/json/suite.rb @@ -0,0 +1,2 @@ +class JSON < CodeRay::TestCase +end |