Class: Licensee::LicenseField

Inherits:
Struct
  • Object
show all
Defined in:
lib/licensee/license_field.rb

Constant Summary collapse

FIELD_REGEX =
/\[(#{Regexp.union(LicenseField.keys)})\]/.freeze

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Instance Attribute Details

#descriptionObject

Returns the value of attribute description

Returns:

  • (Object)

    the current value of description



4
5
6
# File 'lib/licensee/license_field.rb', line 4

def description
  @description
end

#nameObject Also known as: key

Returns the value of attribute name

Returns:

  • (Object)

    the current value of name



4
5
6
# File 'lib/licensee/license_field.rb', line 4

def name
  @name
end

Class Method Details

.allObject

Returns an array of all known LicenseFields



21
22
23
24
25
26
27
28
# File 'lib/licensee/license_field.rb', line 21

def all
  @all ||= begin
    path   = '../../vendor/choosealicense.com/_data/fields.yml'
    path   = File.expand_path path, __dir__
    fields = YAML.safe_load File.read(path)
    fields.map { |field| LicenseField.from_hash(field) }
  end
end

.find(key) ⇒ Object

Return a single license field

key - string representing the field’s text

Returns a LicenseField



11
12
13
# File 'lib/licensee/license_field.rb', line 11

def find(key)
  @all.find { |f| f.key == key }
end

.from_array(array) ⇒ Object

Given an array of keys, returns an array of coresponding LicenseFields



37
38
39
# File 'lib/licensee/license_field.rb', line 37

def from_array(array)
  array.map { |key| LicenseField.find(key) }
end

.from_content(content) ⇒ Object

Given a license body, returns an array of included LicneseFields



42
43
44
45
46
# File 'lib/licensee/license_field.rb', line 42

def from_content(content)
  return [] unless content

  LicenseField.from_array content.scan(FIELD_REGEX).flatten
end

.from_hash(hash) ⇒ Object

Builds a LicenseField from a hash of properties



31
32
33
34
# File 'lib/licensee/license_field.rb', line 31

def from_hash(hash)
  ordered_array = hash.values_at(*members.map(&:to_s))
  new(*ordered_array)
end

.keysObject

Returns an array of strings representing all field keys



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

def keys
  @keys ||= LicenseField.all.map(&:key)
end

Instance Method Details

#labelObject Also known as: to_s

The human-readable field name



53
54
55
# File 'lib/licensee/license_field.rb', line 53

def label
  key.sub('fullname', 'full name').capitalize
end

#raw_textObject



58
59
60
# File 'lib/licensee/license_field.rb', line 58

def raw_text
  "[#{key}]"
end