• Login
sketchucation logo sketchucation
  • Login
ℹ️ Licensed Extensions | FredoBatch, ElevationProfile, FredoSketch, LayOps, MatSim and Pic2Shape will require license from Sept 1st More Info

Stop processing rest of file?

Scheduled Pinned Locked Moved Developers' Forum
14 Posts 3 Posters 465 Views 3 Watching
Loading More Posts
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • T Offline
    thomthom
    last edited by 16 Feb 2012, 15:24

    Regardless of load or require being used - I try to find a method that will stop ruby from processing the rest of the file - without killing SketchUp itself.

    Thomas Thomassen — SketchUp Monkey & Coding addict
    List of my plugins and link to the CookieWare fund

    1 Reply Last reply Reply Quote 0
    • D Offline
      Dan Rathbun
      last edited by 16 Feb 2012, 15:27

      In my prototype I also have a step that is only a comment at this point:

      a) Display a webdialog here so the user can download the file(s).

      b) call retry if download successful

      I'm not here much anymore.

      1 Reply Last reply Reply Quote 0
      • D Offline
        Dan Rathbun
        last edited by 16 Feb 2012, 15:28

        So far I am trying my best to NOT touch or override either require or load themselves.

        I'm not here much anymore.

        1 Reply Last reply Reply Quote 0
        • T Offline
          tbd
          last edited by 16 Feb 2012, 15:36

          have a separate loader.rb that checks if LIB exists and has functions required.
          if yes, require/load rest of your code, if not ...

          SketchUp Ruby Consultant | Podium 1.x developer
          http://plugins.ro

          1 Reply Last reply Reply Quote 0
          • D Offline
            Dan Rathbun
            last edited by 16 Feb 2012, 17:07

            Having to have yet ANOTHER file for each and every library or plugin package, is not what I am aiming at...

            ... besides that does not solve the idiot situation, trying to force a plugin to load, using load(), when require does not work.
            I'm not sure there is a solution to the idiot syndrome anyway. I (personally,) would not give any support, or waste any time responding, to an idiot who does not let the plugin load the way it's supposed to.

            I'm not here much anymore.

            1 Reply Last reply Reply Quote 0
            • D Offline
              Dan Rathbun
              last edited by 16 Feb 2012, 17:48

              ThomThom, for now do something like:

              module TT_FancyUtil
              
                # move require dependancy calls inside namespace
                require('TT/TT_Lib2') rescue raise(LoadError,'TT_Lib2')
                require('TT/TT_GUI') rescue raise(LoadError,'TT_GUI')
              
                # the rest of the module's code
              
              # way down the bottom of the namespace block;
              rescue LoadError => e
              
                case e.message
                when 'TT_Lib2'
                  puts("LoadError; TT_Lib2 file is not present. .. blah blah blah...")
                when 'TT_GUI'
                  puts("LoadError; TT_GUI file is not present. .. blah blah blah...")
                else
                  puts("Error; #<#{e.class.name}; #{e.message}>")
                  puts e.backtrace
                end
              
              end # module
              

              I'm not here much anymore.

              1 Reply Last reply Reply Quote 0
              • T Offline
                thomthom
                last edited by 16 Feb 2012, 17:57

                @unknownuser said:

                have a separate loader.rb that checks if LIB exists and has functions required.
                if yes, require/load rest of your code, if not ...

                Really don't want to use another file. Many of my plugins are self contained in a single file - apart from that they require TT_Lib. And I don't want to split it up just for this check.

                Thomas Thomassen — SketchUp Monkey & Coding addict
                List of my plugins and link to the CookieWare fund

                1 Reply Last reply Reply Quote 0
                • T Offline
                  thomthom
                  last edited by 17 Feb 2012, 10:22

                  Found a way:

                  <span class="syntaxdefault">require </span><span class="syntaxstring">'sketchup.rb'<br /></span><span class="syntaxdefault">begin<br />  require </span><span class="syntaxstring">'TT_Lib2/core.rb'<br /></span><span class="syntaxdefault">rescue LoadError </span><span class="syntaxkeyword">=></span><span class="syntaxdefault"> e<br />  </span><span class="syntaxcomment"># meh!<br /></span><span class="syntaxdefault">end<br /><br />module MagicPlugin<br />  </span><span class="syntaxcomment"># Voodoo<br /></span><span class="syntaxdefault">end if defined</span><span class="syntaxkeyword">?(</span><span class="syntaxdefault"> TT</span><span class="syntaxkeyword">;;</span><span class="syntaxdefault">Lib </span><span class="syntaxkeyword">)<br /></span><span class="syntaxdefault"> </span>
                  

                  Thomas Thomassen — SketchUp Monkey & Coding addict
                  List of my plugins and link to the CookieWare fund

                  1 Reply Last reply Reply Quote 0
                  • D Offline
                    Dan Rathbun
                    last edited by 17 Feb 2012, 14:32

                    interesting!

                    Hmm ... I see rescue modifiers do not work with require(), for some reason ?

                    You could also do (if you did not want any module defined) ...

                    require 'sketchup.rb'
                    begin
                      require 'TT_Lib2/core.rb'
                    rescue LoadError => e
                      # meh!
                    else
                      module MagicPlugin
                        # Voodoo
                      end
                    end# begin
                     
                    

                    I'm not here much anymore.

                    1 Reply Last reply Reply Quote 0
                    • T Offline
                      thomthom
                      last edited by 17 Feb 2012, 14:48

                      @dan rathbun said:

                      Hmm ... I see rescue modifiers do not work with require(), for some reason ?

                      What you mean? What modifiers?

                      Thomas Thomassen — SketchUp Monkey & Coding addict
                      List of my plugins and link to the CookieWare fund

                      1 Reply Last reply Reply Quote 0
                      • T Offline
                        tbd
                        last edited by 17 Feb 2012, 15:41

                        statement modifiers = conditional statements onto the end of a normal statement

                        ` name = first_name + last_name rescue "John Doe"

                        John Doe # if first_name and last_name are not defined`

                        SketchUp Ruby Consultant | Podium 1.x developer
                        http://plugins.ro

                        1 Reply Last reply Reply Quote 0
                        • D Offline
                          Dan Rathbun
                          last edited by 17 Feb 2012, 15:42

                          @thomthom said:

                          @dan rathbun said:

                          Hmm ... I see rescue modifiers do not work with require(), for some reason ?

                          What you mean? What modifiers?

                          The conditional keywords if and unless can be used in block position:
                          [ if| unless] ( expression)
                          statements
                          end

                          or modifier position:
                          statement [ if| unless] ( expression)

                          **rescue** can also be used in modifier poistion, but ... my attempt at this:
                          require('booboo.rb') rescue nil
                          ... does NOT trap the LoadError (because LoadError < ScriptError < Exception, and rescue only traps RuntimeError and subclasses by default.)

                          For a one-liner, we must use semi-colons:
                          begin require('booboo.rb'); rescue Exception; nil; end

                          I'm not here much anymore.

                          1 Reply Last reply Reply Quote 0
                          • 1 / 1
                          1 / 1
                          • First post
                            12/14
                            Last post
                          Buy SketchPlus
                          Buy SUbD
                          Buy WrapR
                          Buy eBook
                          Buy Modelur
                          Buy Vertex Tools
                          Buy SketchCuisine
                          Buy FormFonts

                          Advertisement