Class: GemItem

Inherits:
Object
  • Object
show all
Defined in:
lib/gemitem.rb

Overview


gemItem is created from gem command output in command line

and used for inserting item to Qt::TableWidget.

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(pkg_and_ver, ver = nil) ⇒ GemItem

Returns a new instance of GemItem.



19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
# File 'lib/gemitem.rb', line 19

def initialize(pkg_and_ver, ver=nil)
    if ver.nil?
        pkg, ver = pkg_and_ver.split(/ /, 2)
        ver.tr!('()', '')
        ver.strip!
    else
        pkg = pkg_and_ver
    end
    @package = pkg
    @version = ver
    @author = ''
    @rubyforge = ''
    @homepage = ''
    @platform = ''
    @summary = ''
    @spec = nil
    @downloads = 0
end

Instance Attribute Details

#authorObject Also known as: authors

Returns the value of attribute author.



15
16
17
# File 'lib/gemitem.rb', line 15

def author
  @author
end

#downloadsObject

Returns the value of attribute downloads.



16
17
18
# File 'lib/gemitem.rb', line 16

def downloads
  @downloads
end

#filePathObject (readonly)

Returns the value of attribute filePath.



38
39
40
# File 'lib/gemitem.rb', line 38

def filePath
  @filePath
end

#homepageObject

Returns the value of attribute homepage.



15
16
17
# File 'lib/gemitem.rb', line 15

def homepage
  @homepage
end

#packageObject Also known as: name

Returns the value of attribute package.



15
16
17
# File 'lib/gemitem.rb', line 15

def package
  @package
end

#platformObject

Returns the value of attribute platform.



15
16
17
# File 'lib/gemitem.rb', line 15

def platform
  @platform
end

#rubyforgeObject

Returns the value of attribute rubyforge.



15
16
17
# File 'lib/gemitem.rb', line 15

def rubyforge
  @rubyforge
end

#specObject

Returns the value of attribute spec.



16
17
18
# File 'lib/gemitem.rb', line 16

def spec
  @spec
end

#statusObject

Returns the value of attribute status.



16
17
18
# File 'lib/gemitem.rb', line 16

def status
  @status
end

#summaryObject

Returns the value of attribute summary.



16
17
18
# File 'lib/gemitem.rb', line 16

def summary
  @summary
end

#versionObject

Returns the value of attribute version.



15
16
17
# File 'lib/gemitem.rb', line 15

def version
  @version
end

Class Method Details

.getGemfromPath(path) ⇒ Object



85
86
87
88
89
90
# File 'lib/gemitem.rb', line 85

def self.getGemfromPath(path)
    res = %x{ gem specification #{path} -b  --marshal }
    return nil if res.empty?
    spec = Marshal.load(res)
    GemItem::parseGemSpec(spec)
end

.parseGemSpec(spec) ⇒ Object



76
77
78
79
80
81
82
83
# File 'lib/gemitem.rb', line 76

def self.parseGemSpec(spec)
    gem = self.new(spec.name, spec.version.to_s)
    gem.author = spec.authors || ''
    gem.homepage = spec.homepage || ''
    gem.summary = spec.summary || ''
    gem.spec = spec
    gem
end

.parseHashGem(hGem) ⇒ Object



67
68
69
70
71
72
73
74
# File 'lib/gemitem.rb', line 67

def self.parseHashGem(hGem)
    gem = self.new(hGem['name'], hGem['version'].to_s)
    gem.author = hGem['authors']
    gem.homepage = hGem['homepage_uri']
    gem.downloads = hGem['downloads']
    gem.summary = hGem['info']
    gem
end

Instance Method Details

#addLocalPath(filePath) ⇒ Object



39
40
41
# File 'lib/gemitem.rb', line 39

def addLocalPath(filePath)
    @filePath = filePath
end

#availableVersionsObject

available versions at remote server.



49
50
51
52
53
54
55
56
57
58
59
60
# File 'lib/gemitem.rb', line 49

def availableVersions
    return @versions if instance_variable_defined? :@versions

    res = %x{ gem list #{name} -a -r }
    res =~ /#{Regexp.escape(name)}\s+\(([^\)]+)\)/
    res = $1.split(/,\s+/).map { |v| v.split(/ /).first.strip }
    if res then
        @versions = res
    else
        @versions = nil
    end
end

#installedLocal?Boolean

Returns:

  • (Boolean)


62
63
64
65
# File 'lib/gemitem.rb', line 62

def installedLocal?
    res = %x{ gem query -l -d -n '^#{@package}$' }
    res =~ /#{@package}/ and res =~ %r? /home/?
end

#nowVersionObject

return versoin knowing newest, not latest.



44
45
46
# File 'lib/gemitem.rb', line 44

def nowVersion
    version.split(/,/, 2).first
end