irust 1.0.1 → 1.1.0
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.
- checksums.yaml +4 -4
- data/CHANGES.md +7 -0
- data/README.md +2 -2
- data/lib/irust.rb +12 -18
- data/lib/irust/template.rs.erb +20 -0
- data/lib/irust/template_renderer.rb +22 -0
- data/lib/irust/version.rb +1 -1
- metadata +12 -10
    
        checksums.yaml
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 2 | 
             
            SHA1:
         | 
| 3 | 
            -
              metadata.gz:  | 
| 4 | 
            -
              data.tar.gz:  | 
| 3 | 
            +
              metadata.gz: d71c1afd38f1f48fc58a4705783bd9de7f058f20
         | 
| 4 | 
            +
              data.tar.gz: ae752373a7856bd1cb5b9fc2c81feee7e12ed0fb
         | 
| 5 5 | 
             
            SHA512:
         | 
| 6 | 
            -
              metadata.gz:  | 
| 7 | 
            -
              data.tar.gz:  | 
| 6 | 
            +
              metadata.gz: 9a90fcd4505d163b5f28ac2e496dfb14251386519039d35e9e41a7a57d24112763d8e98b879d0f873268cbd7078f740439edac06b4223dd33771ee0c225c714c
         | 
| 7 | 
            +
              data.tar.gz: 1157872356efef33da734d5be8be7c9a344723463cbddba868138f2ef2b2d43b5a0135f7fac5ba4619438ce02b477afc0e3284b8cbd2428dcbedc78a4a2810bd
         | 
    
        data/CHANGES.md
    CHANGED
    
    | @@ -1,3 +1,10 @@ | |
| 1 | 
            +
            1.1.0 (2014-01-05)
         | 
| 2 | 
            +
            ------------------
         | 
| 3 | 
            +
            * Keep a basic history
         | 
| 4 | 
            +
            * Show the type of the return value
         | 
| 5 | 
            +
            * Display the type and value of let and fn statements
         | 
| 6 | 
            +
            * Rewrite internals around an ERB template
         | 
| 7 | 
            +
             | 
| 1 8 | 
             
            1.0.1 (2013-12-22)
         | 
| 2 9 | 
             
            ------------------
         | 
| 3 10 | 
             
            * Exit properly when ^D is pressed
         | 
    
        data/README.md
    CHANGED
    
    | @@ -47,7 +47,7 @@ Now type some fancy Rust expressions and watch them get magically evaluated | |
| 47 47 | 
             
            before your eyes!
         | 
| 48 48 |  | 
| 49 49 | 
             
                irust> 2+2
         | 
| 50 | 
            -
                4
         | 
| 50 | 
            +
                4 : int
         | 
| 51 51 | 
             
                irust>
         | 
| 52 52 |  | 
| 53 53 | 
             
            Technology!
         | 
| @@ -60,5 +60,5 @@ Technology! | |
| 60 60 |  | 
| 61 61 | 
             
            ## License
         | 
| 62 62 |  | 
| 63 | 
            -
            Copyright (c)  | 
| 63 | 
            +
            Copyright (c) 2014 Tony Arcieri. Distributed under the MIT License. See
         | 
| 64 64 | 
             
            LICENSE.txt for further details.
         | 
    
        data/lib/irust.rb
    CHANGED
    
    | @@ -2,6 +2,8 @@ require "readline" | |
| 2 2 | 
             
            require "tmpdir"
         | 
| 3 3 | 
             
            require "open3"
         | 
| 4 4 |  | 
| 5 | 
            +
            require "irust/template_renderer"
         | 
| 6 | 
            +
             | 
| 5 7 | 
             
            module IRust
         | 
| 6 8 | 
             
              module_function
         | 
| 7 9 |  | 
| @@ -9,21 +11,8 @@ module IRust | |
| 9 11 | 
             
                Readline.readline("irust> ", true)
         | 
| 10 12 | 
             
              end
         | 
| 11 13 |  | 
| 12 | 
            -
              def rust_program(line)
         | 
| 13 | 
            -
             | 
| 14 | 
            -
            #[feature(globs, macro_rules, struct_variant)];
         | 
| 15 | 
            -
            extern mod extra;
         | 
| 16 | 
            -
             | 
| 17 | 
            -
            fn main() {
         | 
| 18 | 
            -
              let r = {
         | 
| 19 | 
            -
                fn type_of<T>(_: &T) -> &'static str { unsafe {
         | 
| 20 | 
            -
                (*std::unstable::intrinsics::get_tydesc::<T>()).name } } struct
         | 
| 21 | 
            -
                Foo<T>(T);
         | 
| 22 | 
            -
                #{line}
         | 
| 23 | 
            -
              };
         | 
| 24 | 
            -
              println!("{:?}", r)
         | 
| 25 | 
            -
            }
         | 
