jewel 0.0.1
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.
- data/.gitignore +3 -0
- data/.rvmrc +1 -0
- data/Gemfile +8 -0
- data/LICENSE.MPL2 +3 -0
- data/README.markdown +3 -0
- data/Rakefile +3 -0
- data/jewel.gemspec +7 -0
- data/lib/jewel.rb +8 -0
- data/lib/jewel/gem.rb +104 -0
- data/lib/jewel/gem/metadata.rb +86 -0
- metadata +124 -0
data/.gitignore
ADDED
data/.rvmrc
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
rvm --create 1.9.3@jewel
|
data/Gemfile
ADDED
data/LICENSE.MPL2
ADDED
data/README.markdown
ADDED
data/Rakefile
ADDED
data/jewel.gemspec
ADDED
data/lib/jewel.rb
ADDED
data/lib/jewel/gem.rb
ADDED
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
require 'jewel/gem/metadata'
|
|
2
|
+
|
|
3
|
+
module Jewel
|
|
4
|
+
|
|
5
|
+
# The centralized spot for information about a gem.
|
|
6
|
+
#
|
|
7
|
+
# @author Matheus Afonso Martins Moreira
|
|
8
|
+
# @since 0.0.1
|
|
9
|
+
class Gem
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
class << Jewel::Gem
|
|
15
|
+
|
|
16
|
+
# The gem metadata.
|
|
17
|
+
#
|
|
18
|
+
# @return [Jewel::Gem::Metadata] this gem's metadata
|
|
19
|
+
def metadata
|
|
20
|
+
@metadata ||= Jewel::Gem::Metadata.new
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
# Forwards everything to this Gem's metadata.
|
|
24
|
+
def method_missing(method_name, *arguments, &block)
|
|
25
|
+
metadata.send method_name, *arguments, &block
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
# Sets the name of the gem.
|
|
29
|
+
#
|
|
30
|
+
# @param [String, Symbol, #to_s] name the name of the library
|
|
31
|
+
# @return [String]
|
|
32
|
+
def name!(name = nil)
|
|
33
|
+
arguments = [ name ].compact.map &:to_s
|
|
34
|
+
metadata.send :name, *arguments
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
# Adds a runtime dependency.
|
|
38
|
+
#
|
|
39
|
+
# If called within a {development} context, a development dependency will be
|
|
40
|
+
# added instead.
|
|
41
|
+
#
|
|
42
|
+
# @param [String, Symbol] gem the name of the gem
|
|
43
|
+
# @param [String] version the version of the gem
|
|
44
|
+
def depend_on(gem, version = nil)
|
|
45
|
+
metadata.send(if development?
|
|
46
|
+
:development_dependencies
|
|
47
|
+
else :dependencies end).merge! gem => version
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
# Executes the given block within a development context, turning runtime
|
|
51
|
+
# dependencies into development dependencies.
|
|
52
|
+
#
|
|
53
|
+
# @yield nothing
|
|
54
|
+
# @see depend_on
|
|
55
|
+
def development(&block)
|
|
56
|
+
@development = true
|
|
57
|
+
instance_eval &block
|
|
58
|
+
ensure
|
|
59
|
+
@development = false
|
|
60
|
+
end
|
|
61
|
+
|
|
62
|
+
# Returns this gem's specification.
|
|
63
|
+
#
|
|
64
|
+
# @return [Gem::Specification] the gem specification
|
|
65
|
+
# @see Jewel::Gem::Metadata.to_spec
|
|
66
|
+
def spec
|
|
67
|
+
metadata.to_spec
|
|
68
|
+
end
|
|
69
|
+
|
|
70
|
+
alias gemspec spec
|
|
71
|
+
alias to_spec spec
|
|
72
|
+
|
|
73
|
+
private
|
|
74
|
+
|
|
75
|
+
# Whether we are in a development context.
|
|
76
|
+
#
|
|
77
|
+
# @return [true, false] whether development mode is enabled
|
|
78
|
+
# @see development
|
|
79
|
+
def development?
|
|
80
|
+
!!@development
|
|
81
|
+
end
|
|
82
|
+
|
|
83
|
+
end
|
|
84
|
+
|
|
85
|
+
class Jewel::Gem
|
|
86
|
+
|
|
87
|
+
name! 'jewel'
|
|
88
|
+
summary 'Easy access to Gem metadata'
|
|
89
|
+
version '0.0.1'
|
|
90
|
+
homepage 'https://github.com/matheusmoreira/jewel'
|
|
91
|
+
|
|
92
|
+
author 'Matheus Afonso Martins Moreira'
|
|
93
|
+
email 'matheus.a.m.moreira@gmail.com'
|
|
94
|
+
|
|
95
|
+
files `git ls-files`.split "\n"
|
|
96
|
+
|
|
97
|
+
development do
|
|
98
|
+
depend_on :bundler
|
|
99
|
+
depend_on :redcarpet # yard uses it for markdown formatting
|
|
100
|
+
depend_on :rookie
|
|
101
|
+
depend_on :yard
|
|
102
|
+
end
|
|
103
|
+
|
|
104
|
+
end
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
module Jewel
|
|
2
|
+
class Gem
|
|
3
|
+
|
|
4
|
+
# Stores Ruby gem metadata.
|
|
5
|
+
#
|
|
6
|
+
# @author Matheus Afonso Martins Moreira
|
|
7
|
+
# @since 0.0.1
|
|
8
|
+
class Metadata
|
|
9
|
+
|
|
10
|
+
# Creates a new, empty set of gem metadata.
|
|
11
|
+
#
|
|
12
|
+
# If given a block, it will be evaluated in the context of the new
|
|
13
|
+
# instance.
|
|
14
|
+
#
|
|
15
|
+
# @param [Proc] block the initializer block
|
|
16
|
+
# @since 0.0.1
|
|
17
|
+
def initialize(&block)
|
|
18
|
+
instance_eval &block unless block.nil?
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
# Associates the name of the missing method with the given arguments.
|
|
22
|
+
#
|
|
23
|
+
# @since 0.0.1
|
|
24
|
+
def method_missing(method_name, *arguments, &block)
|
|
25
|
+
method = method_name.to_s.gsub(/[=?!\z]/ix, '').strip.intern
|
|
26
|
+
count = arguments.count
|
|
27
|
+
return stored_attributes[method] if count.zero?
|
|
28
|
+
value = count == 1 ? arguments.first : arguments
|
|
29
|
+
stored_attributes[method] = value
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
# This gem's runtime dependencies.
|
|
33
|
+
#
|
|
34
|
+
# @return [Hash] name => version pairs
|
|
35
|
+
# @since 0.0.1
|
|
36
|
+
def dependencies
|
|
37
|
+
@dependencies ||= {}
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
# This gem's development dependencies.
|
|
41
|
+
#
|
|
42
|
+
# @return [Hash] name => version pairs
|
|
43
|
+
# @since 0.0.1
|
|
44
|
+
def development_dependencies
|
|
45
|
+
@development_dependencies ||= {}
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
# Use the stored information to generate a Gem::Specification.
|
|
49
|
+
#
|
|
50
|
+
# @return [Gem::Specification] the specification
|
|
51
|
+
# @since 0.0.1
|
|
52
|
+
def to_spec
|
|
53
|
+
::Gem::Specification.new do |gem_specification|
|
|
54
|
+
|
|
55
|
+
# Set all attributes
|
|
56
|
+
stored_attributes.keys.each do |key|
|
|
57
|
+
writer = '='.prepend key.to_s
|
|
58
|
+
gem_specification.send writer, stored_attributes[key] if gem_specification.respond_to? writer
|
|
59
|
+
end
|
|
60
|
+
|
|
61
|
+
# Add the dependencies
|
|
62
|
+
{
|
|
63
|
+
:add_runtime_dependency => dependencies,
|
|
64
|
+
:add_development_dependency => development_dependencies
|
|
65
|
+
}.each do |method_name, dependencies|
|
|
66
|
+
dependencies.each do |gem_name, version|
|
|
67
|
+
gem_specification.send method_name.intern, gem_name.to_s, version
|
|
68
|
+
end
|
|
69
|
+
end
|
|
70
|
+
end
|
|
71
|
+
end
|
|
72
|
+
|
|
73
|
+
private
|
|
74
|
+
|
|
75
|
+
# The stored gem attributes.
|
|
76
|
+
#
|
|
77
|
+
# @return [Hash] hash holding information about the gem
|
|
78
|
+
# @since 0.0.1
|
|
79
|
+
def stored_attributes
|
|
80
|
+
@stored_attributes ||= {}
|
|
81
|
+
end
|
|
82
|
+
|
|
83
|
+
end
|
|
84
|
+
|
|
85
|
+
end
|
|
86
|
+
end
|
metadata
ADDED
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
|
2
|
+
name: jewel
|
|
3
|
+
version: !ruby/object:Gem::Version
|
|
4
|
+
version: 0.0.1
|
|
5
|
+
prerelease:
|
|
6
|
+
platform: ruby
|
|
7
|
+
authors:
|
|
8
|
+
- Matheus Afonso Martins Moreira
|
|
9
|
+
autorequire:
|
|
10
|
+
bindir: bin
|
|
11
|
+
cert_chain: []
|
|
12
|
+
date: 2012-06-05 00:00:00.000000000 Z
|
|
13
|
+
dependencies:
|
|
14
|
+
- !ruby/object:Gem::Dependency
|
|
15
|
+
name: bundler
|
|
16
|
+
requirement: !ruby/object:Gem::Requirement
|
|
17
|
+
none: false
|
|
18
|
+
requirements:
|
|
19
|
+
- - ! '>='
|
|
20
|
+
- !ruby/object:Gem::Version
|
|
21
|
+
version: '0'
|
|
22
|
+
type: :development
|
|
23
|
+
prerelease: false
|
|
24
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
25
|
+
none: false
|
|
26
|
+
requirements:
|
|
27
|
+
- - ! '>='
|
|
28
|
+
- !ruby/object:Gem::Version
|
|
29
|
+
version: '0'
|
|
30
|
+
- !ruby/object:Gem::Dependency
|
|
31
|
+
name: redcarpet
|
|
32
|
+
requirement: !ruby/object:Gem::Requirement
|
|
33
|
+
none: false
|
|
34
|
+
requirements:
|
|
35
|
+
- - ! '>='
|
|
36
|
+
- !ruby/object:Gem::Version
|
|
37
|
+
version: '0'
|
|
38
|
+
type: :development
|
|
39
|
+
prerelease: false
|
|
40
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
41
|
+
none: false
|
|
42
|
+
requirements:
|
|
43
|
+
- - ! '>='
|
|
44
|
+
- !ruby/object:Gem::Version
|
|
45
|
+
version: '0'
|
|
46
|
+
- !ruby/object:Gem::Dependency
|
|
47
|
+
name: rookie
|
|
48
|
+
requirement: !ruby/object:Gem::Requirement
|
|
49
|
+
none: false
|
|
50
|
+
requirements:
|
|
51
|
+
- - ! '>='
|
|
52
|
+
- !ruby/object:Gem::Version
|
|
53
|
+
version: '0'
|
|
54
|
+
type: :development
|
|
55
|
+
prerelease: false
|
|
56
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
57
|
+
none: false
|
|
58
|
+
requirements:
|
|
59
|
+
- - ! '>='
|
|
60
|
+
- !ruby/object:Gem::Version
|
|
61
|
+
version: '0'
|
|
62
|
+
- !ruby/object:Gem::Dependency
|
|
63
|
+
name: yard
|
|
64
|
+
requirement: !ruby/object:Gem::Requirement
|
|
65
|
+
none: false
|
|
66
|
+
requirements:
|
|
67
|
+
- - ! '>='
|
|
68
|
+
- !ruby/object:Gem::Version
|
|
69
|
+
version: '0'
|
|
70
|
+
type: :development
|
|
71
|
+
prerelease: false
|
|
72
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
73
|
+
none: false
|
|
74
|
+
requirements:
|
|
75
|
+
- - ! '>='
|
|
76
|
+
- !ruby/object:Gem::Version
|
|
77
|
+
version: '0'
|
|
78
|
+
description:
|
|
79
|
+
email: matheus.a.m.moreira@gmail.com
|
|
80
|
+
executables: []
|
|
81
|
+
extensions: []
|
|
82
|
+
extra_rdoc_files: []
|
|
83
|
+
files:
|
|
84
|
+
- .gitignore
|
|
85
|
+
- .rvmrc
|
|
86
|
+
- Gemfile
|
|
87
|
+
- LICENSE.MPL2
|
|
88
|
+
- README.markdown
|
|
89
|
+
- Rakefile
|
|
90
|
+
- jewel.gemspec
|
|
91
|
+
- lib/jewel.rb
|
|
92
|
+
- lib/jewel/gem.rb
|
|
93
|
+
- lib/jewel/gem/metadata.rb
|
|
94
|
+
homepage: https://github.com/matheusmoreira/jewel
|
|
95
|
+
licenses: []
|
|
96
|
+
post_install_message:
|
|
97
|
+
rdoc_options: []
|
|
98
|
+
require_paths:
|
|
99
|
+
- lib
|
|
100
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
|
101
|
+
none: false
|
|
102
|
+
requirements:
|
|
103
|
+
- - ! '>='
|
|
104
|
+
- !ruby/object:Gem::Version
|
|
105
|
+
version: '0'
|
|
106
|
+
segments:
|
|
107
|
+
- 0
|
|
108
|
+
hash: 2841041591828843644
|
|
109
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
110
|
+
none: false
|
|
111
|
+
requirements:
|
|
112
|
+
- - ! '>='
|
|
113
|
+
- !ruby/object:Gem::Version
|
|
114
|
+
version: '0'
|
|
115
|
+
segments:
|
|
116
|
+
- 0
|
|
117
|
+
hash: 2841041591828843644
|
|
118
|
+
requirements: []
|
|
119
|
+
rubyforge_project:
|
|
120
|
+
rubygems_version: 1.8.24
|
|
121
|
+
signing_key:
|
|
122
|
+
specification_version: 3
|
|
123
|
+
summary: Easy access to Gem metadata
|
|
124
|
+
test_files: []
|