js2 0.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/Changelog +0 -0
- data/History.txt +4 -0
- data/LICENSE +0 -0
- data/Manifest.txt +43 -0
- data/PostInstall.txt +7 -0
- data/README +0 -0
- data/README.rdoc +48 -0
- data/Rakefile +42 -0
- data/bin/js2 +61 -0
- data/examples/js2.yml +8 -0
- data/examples/test.yml +5 -0
- data/lib/javascript/sel_marker.js2 +139 -0
- data/lib/javascript/test.js2 +73 -0
- data/lib/js2/ast/class_node.rb +105 -0
- data/lib/js2/ast/comment_node.rb +2 -0
- data/lib/js2/ast/haml_node.rb +22 -0
- data/lib/js2/ast/include_node.rb +11 -0
- data/lib/js2/ast/inherited_node.rb +7 -0
- data/lib/js2/ast/member_node.rb +18 -0
- data/lib/js2/ast/method_node.rb +29 -0
- data/lib/js2/ast/module_node.rb +6 -0
- data/lib/js2/ast/node.rb +14 -0
- data/lib/js2/ast/nodes.rb +123 -0
- data/lib/js2/ast/stuff_node.rb +6 -0
- data/lib/js2/config.rb +34 -0
- data/lib/js2/daemon.rb +35 -0
- data/lib/js2/decorator/app.rb +7 -0
- data/lib/js2/decorator/cleanser.rb +54 -0
- data/lib/js2/decorator/standard.rb +127 -0
- data/lib/js2/decorator/test.rb +148 -0
- data/lib/js2/parser/fast.rb +3959 -0
- data/lib/js2/parser/haml.rb +123 -0
- data/lib/js2/process/file_handler.rb +84 -0
- data/lib/js2/process/haml_engine.rb +19 -0
- data/lib/js2/process/universe.rb +57 -0
- data/lib/js2/processor.rb +150 -0
- data/lib/js2/test/selenium.rb +111 -0
- data/lib/js2/test/selenium_element.rb +220 -0
- data/lib/js2/test/selenium_helper.rb +27 -0
- data/lib/js2.rb +95 -0
- data/lib/tasks/js2.rake +9 -0
- data/meta/c_tokenizer.rl.erb +322 -0
- data/meta/replace.rb +126 -0
- metadata +110 -0
    
        data/meta/replace.rb
    ADDED
    
    | @@ -0,0 +1,126 @@ | |
| 1 | 
            +
            require 'erb'
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            LITERALS = [ '!=', '!==', '#', '%', '%=', '&&', '&&=', '&=', '*', '*=', '+', '+=', ',', '-', '-=', '->', '.', '/', '/=', ':', '::', '<', '<<', '<<=', '<=', '=', '==', '===', '>', '>=', '>>', '>>=', '>>>', '>>>=', '?', '@', '[', '^', '^=', '^^', '^^=', '|', '|=', '||', '||=', 'abstract', 'break', 'case', 'catch', 'class', 'const', 'continue', 'debugger', 'default', 'delete', 'do', 'else', 'enum', 'export', 'extends', 'field', 'final', 'finally', 'for', 'function', 'goto', 'if', 'implements', 'import', 'in', 'instanceof', 'native', 'new', 'package', 'private', 'protected', 'public', 'return', 'static', 'switch', 'synchronized', 'throw', 'throws', 'transient', 'try', 'typeof', 'var', 'volatile', 'while', 'with', 'foreach', 'module', 'include' ]
         | 
| 4 | 
            +
             | 
| 5 | 
            +
            class Replacer
         | 
| 6 | 
            +
              def initialize
         | 
| 7 | 
            +
                @types = []
         | 
| 8 | 
            +
              end
         | 
| 9 | 
            +
             | 
| 10 | 
            +
              def start (type, start_idx = nil) 
         | 
| 11 | 
            +
                return <<-END
         | 
| 12 | 
            +
                  in_#{type} = 1;
         | 
| 13 | 
            +
                  start_#{type}  = #{start_idx || 'curr'};
         | 
| 14 | 
            +
                  line_#{type}   = line_number;
         | 
| 15 | 
            +
                  cb_lvl_#{type} = cb_count;
         | 
| 16 | 
            +
                  br_lvl_#{type} = br_count;
         | 
| 17 | 
            +
                END
         | 
| 18 | 
            +
              end
         | 
| 19 | 
            +
             | 
| 20 | 
            +
              # directly in
         | 
| 21 | 
            +
              def directly_in? (type)
         | 