| 26 | 
            -
            RUST
         | 
| 14 | 
            +
              def rust_program(line, history)
         | 
| 15 | 
            +
                IRust::TemplateRenderer.new(line, history).render
         | 
| 27 16 | 
             
              end
         | 
| 28 17 |  | 
| 29 18 | 
             
              def compile(tmpdir)
         | 
| @@ -39,20 +28,25 @@ RUST | |
| 39 28 | 
             
                end
         | 
| 40 29 | 
             
              end
         | 
| 41 30 |  | 
| 42 | 
            -
              def eval(line)
         | 
| 31 | 
            +
              def eval(line, history = nil)
         | 
| 43 32 | 
             
                exit 0 if line.nil?
         | 
| 44 33 |  | 
| 45 34 | 
             
                Dir.mktmpdir do |tmpdir|
         | 
| 46 35 | 
             
                  input_src = File.join(tmpdir, "irust.rs")
         | 
| 47 | 
            -
                  File.write input_src, rust_program(line)
         | 
| 36 | 
            +
                  File.write input_src, rust_program(line, history)
         | 
| 48 37 |  | 
| 49 38 | 
             
                  if compile(tmpdir)
         | 
| 50 39 | 
             
                    system input_src.sub(/\.rs$/, '')
         | 
| 40 | 
            +
                    history + ";\n" + line
         | 
| 41 | 
            +
                  else
         | 
| 42 | 
            +
                    history
         | 
| 51 43 | 
             
                  end
         | 
| 52 44 | 
             
                end
         | 
| 53 45 | 
             
              end
         | 
| 54 46 |  | 
| 55 47 | 
             
              def run
         | 
| 56 | 
            -
                 | 
| 48 | 
            +
                history = ""
         | 
| 49 | 
            +
                loop { history = eval read, history }
         | 
| 57 50 | 
             
              end
         | 
| 58 51 | 
             
            end
         | 
| 52 | 
            +
             | 
| @@ -0,0 +1,20 @@ | |
| 1 | 
            +
            #[feature(globs, macro_rules, struct_variant)];
         | 
| 2 | 
            +
            extern mod extra;
         | 
| 3 | 
            +
             | 
| 4 | 
            +
            fn main() {
         | 
| 5 | 
            +
              fn type_of<T>(_: &T) -> &'static str {
         | 
| 6 | 
            +
                unsafe {
         | 
| 7 | 
            +
                  (*std::unstable::intrinsics::get_tydesc::<T>()).name
         | 
| 8 | 
            +
                }
         | 
| 9 | 
            +
              } struct Foo<T>(T);
         | 
| 10 | 
            +
             | 
| 11 | 
            +
              <%= history %>;
         | 
| 12 | 
            +
              
         | 
| 13 | 
            +
              <% if let_var %>
         | 
| 14 | 
            +
              <%= rust_code %>;
         | 
| 15 | 
            +
              println!("<%= let_var%> = {:?} : {:s}", <%= let_var %>, type_of(&<%= let_var %>));
         | 
| 16 | 
            +
              <% else %>
         | 
| 17 | 
            +
              let _result = { <%= rust_code %> };
         | 
| 18 | 
            +
              println!("{:?} : {:s}", _result, type_of(&_result));
         | 
| 19 | 
            +
              <% end %>
         | 
| 20 | 
            +
            }
         | 
| @@ -0,0 +1,22 @@ | |
| 1 | 
            +
            require 'erb'
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            module IRust
         | 
| 4 | 
            +
              class TemplateRenderer
         | 
| 5 | 
            +
                RUST_TEMPLATE = File.expand_path("../template.rs.erb", __FILE__)
         | 
| 6 | 
            +
             | 
| 7 | 
            +
                attr_reader :rust_code, :history
         | 
| 8 | 
            +
             | 
| 9 | 
            +
                def initialize(rust_code, history = nil)
         | 
| 10 | 
            +
                  @rust_code, @history = rust_code, history
         | 
| 11 | 
            +
                end
         | 
| 12 | 
            +
             | 
| 13 | 
            +
                def render
         | 
| 14 | 
            +
                  template = File.read(RUST_TEMPLATE)
         | 
| 15 | 
            +
                  ERB.new(template).result(binding)
         | 
| 16 | 
            +
                end
         | 
| 17 | 
            +
             | 
| 18 | 
            +
                def let_var
         | 
| 19 | 
            +
                  rust_code[/^\s*(let|fn)\s+(mut\s+)?(\w+)/, 3]
         | 
| 20 | 
            +
                end
         | 
| 21 | 
            +
              end
         | 
| 22 | 
            +
            end
         | 
    
        data/lib/irust/version.rb
    CHANGED
    
    
    
        metadata
    CHANGED
    
    | @@ -1,41 +1,41 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: irust
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version: 1.0 | 
| 4 | 
            +
              version: 1.1.0
         | 
