adamtanner 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 +4 -0
- data/Gemfile +4 -0
- data/README.md +27 -0
- data/Rakefile +1 -0
- data/adamtanner.gemspec +22 -0
- data/bin/adamtanner +5 -0
- data/lib/adamtanner/resume.rb +5 -0
- data/lib/adamtanner.rb +72 -0
- data/lib/block_party/dsl.rb +67 -0
- metadata +66 -0
data/.gitignore
ADDED
data/Gemfile
ADDED
data/README.md
ADDED
@@ -0,0 +1,27 @@
|
|
1
|
+
Adam Tanner
|
2
|
+
==================
|
3
|
+
|
4
|
+
This is my resume as executable Ruby code.
|
5
|
+
|
6
|
+
Installation
|
7
|
+
------------------
|
8
|
+
|
9
|
+
`gem install adamtanner`
|
10
|
+
|
11
|
+
Run `adamtanner` to have it print my resume to the console with syntax highlighting.
|
12
|
+
|
13
|
+
You can also run this from IRB:
|
14
|
+
|
15
|
+
require 'rubygems'
|
16
|
+
require 'adamtanner'
|
17
|
+
|
18
|
+
# Adam is assigned to my resume and you can drill down into it because it's just Ruby code.
|
19
|
+
Adam.name #=> "Adam Tanner"
|
20
|
+
Adam.experience.bullhorn_marketing.position #=> "Web Developer"
|
21
|
+
|
22
|
+
|
23
|
+
Future
|
24
|
+
------------------
|
25
|
+
|
26
|
+
* Extend the `adamtanner` executable to start a server and display a web version of my resume.
|
27
|
+
* Extend the `adamtanner` executable to export a PDF of my resume.
|
data/Rakefile
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
require "bundler/gem_tasks"
|
data/adamtanner.gemspec
ADDED
@@ -0,0 +1,22 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
$:.push File.expand_path("../lib", __FILE__)
|
3
|
+
require "adamtanner"
|
4
|
+
|
5
|
+
Gem::Specification.new do |s|
|
6
|
+
s.name = "adamtanner"
|
7
|
+
s.version = Adam.version
|
8
|
+
s.authors = [ "Adam Tanner" ]
|
9
|
+
s.email = [ "adam@adamtanner.org" ]
|
10
|
+
s.homepage = "http://adamtanner.org"
|
11
|
+
s.summary = %q{ Adam Tanner as a motherfuckin' Ruby gem. }
|
12
|
+
s.description = %q{ Adam Tanner as a motherfuckin' Ruby gem. }
|
13
|
+
|
14
|
+
s.files = `git ls-files`.split("\n")
|
15
|
+
s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
|
16
|
+
s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
|
17
|
+
s.require_paths = ["lib"]
|
18
|
+
|
19
|
+
# specify any dependencies here; for example:
|
20
|
+
# s.add_development_dependency "rspec"
|
21
|
+
s.add_runtime_dependency "coderay"
|
22
|
+
end
|
data/bin/adamtanner
ADDED
data/lib/adamtanner.rb
ADDED
@@ -0,0 +1,72 @@
|
|
1
|
+
require "adamtanner/resume"
|
2
|
+
|
3
|
+
Adam = Resume.new do
|
4
|
+
name "Adam Tanner"
|
5
|
+
date_of_birth Date.parse("November 30th, 1989")
|
6
|
+
version "0.0.1"
|
7
|
+
|
8
|
+
home do
|
9
|
+
street "124 Inverness Lane"
|
10
|
+
city "Winchester"
|
11
|
+
state "Kentucky"
|
12
|
+
zipcode 40391
|
13
|
+
web URI.parse("http://adamtanner.org") # Why isn't this up yet?!
|
14
|
+
github URI.parse("http://github.com/adamtanner")
|
15
|
+
twitter URI.parse("http://twitter.com/adamtanner")
|
16
|
+
end
|
17
|
+
|
18
|
+
contact do
|
19
|
+
phone "859.771.6563"
|
20
|
+
email "adam@adamtanner.org"
|
21
|
+
end
|
22
|
+
|
23
|
+
experience do
|
24
|
+
bullhorn_marketing do
|
25
|
+
company "Bullhorn Marketing"
|
26
|
+
web URI.parse("http://bullhornwill.com")
|
27
|
+
position "Web Developer"
|
28
|
+
responsibilites [
|
29
|
+
"Build awesome Ruby-based web applications using Sinatra and Rails for awesome clients.",
|
30
|
+
"Cut up and implement design mockups for brochure-style websites with chef-like mastery. (Built on Radiant CMS)",
|
31
|
+
"Build and maintain the ol' Linodes.",
|
32
|
+
"Wear the IT hat on unfortunate occasions."
|
33
|
+
]
|
34
|
+
full_time Date.parse("August 2011")..Date.today
|
35
|
+
contracting Date.parse("February 2011")..Date.parse("August 2011")
|
36
|
+
end
|
37
|
+
|
38
|
+
promptsite do
|
39
|
+
company "PromptSite"
|
40
|
+
web URI.parse("http://promptsite.com")
|
41
|
+
position "Web Developer"
|
42
|
+
responsibilities [
|
43
|
+
"Use mad front-end ninja skills to take pretty pictures and turn them into e-living, bit-breathing, websites. (On Radiant CMS, of course)",
|
44
|
+
"Work on sweet Radiant extensions for everything from RSS Feeds to Salesforce integrations.",
|
45
|
+
"Shepherd of the Linodes"
|
46
|
+
]
|
47
|
+
contracting Date.parse("February 2009")..Date.parse("June 2011")
|
48
|
+
end
|
49
|
+
|
50
|
+
rubidine do
|
51
|
+
company "Rubidine"
|
52
|
+
web URI.parse("http://rubidine.com")
|
53
|
+
position "Web Developer"
|
54
|
+
responsibilities [
|
55
|
+
"Take the MBTI and make it kick-ass with a sweet JavaScript based game using jQuery, jQuery UI,
|
56
|
+
and Sammy.js with a dash of Sinatra and DataMapper bringin' up the back for good measure.",
|
57
|
+
"Abstract out an old billing application to give it life outside of the church."
|
58
|
+
]
|
59
|
+
contracting Date.parse("June 2010")..Date.parse("August 2010")
|
60
|
+
end
|
61
|
+
|
62
|
+
fineslacks do
|
63
|
+
company "Fineslacks"
|
64
|
+
web URI.parse("http://fineslacks.com")
|
65
|
+
position "Web Developer"
|
66
|
+
responsibilities [
|
67
|
+
"A healthy dose of refactoring and re-architecting for a Rails-based CMS/hosting platform MVP."
|
68
|
+
]
|
69
|
+
contracting Date.parse("June 2010")..Date.parse("November 2010")
|
70
|
+
end
|
71
|
+
end
|
72
|
+
end
|
@@ -0,0 +1,67 @@
|
|
1
|
+
module BlockParty
|
2
|
+
class DSL
|
3
|
+
# Creates a new BlockParty::DSL instance.
|
4
|
+
#
|
5
|
+
# @yields Block to be instance_eval'd.
|
6
|
+
def initialize(&block)
|
7
|
+
self.instance_eval(&block)
|
8
|
+
end
|
9
|
+
|
10
|
+
# Dynamically builds a method for each attribute that functions as
|
11
|
+
# both a getter and a setter.
|
12
|
+
#
|
13
|
+
# @param [Symbol] attributes An array of DSL method names
|
14
|
+
# @return nil
|
15
|
+
# @example Defining several DSL methods
|
16
|
+
# dsl_accessor :name, :age, :location
|
17
|
+
#
|
18
|
+
# # Sets the @name variable
|
19
|
+
# name "Adam Tanner"
|
20
|
+
#
|
21
|
+
# # Gets the @name variable
|
22
|
+
# name #=> "Adam Tanner"
|
23
|
+
def dsl_accessor(*attributes)
|
24
|
+
attributes.each do |attribute|
|
25
|
+
unless respond_to?(attribute.to_sym)
|
26
|
+
(class << self; self; end).instance_eval do
|
27
|
+
define_method(attribute.to_sym) do |arguments = nil|
|
28
|
+
return instance_variable_set("@#{attribute}", arguments) if arguments
|
29
|
+
instance_variable_get("@#{attribute}")
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
# Dynamically builds DSL methods for methods that don't exist.
|
37
|
+
# If the method does not have a block it is a normal DSL
|
38
|
+
# method. If the method does have a block then it is a "section"
|
39
|
+
# that will contain other DSL methods.
|
40
|
+
#
|
41
|
+
# @param [Symbol] method The method that was called
|
42
|
+
# @param [Array] arguments An array of arguments passed to the method
|
43
|
+
# @yields The block the method was passed if one exists
|
44
|
+
# @example
|
45
|
+
# BlockParty::DSL.new do
|
46
|
+
# # Is caught by method_missing and creates a DSL accessor
|
47
|
+
# name "Adam Tanner"
|
48
|
+
#
|
49
|
+
# # Is caught by method_missing and creates a new BlockParty::DSL instance
|
50
|
+
# home do
|
51
|
+
# # Is caught by method_missing and creates a DSL accessor in the context
|
52
|
+
# # of the 'home' BlockParty::DSL instance
|
53
|
+
# web URI.parse("http://adamtanner.org")
|
54
|
+
# end
|
55
|
+
# end
|
56
|
+
def method_missing(method, *arguments, &block)
|
57
|
+
dsl_accessor method.to_sym
|
58
|
+
|
59
|
+
if block
|
60
|
+
dsl_block = self.class.new(&block)
|
61
|
+
send(method, dsl_block)
|
62
|
+
else
|
63
|
+
send(method, *arguments)
|
64
|
+
end
|
65
|
+
end
|
66
|
+
end
|
67
|
+
end
|
metadata
ADDED
@@ -0,0 +1,66 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: adamtanner
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.1
|
5
|
+
prerelease:
|
6
|
+
platform: ruby
|
7
|
+
authors:
|
8
|
+
- Adam Tanner
|
9
|
+
autorequire:
|
10
|
+
bindir: bin
|
11
|
+
cert_chain: []
|
12
|
+
date: 2011-10-07 00:00:00.000000000 Z
|
13
|
+
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
15
|
+
name: coderay
|
16
|
+
requirement: &70112490232940 !ruby/object:Gem::Requirement
|
17
|
+
none: false
|
18
|
+
requirements:
|
19
|
+
- - ! '>='
|
20
|
+
- !ruby/object:Gem::Version
|
21
|
+
version: '0'
|
22
|
+
type: :runtime
|
23
|
+
prerelease: false
|
24
|
+
version_requirements: *70112490232940
|
25
|
+
description: ! ' Adam Tanner as a motherfuckin'' Ruby gem. '
|
26
|
+
email:
|
27
|
+
- adam@adamtanner.org
|
28
|
+
executables:
|
29
|
+
- adamtanner
|
30
|
+
extensions: []
|
31
|
+
extra_rdoc_files: []
|
32
|
+
files:
|
33
|
+
- .gitignore
|
34
|
+
- Gemfile
|
35
|
+
- README.md
|
36
|
+
- Rakefile
|
37
|
+
- adamtanner.gemspec
|
38
|
+
- bin/adamtanner
|
39
|
+
- lib/adamtanner.rb
|
40
|
+
- lib/adamtanner/resume.rb
|
41
|
+
- lib/block_party/dsl.rb
|
42
|
+
homepage: http://adamtanner.org
|
43
|
+
licenses: []
|
44
|
+
post_install_message:
|
45
|
+
rdoc_options: []
|
46
|
+
require_paths:
|
47
|
+
- lib
|
48
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
49
|
+
none: false
|
50
|
+
requirements:
|
51
|
+
- - ! '>='
|
52
|
+
- !ruby/object:Gem::Version
|
53
|
+
version: '0'
|
54
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
55
|
+
none: false
|
56
|
+
requirements:
|
57
|
+
- - ! '>='
|
58
|
+
- !ruby/object:Gem::Version
|
59
|
+
version: '0'
|
60
|
+
requirements: []
|
61
|
+
rubyforge_project:
|
62
|
+
rubygems_version: 1.8.7
|
63
|
+
signing_key:
|
64
|
+
specification_version: 3
|
65
|
+
summary: Adam Tanner as a motherfuckin' Ruby gem.
|
66
|
+
test_files: []
|