Skip to content
This repository has been archived by the owner on Jun 24, 2018. It is now read-only.
/ jcon Public archive

Conformance checking of JSON values against ECMAScript 4.0 types

License

Notifications You must be signed in to change notification settings

osteele/jcon

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

23 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

JCon – JavaScript Type Conformance Checking

JCON (the “JavaScript Conformance” gem), is a companion to JSON. It tests JSON values against ECMAScript 4.0-style type definitions (PDF), such as string?, (int, boolean), or [string, (int, boolean), {x:double, y:double}?].

JCON also defines an RSpec matcher, conforms_to_js.

Use JCON together with the JavaScript Fu Rails plugin to test the argument values in generated JavaScript function calls.

Install

gem install rcon

Usage

type = JCON::parse "[string, int]"
type.contains?(['a', 1]) # => true
type.contains?(['a', 'b']) # => false
type.contains?(['a', 1, 2]) # => true

type = JCON::parse "type S = (string, int); {a: [S], b: int}"
type.contains?({:a => [1, 'b'], :b => 2}) # => true

RSpec Matcher

[1, 'xyzzy'].should conform_to_js('[int, string]')
[1, 2, 'xyzzy'].should_not conform_to_js('[int, string]')
{:x => 1}.should conform_to_js('{x: int}')

Use this with the JavaScript Fu Rails plugin to test JSON arguments:

'<script>fn("id", {x:1, y:2}, true)</script>'.should call_js('fn') do |args|
  args[0].should conform_to_js('string')
  args[1].should conform_to_js('{x:int, y:int}')
  args[2].should conform_to_js('boolean')
  # or:
  args.should conform_to_js('[string, {x:int, y:int}, boolean]')
end

License

Copyright 2008 by Oliver Steele. All rights reserved. Released under the MIT License.

About

Conformance checking of JSON values against ECMAScript 4.0 types

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages