Gemspec
The following metadata fields can be extracted from a gemspec file.
These fields are defined in the Ruby Gems specification currently at version 2.0, and are mapped according to the CodeMeta crosswalk for ruby gems.
| Software metadata category | SOMEF metadata JSON path | .gemspec metadata file field |
|---|---|---|
| authors | authors[i].result.value | gem.authors (1) |
| description | description[i].resultvalue | description (2) |
| has_package_file | has_package_file[i].result.value | URL of the filename.gemspec file |
| homepage | homepage[i].result.value | homepage (3) |
| license - value | license[i].result.value | license/licenses (4) |
| license - spdx id | license[i].result.spdx_id | license/licenses (4) spdx_id |
| license - name | license[i].result.name | llicense/licenses name (4) |
| package_id | package_id[i].result.value | name (5) |
| requirements - value | requirements[i].result.value | requirements/add_dependency/add_development_dependency name:version (6) |
| requirements - name | requirements[i].result.name | requirements/add_dependency/add_development_dependency name (6) |
| requirements - version | requirements[i].result.version | requirements/add_dependency/add_development_dependency version (6) |
| requirements - development type | requirements[i].result.development_type | add_dependency -> runtime (6) |
| requirements - development type | requirements[i].result.development_type | add_development_dependency -> dev (6) |
(1)
- Regex: r'gem\.author[s]?\s*=\s*(?P<value>"[^"]*"|\[[^\]]*\])'
- Example:
s.authors = [
"André Arko", "Samuel Giddins", "Colby Swandale", "Hiroshi Shibata"
]
s.author = "Daniel Garijo"
(2)
- Regex: r'gem\.description\s*=\s*%q{([^}]+)}|gem\.description\s*=\s*["\']([^"\']+)["\']'
(3)
- Regex: r'gem\.homepage\s*=\s*["\']([^"\']+)["\']
- Example: s.homepage = "https://bundler.io"
- Result: https://bundler.io
(4)
- Regex: r'gem\.license[s]?\s*=\s*["\']([^"\']+)["\']'
- if license with spdx_id:
name
value
spdx_id
- if not just value
- Example:
gem.license = 'MIT' - Result:
MIT
(5)
- Regex: r'gem\.name\s*=\s*["\']([^"\']+)["\']
- Example: gem.name = "bootstrap-datepicker-rails"
- Resutl: bootstrap-datepicker-rails
(5)
- Regex1: r'gem\.requirements\s*=\s*(\[.*?\])'
- Example:
spec.requirements = [
"Java Development Kit (JDK) 1.6 or newer is required.",
"The environment variable JAVA_HOME must be correctly defined."
]
- Result:
["Java Development Kit (JDK) 1.6 or newer is required.","The environment variable JAVA_HOME must be correctly defined."] - Regex2:
r'gem\.add_dependency\s*["\']([^"\']+)["\'](?:\s*,\s*["\']([^"\']+)["\'])?' - Regex3:
'gem\.add_development_dependency\s*["\']([^"\']+)["\'](?:\s*,\s*["\']([^"\']+)["\'])?' - Example:
gem.add_dependency "railties", ">= 3.0"
gem.add_development_dependency "bundler", ">= 1.0"
Result: add_depency --> type runtime; add_development_dependencyd --> type dev
[{'result': {'value': 'railties: >= 3.0', 'name': 'railties', 'version': '>= 3.0', 'type': 'Software_application', 'dependency_type': 'runtime'}, 'confidence': 1, 'technique': 'code_parser', 'source': 'https://example.org/bootstrap-datepicker-rails.gemspec'}, {'result': {'value': 'bundler: >= 1.0', 'name': 'bundler', 'version': '>= 1.0', 'type': 'Software_application', 'dependency_type': 'dev'}, 'confidence': 1, 'technique': 'code_parser', 'source': 'https://example.org/bootstrap-datepicker-rails.gemspec'}]