| 22 | 
            +
                return "(cb_lvl_#{type} == (cb_count - 1) && in_#{type} == 1)"
         | 
| 23 | 
            +
              end
         | 
| 24 | 
            +
             | 
| 25 | 
            +
              def set_static
         | 
| 26 | 
            +
                return "rb_funcall2(self, set_static_sym, set_static_argc, set_static_argv);"
         | 
| 27 | 
            +
              end
         | 
| 28 | 
            +
             | 
| 29 | 
            +
              def def_literals
         | 
| 30 | 
            +
                ret = []
         | 
| 31 | 
            +
                LITERALS.each do |literal|
         | 
| 32 | 
            +
                  ret << "'#{literal}' whitespacecharacter* regexpliteral => { };"
         | 
| 33 | 
            +
                end
         | 
| 34 | 
            +
                ret.join("\n") + "\n"
         | 
| 35 | 
            +
              end
         | 
| 36 | 
            +
             | 
| 37 | 
            +
              def is? (type)
         | 
| 38 | 
            +
                return "strcmp(word, \"#{type.to_s.downcase}\") == 0"
         | 
| 39 | 
            +
              end
         | 
| 40 | 
            +
             | 
| 41 | 
            +
              def handle_stops (types) 
         | 
| 42 | 
            +
                ret = ''
         | 
| 43 | 
            +
                types.each do |type|
         | 
| 44 | 
            +
                  ret += <<-END
         | 
| 45 | 
            +
                    if (in_#{type} && cb_lvl_#{type} == cb_count) {
         | 
| 46 | 
            +
                      #{self.stop type}
         | 
| 47 | 
            +
                    }
         | 
| 48 | 
            +
                  END
         | 
| 49 | 
            +
                end
         | 
| 50 | 
            +
             | 
| 51 | 
            +
                return ret
         | 
| 52 | 
            +
              end
         | 
| 53 | 
            +
             | 
| 54 | 
            +
              def handle_semicolon_stops (types)
         | 
| 55 | 
            +
                ret = ''
         | 
| 56 | 
            +
                types.each do |type|
         | 
| 57 | 
            +
                  ret += <<-END
         | 
| 58 | 
            +
                    if (in_#{type} == 1) {
         | 
| 59 | 
            +
                      #{self.stop type}
         | 
| 60 | 
            +
                    }
         | 
| 61 | 
            +
                  END
         | 
| 62 | 
            +
                end
         | 
| 63 | 
            +
                return ret
         | 
| 64 | 
            +
              end
         | 
| 65 | 
            +
             | 
| 66 | 
            +
              def declare_vars (types)
         | 
| 67 | 
            +
                ret = ''
         | 
| 68 | 
            +
                types.each do |type|
         | 
| 69 | 
            +
                  ret += self.declare(type)
         | 
| 70 | 
            +
                end
         | 
| 71 | 
            +
             | 
| 72 | 
            +
                return ret
         | 
| 73 | 
            +
              end
         | 
| 74 | 
            +
             | 
| 75 | 
            +
              def do_next (type, start, stop) 
         | 
| 76 | 
            +
                return <<-END
         | 
| 77 | 
            +
                  do_next_argv[0] = sym_#{type};
         | 
