sketchucation logo sketchucation
    • Login
    Oops, your profile's looking a bit empty! To help us tailor your experience, please fill in key details like your SketchUp version, skill level, operating system, and more. Update and save your info on your profile page today!
    ⚠️ Important | Libfredo 15.6b introduces important bugfixes for Fredo's Extensions Update

    Stop processing rest of file?

    Scheduled Pinned Locked Moved Developers' Forum
    14 Posts 3 Posters 612 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.
    • Dan RathbunD Offline
      Dan Rathbun
      last edited by

      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
      • tbdT Offline
        tbd
        last edited by

        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
        • Dan RathbunD Offline
          Dan Rathbun
          last edited by

          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
          • Dan RathbunD Offline
            Dan Rathbun
            last edited by

            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
            • thomthomT Offline
              thomthom
              last edited by

              @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
              • thomthomT Offline
                thomthom
                last edited by

                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
                • Dan RathbunD Offline
                  Dan Rathbun
                  last edited by

                  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
                  • thomthomT Offline
                    thomthom
                    last edited by

                    @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
                    • tbdT Offline
                      tbd
                      last edited by

                      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
                      • Dan RathbunD Offline
                        Dan Rathbun
                        last edited by

                        @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
                        • First post
                          Last post
                        Buy SketchPlus
                        Buy SUbD
                        Buy WrapR
                        Buy eBook
                        Buy Modelur
                        Buy Vertex Tools
                        Buy SketchCuisine
                        Buy FormFonts

                        Advertisement