| 5 5 | 
             
            platform: ruby
         | 
| 6 6 | 
             
            authors:
         | 
| 7 7 | 
             
            - Tony Arcieri
         | 
| 8 8 | 
             
            autorequire: 
         | 
| 9 9 | 
             
            bindir: bin
         | 
| 10 10 | 
             
            cert_chain: []
         | 
| 11 | 
            -
            date:  | 
| 11 | 
            +
            date: 2014-01-05 00:00:00.000000000 Z
         | 
| 12 12 | 
             
            dependencies:
         | 
| 13 13 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 14 14 | 
             
              name: bundler
         | 
| 15 15 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| 16 16 | 
             
                requirements:
         | 
| 17 | 
            -
                - - ~>
         | 
| 17 | 
            +
                - - "~>"
         | 
| 18 18 | 
             
                  - !ruby/object:Gem::Version
         | 
| 19 19 | 
             
                    version: '1.3'
         | 
| 20 20 | 
             
              type: :development
         | 
| 21 21 | 
             
              prerelease: false
         | 
| 22 22 | 
             
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 23 23 | 
             
                requirements:
         | 
| 24 | 
            -
                - - ~>
         | 
| 24 | 
            +
                - - "~>"
         | 
| 25 25 | 
             
                  - !ruby/object:Gem::Version
         | 
| 26 26 | 
             
                    version: '1.3'
         | 
| 27 27 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 28 28 | 
             
              name: rake
         | 
| 29 29 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| 30 30 | 
             
                requirements:
         | 
| 31 | 
            -
                - -  | 
| 31 | 
            +
                - - ">="
         | 
| 32 32 | 
             
                  - !ruby/object:Gem::Version
         | 
| 33 33 | 
             
                    version: '0'
         | 
| 34 34 | 
             
              type: :development
         | 
| 35 35 | 
             
              prerelease: false
         | 
| 36 36 | 
             
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 37 37 | 
             
                requirements:
         | 
| 38 | 
            -
                - -  | 
| 38 | 
            +
                - - ">="
         | 
| 39 39 | 
             
                  - !ruby/object:Gem::Version
         | 
| 40 40 | 
             
                    version: '0'
         | 
| 41 41 | 
             
            description: iRust is an interactive REPL for Rust
         | 
| @@ -46,7 +46,7 @@ executables: | |
| 46 46 | 
             
            extensions: []
         | 
| 47 47 | 
             
            extra_rdoc_files: []
         | 
| 48 48 | 
             
            files:
         | 
| 49 | 
            -
            - .gitignore
         | 
| 49 | 
            +
            - ".gitignore"
         | 
| 50 50 | 
             
            - CHANGES.md
         | 
| 51 51 | 
             
            - Gemfile
         | 
| 52 52 | 
             
            - LICENSE.txt
         | 
| @@ -55,6 +55,8 @@ files: | |
| 55 55 | 
             
            - bin/irust
         | 
| 56 56 | 
             
            - irust.gemspec
         | 
| 57 57 | 
             
            - lib/irust.rb
         | 
| 58 | 
            +
            - lib/irust/template.rs.erb
         | 
| 59 | 
            +
            - lib/irust/template_renderer.rb
         | 
| 58 60 | 
             
            - lib/irust/version.rb
         | 
| 59 61 | 
             
            homepage: https://github.com/tarcieri/irust
         | 
| 60 62 | 
             
            licenses:
         | 
| @@ -66,17 +68,17 @@ require_paths: | |
| 66 68 | 
             
            - lib
         | 
| 67 69 | 
             
            required_ruby_version: !ruby/object:Gem::Requirement
         | 
| 68 70 | 
             
              requirements:
         | 
| 69 | 
            -
              - -  | 
| 71 | 
            +
              - - ">="
         | 
| 70 72 | 
             
                - !ruby/object:Gem::Version
         | 
| 71 73 | 
             
                  version: '0'
         | 
| 72 74 | 
             
            required_rubygems_version: !ruby/object:Gem::Requirement
         | 
| 73 75 | 
             
              requirements:
         | 
| 74 | 
            -
              - -  | 
| 76 | 
            +
              - - ">="
         | 
| 75 77 | 
             
                - !ruby/object:Gem::Version
         | 
| 76 78 | 
             
                  version: '0'
         | 
| 77 79 | 
             
            requirements: []
         | 
| 78 80 | 
             
            rubyforge_project: 
         | 
| 79 | 
            -
            rubygems_version: 2.0 | 
| 81 | 
            +
            rubygems_version: 2.2.0
         | 
| 80 82 | 
             
            signing_key: 
         | 
| 81 83 | 
             
            specification_version: 4
         | 
| 82 84 | 
             
            summary: Read, Eval, and Print Rust code to your heart's desire!
         |