| 78 | 
            +
                  do_next_argv[1] = INT2FIX(#{start});
         | 
| 79 | 
            +
                  do_next_argv[2] = INT2FIX(#{stop});
         | 
| 80 | 
            +
                  do_next_argv[3] = INT2FIX(0);
         | 
| 81 | 
            +
                  rb_funcall2(self, do_next_sym, do_next_argc, do_next_argv);
         | 
| 82 | 
            +
                END
         | 
| 83 | 
            +
              end
         | 
| 84 | 
            +
             | 
| 85 | 
            +
              def stop (type, stop = nil)
         | 
| 86 | 
            +
                return <<-END
         | 
| 87 | 
            +
                  in_#{type}     = 0;
         | 
| 88 | 
            +
                  cb_lvl_#{type} = -1;
         | 
| 89 | 
            +
                  do_next_argv[0] = sym_#{type};
         | 
| 90 | 
            +
                  do_next_argv[1] = INT2FIX(start_#{type});
         | 
| 91 | 
            +
                  do_next_argv[2] = INT2FIX(#{stop || 'curr'});
         | 
| 92 | 
            +
                  do_next_argv[3] = INT2FIX(0);
         | 
| 93 | 
            +
                  rb_funcall2(self, do_next_sym, do_next_argc, do_next_argv);
         | 
| 94 | 
            +
                END
         | 
| 95 | 
            +
              end
         | 
| 96 | 
            +
             | 
| 97 | 
            +
             | 
| 98 | 
            +
              def declare (type)
         | 
| 99 | 
            +
                return <<-END
         | 
| 100 | 
            +
                  // #{type}
         | 
| 101 | 
            +
                  int in_#{type}     = 0;   
         | 
| 102 | 
            +
                  int start_#{type}  = -1;   
         | 
| 103 | 
            +
                  int line_#{type}   = 0;   
         | 
| 104 | 
            +
                  int cb_lvl_#{type} = -1;
         | 
| 105 | 
            +
                  int br_lvl_#{type} = 0;
         | 
| 106 | 
            +
                  ID  sym_#{type}    = ID2SYM(rb_intern("#{type}"));
         | 
| 107 | 
            +
                END
         | 
| 108 | 
            +
              end
         | 
| 109 | 
            +
             | 
| 110 | 
            +
              def set_keyword
         | 
| 111 | 
            +
                <<-END 
         | 
| 112 | 
            +
                  for (j=0, i=ts-data; i<te-data; i++) {
         | 
| 113 | 
            +
                    word[j] = data[i];
         | 
| 114 | 
            +
                    ++j;
         | 
| 115 | 
            +
                  }
         | 
| 116 | 
            +
                  word[j] = 0;
         | 
| 117 | 
            +
                END
         | 
| 118 | 
            +
              end
         | 
| 119 | 
            +
            end
         | 
| 120 | 
            +
             | 
| 121 | 
            +
            replacer = Replacer.new
         | 
| 122 | 
            +
            template = ERB.new(File.read('c_tokenizer.rl.erb'), 0, "%<>")
         | 
| 123 | 
            +
             | 
| 124 | 
            +
            File.open('final_tokenizer.rl', 'w') do |f|
         | 
| 125 | 
            +
              f << template.result(binding)
         | 
| 126 | 
            +
            end
         | 
    
        metadata
    ADDED
    
    | @@ -0,0 +1,110 @@ | |
| 1 | 
            +
            --- !ruby/object:Gem::Specification 
         | 
| 2 | 
            +
            name: js2
         | 
| 3 | 
            +
            version: !ruby/object:Gem::Version 
         | 
| 4 | 
            +
              version: 0.0.1
         | 
| 5 | 
            +
            platform: ruby
         | 
| 6 | 
            +
            authors: 
         | 
| 7 | 
            +
            - Jeff Su
         | 
| 8 | 
            +
            autorequire: 
         | 
| 9 | 
            +
            bindir: bin
         | 
| 10 | 
            +
            cert_chain: []
         | 
| 11 | 
            +
             | 
| 12 | 
            +
            date: 2009-11-23 00:00:00 -08:00
         | 
| 13 | 
            +
            default_executable: 
         | 
| 14 | 
            +
            dependencies: 
         | 
| 15 | 
            +
            - !ruby/object:Gem::Dependency 
         | 
| 16 | 
            +
              name: hoe
         | 
| 17 | 
            +
              type: :development
         | 
| 18 | 
            +
              version_requirement: 
         | 
| 19 | 
            +
              version_requirements: !ruby/object:Gem::Requirement 
         | 
| 20 | 
            +
                requirements: 
         | 
| 21 | 
            +
                - - ">="
         | 
| 22 | 
            +
                  - !ruby/object:Gem::Version 
         | 
| 23 | 
            +
                    version: 2.3.3
         | 
| 24 | 
            +
                version: 
         | 
| 25 | 
            +
            description: FIX (describe your package)
         | 
| 26 | 
            +
            email: 
         | 
| 27 | 
            +
            - me@jeffsu.com
         | 
| 28 | 
            +
            executables: 
         | 
| 29 | 
            +
            - js2
         | 
| 30 | 
            +
            extensions: []
         | 
| 31 | 
            +
             | 
| 32 | 
            +
            extra_rdoc_files: 
         | 
| 33 | 
            +
            - History.txt
         | 
| 34 | 
            +
            - Manifest.txt
         | 
| 35 | 
            +
            - PostInstall.txt
         | 
| 36 | 
            +
            files: 
         | 
| 37 | 
            +
            - Changelog
         | 
| 38 | 
            +
            - History.txt
         | 
| 39 | 
            +
            - LICENSE
         | 
| 40 | 
            +
            - Manifest.txt
         | 
| 41 | 
            +
            - PostInstall.txt
         | 
| 42 | 
            +
            - README
         | 
| 43 | 
            +
            - README.rdoc
         | 
| 44 | 
            +
            - Rakefile
         | 
| 45 | 
            +
            - examples/js2.yml
         | 
| 46 | 
            +
            - examples/test.yml
         | 
| 47 | 
            +
            - lib/javascript/sel_marker.js2
         | 
| 48 | 
            +
            - lib/javascript/test.js2
         | 
| 49 | 
            +
            - lib/js2.rb
         | 
| 50 | 
            +
            - lib/js2/ast/class_node.rb
         | 
| 51 | 
            +
            - lib/js2/ast/comment_node.rb
         | 
| 52 | 
            +
            - lib/js2/ast/haml_node.rb
         | 
| 53 | 
            +
            - lib/js2/ast/include_node.rb
         | 
| 54 | 
            +
            - lib/js2/ast/inherited_node.rb
         | 
| 55 | 
            +
            - lib/js2/ast/member_node.rb
         | 
| 56 | 
            +
            - lib/js2/ast/method_node.rb
         | 
| 57 | 
            +
            - lib/js2/ast/module_node.rb
         | 
| 58 | 
            +
            - lib/js2/ast/node.rb
         | 
| 59 | 
            +
            - lib/js2/ast/nodes.rb
         | 
| 60 | 
            +
            - lib/js2/ast/stuff_node.rb
         | 
| 61 | 
            +
            - lib/js2/config.rb
         | 
| 62 | 
            +
            - lib/js2/daemon.rb
         | 
| 63 | 
            +
            - lib/js2/decorator/app.rb
         | 
| 64 | 
            +
            - lib/js2/decorator/cleanser.rb
         | 
| 65 | 
            +
            - lib/js2/decorator/standard.rb
         | 
| 66 | 
            +
            - lib/js2/decorator/test.rb
         | 
| 67 | 
            +
            - lib/js2/parser/fast.rb
         | 
| 68 | 
            +
            - lib/js2/parser/haml.rb
         | 
| 69 | 
            +
            - lib/js2/process/file_handler.rb
         | 
| 70 | 
            +
            - lib/js2/process/haml_engine.rb
         | 
| 71 | 
            +
            - lib/js2/process/universe.rb
         | 
| 72 | 
            +
            - lib/js2/processor.rb
         | 
| 73 | 
            +
            - lib/js2/test/selenium.rb
         | 
| 74 | 
            +
            - lib/js2/test/selenium_element.rb
         | 
| 75 | 
            +
            - lib/js2/test/selenium_helper.rb
         | 
| 76 | 
            +
            - lib/tasks/js2.rake
         | 
| 77 | 
            +
            - meta/c_tokenizer.rl.erb
         | 
| 78 | 
            +
            - meta/replace.rb
         | 
| 79 | 
            +
            - bin/js2
         | 
| 80 | 
            +
            has_rdoc: true
         | 
| 81 | 
            +
            homepage: http://github.com/#{github_username}/#{project_name}
         | 
| 82 | 
            +
            licenses: []
         | 
| 83 | 
            +
             | 
| 84 | 
            +
            post_install_message: 
         | 
| 85 | 
            +
            rdoc_options: 
         | 
| 86 | 
            +
            - --main
         | 
| 87 | 
            +
            - README.rdoc
         | 
| 88 | 
            +
            require_paths: 
         | 
| 89 | 
            +
            - lib
         | 
| 90 | 
            +
            required_ruby_version: !ruby/object:Gem::Requirement 
         | 
| 91 | 
            +
              requirements: 
         | 
| 92 | 
            +
              - - ">="
         | 
| 93 | 
            +
                - !ruby/object:Gem::Version 
         | 
| 94 | 
            +
                  version: "0"
         | 
| 95 | 
            +
              version: 
         | 
| 96 | 
            +
            required_rubygems_version: !ruby/object:Gem::Requirement 
         | 
| 97 | 
            +
              requirements: 
         | 
| 98 | 
            +
              - - ">="
         | 
| 99 | 
            +
                - !ruby/object:Gem::Version 
         | 
| 100 | 
            +
                  version: "0"
         | 
| 101 | 
            +
              version: 
         | 
| 102 | 
            +
            requirements: []
         | 
| 103 | 
            +
             | 
| 104 | 
            +
            rubyforge_project: js2
         | 
| 105 | 
            +
            rubygems_version: 1.3.5
         | 
| 106 | 
            +
            signing_key: 
         | 
| 107 | 
            +
            specification_version: 3
         | 
| 108 | 
            +
            summary: FIX (describe your package)
         | 
| 109 | 
            +
            test_files: []
         | 
| 110 | 
            +
             |