adamtanner 0.0.1
Sign up to get free protection for your applications and to get access to all the features.
- 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: []
|