Rietveld Code Review Tool
Help | Bug tracker | Discussion group | Source code

Unified Diff: chrome/content/sandbox_ui.js

Issue 9615013: Crawler, first version (Closed)
Patch Set: Created March 6, 2013, 4:05 a.m.
Use n/p to move between diff chunks; N/P to move between comments.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/content/sandbox_ui.js
===================================================================
new file mode 100644
--- /dev/null
+++ b/chrome/content/sandbox_ui.js
@@ -0,0 +1,230 @@
+let {Logger} = require( "logger" );
+let {Encoding} = require( "encoding" );
+let {YAML, YamlParseException} = require( "yaml" );
+
+var what = "YAML_input";
+var output_box;
+function sandbox_start()
+{
+ output_box = document.getElementById( "sandbox_output" );
+ switch ( what )
+ {
+ case "Encoding":
+ exercise_Encoding();
+ break;
+ case "YAML_input":
+ exercise_YAML_input();
+ break;
+ }
+}
+
+var write = function( s )
+{
+ output_box.value += s;
+};
+
+
+var logger = new Logger( "sandbox" );
+var log = logger.make_log();
+
+function wrapped_parse( s )
+{
+ try
+ {
+ return YAML.parse( s );
+ }
+ catch ( e if e instanceof YamlParseException )
+ {
+ write( "YamlParseException: " + e.message + "\n" );
+ }
+ catch ( e )
+ {
+ write( "Exception: " + e.toString() + "\nstack = " + e.stack + "\n" );
+ }
+ return null;
+}
+
+//=========================================================================================
+// exercise_YAML_input
+//=========================================================================================
+function exercise_YAML_input()
+{
+ log( "Start YAML input" );
+
+ //-----------------------------------------------------------------------------------------
+ write( "---\n" );
+ write( "# 0\n" );
+ var s = ""
+ + "name: foo\n"
+ + "site:\n"
+ + " - yahoo.com\n"
+ + " - ksl.com\n"
+ + "";
+ var x = wrapped_parse( s );
+ if ( x )
+ {
+ write( JSON.stringify( x ) );
+ write( "\n" );
+ }
+ //-----------------------------------------------------------------------------------------
+ write( "---\n" );
+ write( "# 1\n" );
+ s = ""
+ + "name: foo\n"
+ + "site:\n"
+ + " - yahoo.com\n"
+ + " error no array element mark\n"
+ + " - ksl.com\n"
+ + "";
+ x = wrapped_parse( s );
+ if ( x )
+ {
+ write( JSON.stringify( x ) );
+ write( "\n" );
+ }
+}
+
+//=========================================================================================
+// exercise_Encoding
+//=========================================================================================
+function exercise_Encoding()
+{
+ log( "Start" );
+
+ let formatter = new Encoding.YAML( write );
+ var y = new Encoding.Format_stream( formatter );
+ y.logger.suppress( true );
+
+ //-----------------------------------------------------------------------------------------
+ write( "---\n" );
+ write( "# 0\n" );
+ y.write( "# Output generated with YAML_stream" );
+
+ //-----------------------------------------------------------------------------------------
+ write( "---\n" );
+ write( "# 1\n" );
+ Cu.reportError( "1." );
+ var g = y.write( "Test string" );
+ if ( g )
+ {
+ log( "1. error: immediate array spec returned non-null generator" );
+ }
+
+ //-----------------------------------------------------------------------------------------
+ write( "---\n" );
+ write( "# 2\n" );
+ try
+ {
+ Cu.reportError( "2." );
+ var test_array = [ "item 1", "item 2", [ "item 3.1", "item 3.2" ], { a: "item 4a", b: "item 4b" } ];
+ y.write( test_array, Encoding.array() );
+ }
+ catch ( e )
+ {
+ Cu.reportError( "error in 2: " + e.toString() + "\n" + e.stack );
+ throw e;
+ }
+
+ //-----------------------------------------------------------------------------------------
+ write( "---\n" );
+ write( "# 3\n" );
+ try
+ {
+ Cu.reportError( "3." );
+ /*
+ * An array of deferred arrays.
+ */
+ y.write( [ "3" ], Encoding.array_stream() );
+ y.sequence_start();
+ for ( let i = 0 ; i < test_array.length ; ++i )
+ {
+ try
+ {
+ y.sequence_send( test_array[i] );
+ }
+ catch ( e )
+ {
+ if ( e !== StopIteration ) throw e;
+ log( "3. StopIteration at " + i );
+ break;
+ }
+ }
+ y.sequence_stop();
+ }
+ catch ( e )
+ {
+ Cu.reportError( "error in 3: " + e.toString() + "\n" + e.stack );
+ throw e;
+ }
+
+ //-----------------------------------------------------------------------------------------
+ write( "---\n" );
+ write( "# 4\n" );
+ Cu.reportError( "4." );
+
+ y.write( [ "4" ], Encoding.array_stream( Encoding.array_stream() ) );
+ y.sequence_start();
+ for ( let i = 0 ; i < 3 ; ++i )
+ {
+ y.sequence_start();
+ let n = [1, 0, 2][ i ];
+ for ( let j = 0 ; j < n ; ++j )
+ {
+ let s = "item " + ( i + 1 ) + "." + j;
+ //log( "4. " + s );
+ try
+ {
+ y.sequence_send( s );
+ }
+ catch ( e )
+ {
+ if ( e !== StopIteration ) throw e;
+ log( "4. StopIteration at " + i + "," + j );
+ throw e;
+ }
+ }
+ y.sequence_stop();
+ }
+ y.sequence_stop();
+
+ //-----------------------------------------------------------------------------------------
+ write( "---\n" );
+ write( "# 5\n" );
+ Cu.reportError( "5." );
+
+ var object_5 = {
+ time_start: "now",
+ instruction: {
+ "this": "this",
+ that: "that",
+ the_other_thing: null
+ }
+ };
+ var object_5_encoding = Encoding.as_object( [
+ // prelude
+ Encoding.immediate_fields( ["time_start", "instruction"] ),
+ // observation
+ Encoding.field( "observation", Encoding.array_stream() ),
+ // postlude
+ Encoding.immediate_fields( ["time_finish", "termination"] )
+ ] );
+
+ y.write( object_5, object_5_encoding );
+ y.sequence_start();
+ for ( let i = 0 ; i < 3 ; ++i )
+ {
+ y.sequence_send( { site: "site " + i, square: i * i } );
+ }
+ object_5.time_finish = "later";
+ object_5.termination = "success";
+ y.sequence_stop();
+
+ //-----------------------------------------------------------------------------------------
+ write( "---\n" );
+ if ( !y.may_write() )
+ {
+ var failure_message = "FAILURE: object streamer ended in an incomplete state.";
+ write( failure_message );
+ Cu.reportError( failure_message );
+ }
+}
« .hgignore ('K') | « chrome/content/crawler_ui.js ('k') | chrome/content/task_test_ui.js » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld