Class: Slapp::Package

Inherits:
Object
  • Object
show all
Includes:
Helpers
Defined in:
lib/slapp/package.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Methods included from Helpers

#convert_to_bytes

Constructor Details

#initialize(data, slackware_version) ⇒ Package

Returns a new instance of Package.



6
7
8
9
10
11
12
13
14
# File 'lib/slapp/package.rb', line 6

def initialize(data, slackware_version)
  @data = data
  @slackware_version = slackware_version

  @name_match = regex('name').match(data)
  @location_match = regex('location').match(data)
  @size_match = data.scan regex('size')
  @description_match = regex('description').match(data)
end

Instance Attribute Details

#dataObject

Returns the value of attribute data.



4
5
6
# File 'lib/slapp/package.rb', line 4

def data
  @data
end

Instance Method Details

#archObject



32
33
34
# File 'lib/slapp/package.rb', line 32

def arch
  @name_match[5]
end

#buildObject



36
37
38
# File 'lib/slapp/package.rb', line 36

def build
  @name_match[6]
end

#descriptionObject



58
59
60
61
62
63
# File 'lib/slapp/package.rb', line 58

def description
  original_description
    .gsub(/(\S)\n(\S)/, '\1 \2')
    .gsub(/\n\n\s/, "\n\n")
    .strip
end

#file_nameObject



20
21
22
# File 'lib/slapp/package.rb', line 20

def file_name
  @name_match[2]
end

#locationObject



40
41
42
# File 'lib/slapp/package.rb', line 40

def location
  @location_match[1]
end

#nameObject



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

def name
  @name_match[3]
end

#original_descriptionObject



65
66
67
68
69
70
71
72
73
74
75
76
# File 'lib/slapp/package.rb', line 65

def original_description
  if name == 'aalib'
    parsed_description.split("\n").map { |line|
      line[0..34].strip
    }.join("\n").strip
  else
    parsed_description
      .gsub(/\n\n /, "\n\n")
      .gsub(/\n /, "\n")
      .strip
  end
end

#package_nameObject



24
25
26
# File 'lib/slapp/package.rb', line 24

def package_name
  @name_match[1]
end

#pathObject



44
45
46
47
48
# File 'lib/slapp/package.rb', line 44

def path
  File.join "/slackware/slackware#{"64" if x86_64?}-#{@slackware_version}",
            location,
            package_name
end

#size_compressedObject



54
55
56
# File 'lib/slapp/package.rb', line 54

def size_compressed
  convert_to_bytes @size_match.flatten.first
end

#size_uncompressedObject



50
51
52
# File 'lib/slapp/package.rb', line 50

def size_uncompressed
  convert_to_bytes @size_match.flatten.last
end

#summaryObject



78
79
80
81
82
# File 'lib/slapp/package.rb', line 78

def summary
  parsed_description
    .slice(/^(.+)\n/)
    .strip
end

#to_hashObject



84
85
86
87
88
89
# File 'lib/slapp/package.rb', line 84

def to_hash
  methods = [:name, :file_name, :package_name, :version, :arch, :build, :location, :path, :size_uncompressed, :size_compressed, :description, :original_description, :summary]
  methods.each_with_object({}) { |m, hash|
    hash[m] = self.send(m)
  }
end

#versionObject



28
29
30
# File 'lib/slapp/package.rb', line 28

def version
  @name_match[4]
end