such 0.0.0 → 0.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/README.rdoc +6 -0
- data/lib/such.rb +2 -0
- data/lib/such/part.rb +29 -0
- data/lib/such/parts.rb +17 -0
- data/lib/such/thing.rb +7 -2
- data/lib/such/version.rb +1 -1
- metadata +4 -2
    
        checksums.yaml
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 2 | 
             
            SHA1:
         | 
| 3 | 
            -
              metadata.gz:  | 
| 4 | 
            -
              data.tar.gz:  | 
| 3 | 
            +
              metadata.gz: 273d09f4d688a045d6a70dd875eb512b2241de79
         | 
| 4 | 
            +
              data.tar.gz: 09d23e4dfb1159e745dfe4a36df55de114e44e90
         | 
| 5 5 | 
             
            SHA512:
         | 
| 6 | 
            -
              metadata.gz:  | 
| 7 | 
            -
              data.tar.gz:  | 
| 6 | 
            +
              metadata.gz: eb329b8288a37f2a788fd9992e0235b2b261e305f1f9320413af205b602ec00fb8d52fdf2dd52969ed604154849272eeb79965b0b3426e0c656874314cd08a4d
         | 
| 7 | 
            +
              data.tar.gz: 643ef446c8492324a1863c86ad4ad0724926d32370ec3af73e60b675131233e03dcaebd9ebd854a12343a19195c513683f62c4ba1c491b284aaf9e60b2346774
         | 
    
        data/README.rdoc
    CHANGED
    
    | @@ -75,6 +75,12 @@ ZetCode.com[http://zetcode.com/gui/rubygtk/]. | |
| 75 75 |  | 
| 76 76 | 
             
              $ sudo gem install such
         | 
| 77 77 |  | 
| 78 | 
            +
            == But wait!  One more thing:
         | 
| 79 | 
            +
             | 
| 80 | 
            +
            See link:examples/such_parts_demo in the examples directory
         | 
| 81 | 
            +
            and link:test/tc_part for hints on how to use the much poweful
         | 
| 82 | 
            +
            Such::Part module link:lib/such/part.rb
         | 
| 83 | 
            +
             | 
| 78 84 | 
             
            == LICENSE:
         | 
| 79 85 |  | 
| 80 86 | 
             
            (The MIT License)
         | 
    
        data/lib/such.rb
    CHANGED
    
    
    
        data/lib/such/part.rb
    ADDED
    
    | @@ -0,0 +1,29 @@ | |
| 1 | 
            +
            module Such
         | 
| 2 | 
            +
              module Part
         | 
| 3 | 
            +
                def initialize(*parameters, &block)
         | 
| 4 | 
            +
                  super(*parameters)
         | 
| 5 | 
            +
                  self.class.plugs.each do |plg|
         | 
| 6 | 
            +
                    if /^(?<sym>[^\W_]+)_(?<cls>[^\W_]+)$/=~plg
         | 
| 7 | 
            +
                      plg, sym, cls = method("#{plg}="), "#{sym}!".to_sym, Object.const_get("Such::#{cls}")
         | 
| 8 | 
            +
                      plg.call cls.new(self, sym, &block)
         | 
| 9 | 
            +
                    end
         | 
| 10 | 
            +
                  end
         | 
| 11 | 
            +
                end
         | 
| 12 | 
            +
             | 
| 13 | 
            +
                def message(*parameters)
         | 
| 14 | 
            +
                  self.class.plugs.each{|plg| method(plg).call.message(*parameters)}
         | 
| 15 | 
            +
                end
         | 
| 16 | 
            +
             | 
| 17 | 
            +
                def method_missing(plug,*args) # assuming a plug
         | 
| 18 | 
            +
                  super unless args.length==0 and plug=~/^[^\W_]+_[^\W_]+$/
         | 
| 19 | 
            +
                  obj = nil
         | 
| 20 | 
            +
                  self.class.plugs.each do |plg|
         | 
| 21 | 
            +
                    plug = method(plg).call
         | 
| 22 | 
            +
                    if plug.is_a? Such::Part
         | 
| 23 | 
            +
                      break if obj = plug.method(plg).call
         | 
| 24 | 
            +
                    end
         | 
| 25 | 
            +
                  end
         | 
| 26 | 
            +
                  return obj
         | 
| 27 | 
            +
                end
         | 
| 28 | 
            +
              end
         | 
| 29 | 
            +
            end
         | 
    
        data/lib/such/parts.rb
    ADDED
    
    | @@ -0,0 +1,17 @@ | |
| 1 | 
            +
            module Such
         | 
| 2 | 
            +
              module Parts
         | 
| 3 | 
            +
                def self.make(part, thing, *plugs)
         | 
| 4 | 
            +
                  raise "Superclass(#{thing}) must be a Such::Thing" unless Object.const_get(thing) < Such::Thing
         | 
| 5 | 
            +
                  plugs.each{|plug|
         | 
| 6 | 
            +
                    raise "Plugs must have the form key_class: #{plug}" unless plug=~/^[^\W_]+_[^\W_]+$/
         | 
| 7 | 
            +
                  }
         | 
| 8 | 
            +
                  Such.subclass part, thing,  <<-EOT
         | 
| 9 | 
            +
                    attr_accessor :#{plugs.join(', :')}
         | 
| 10 | 
            +
                    def self.plugs
         | 
| 11 | 
            +
                      [:#{plugs.join(', :')}]
         | 
| 12 | 
            +
                    end
         | 
| 13 | 
            +
                    include Such::Part
         | 
| 14 | 
            +
                  EOT
         | 
| 15 | 
            +
                end
         | 
| 16 | 
            +
              end
         | 
| 17 | 
            +
            end
         | 
    
        data/lib/such/thing.rb
    CHANGED
    
    | @@ -103,8 +103,13 @@ module Such | |
| 103 103 | 
             
                  if block
         | 
| 104 104 | 
             
                    signals.push('clicked') if block and none # TODO: GTK!?
         | 
| 105 105 | 
             
                    signals.each do |signal|
         | 
| 106 | 
            -
                       | 
| 107 | 
            -
                       | 
| 106 | 
            +
                      break if signal==''
         | 
| 107 | 
            +
                      begin
         | 
| 108 | 
            +
                        obj.signal_connect(signal){|*emits| block.call(*emits, signal)} # TODO: GTK!?
         | 
| 109 | 
            +
                        Thing.trace_signal(obj, signal) if $VERBOSE
         | 
| 110 | 
            +
                      rescue GLib::NoSignalError
         | 
| 111 | 
            +
                        warn "Warning: no \"#{signal}\" signal for #{obj.class}"
         | 
| 112 | 
            +
                      end
         | 
| 108 113 | 
             
                    end
         | 
| 109 114 | 
             
                  elsif not none
         | 
| 110 115 | 
             
                    warn "Warning: No block given for #{signals.join(',')} on #{obj.class}."
         | 
    
        data/lib/such/version.rb
    CHANGED
    
    
    
        metadata
    CHANGED
    
    | @@ -1,14 +1,14 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: such
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version: 0. | 
| 4 | 
            +
              version: 0.1.0
         | 
| 5 5 | 
             
            platform: ruby
         | 
| 6 6 | 
             
            authors:
         | 
| 7 7 | 
             
            - carlosjhr64
         | 
| 8 8 | 
             
            autorequire: 
         | 
| 9 9 | 
             
            bindir: bin
         | 
| 10 10 | 
             
            cert_chain: []
         | 
| 11 | 
            -
            date: 2014-11- | 
| 11 | 
            +
            date: 2014-11-15 00:00:00.000000000 Z
         | 
| 12 12 | 
             
            dependencies: []
         | 
| 13 13 | 
             
            description: |
         | 
| 14 14 | 
             
              Wraps Ruby's Gtk widgets with an alternate constructor
         | 
| @@ -24,6 +24,8 @@ extra_rdoc_files: | |
| 24 24 | 
             
            files:
         | 
| 25 25 | 
             
            - README.rdoc
         | 
| 26 26 | 
             
            - lib/such.rb
         | 
| 27 | 
            +
            - lib/such/part.rb
         | 
| 28 | 
            +
            - lib/such/parts.rb
         | 
| 27 29 | 
             
            - lib/such/such.rb
         | 
| 28 30 | 
             
            - lib/such/thing.rb
         | 
| 29 31 | 
             
            - lib/such/things.rb
         |